JP3845021B2 - Semiconductor circuit control device and semiconductor circuit control program - Google Patents

Semiconductor circuit control device and semiconductor circuit control program Download PDF

Info

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
Application number
JP2002006729A
Other languages
Japanese (ja)
Other versions
JP2003208311A (en
Inventor
優年 関根
晴記 今中
健慈 工藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Japan Science and Technology Agency
National Institute of Japan Science and Technology Agency
Original Assignee
Japan Science and Technology Agency
National Institute of Japan Science and Technology Agency
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Japan Science and Technology Agency, National Institute of Japan Science and Technology Agency filed Critical Japan Science and Technology Agency
Priority to JP2002006729A priority Critical patent/JP3845021B2/en
Publication of JP2003208311A publication Critical patent/JP2003208311A/en
Application granted granted Critical
Publication of JP3845021B2 publication Critical patent/JP3845021B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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 related applications 101, 102, and 103 require device drivers 111, 112, and 113, respectively. In this case, according to the conventional technique, the OS 120 incorporates the device drivers 111, 112, and 113 of all related applications 101 to 103 at the time of starting the system.
[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 CPU 11, a memory 12 that is an actual memory space, and a PLD 13 that is a virtual circuit space. The application (application program) 1 includes a hardware object 6 including a circuit that realizes optimum performance in addition to an object realized by software. The computer that executes the application 1 arranges the software program part of the application on the memory space 12 constituted by memory elements, and is connected to the CPU 11 that executes the software by a system bus. At the same time, a standard bus connecting a plurality of PLDs 13 is connected to the CPU 11. The PLD 13 is an actual hardware component into which the hardware net 16 of the circuit portion is written when an application is activated and the hardware object 6 is activated during operation. A circuit space is constituted by a large number of LSIs in the same manner as the memory elements. When the application 1 is activated, the application 1 is first arranged in the memory 12. When the processing of the program proceeds and a constructor statement that generates a hardware object (hwObject) 6 is executed, the hardware object 6 is arranged across the memory 12 and the PLD 13 (both as a set). Here, hwObject-1 and hwObject-2 constructor statements are executed to generate two hardware objects 6. The application 1 includes hwObject-1 and hwObject-2. Corresponding to each hardware object 6, there is a hardware driver 7 and a hardware net 16. The hardware driver 7 is generated in the memory 12. On the other hand, the hardware net 16 is generated and erasable in the PLD 13 which is a virtual circuit space.
[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 hardware object 6 is transmitted from the application 1 in sequence to the hardware net 16 and a response is returned. At this time, the hardware net 16 performs a parallel operation. The application 1 instructs the hardware object 6 to execute, and does not wait for a response, and performs the next processing, for example, another hardware object 6. A process for checking whether the processing of the hardware net 16 is completed is performed, and the value of the member variable of the hardware object 6 is read. In this manner, the hardware object 6 is incorporated in a form suitable for parallel processing at the level of the application 1, and the parallelism of the circuit can be appropriately used.
[0021]
The basic operation will be described below.
First, when the application 1 is activated, the OS secures an area necessary for the execution of the application 1 so that the application 1 can exclusively use it, and passes control to the application 1. The startup / initialization program for the application 1 starts up a base part necessary for communication with the OS such as event management and message management used in the program and management within the application 1. At this time, the management control part necessary for managing the hardware object 6 is also incorporated in the application part. When a statement for generating the hardware object 6 is executed during the operation of the application, the hardware object 6 is generated including the hardware driver 7 as an IO processing unit in the memory area. At the same time, the circuit hardware net 16 is written in the PLD 13 so that the hardware object 6 can be used exclusively. The circuit data of the hardware net 16 is written in the PLD 13 by describing the operation specifications of the hardware net 16 in an operation description language and using a high-level / logic synthesis / placement / wiring tool that is a design automation tool. Circuit data can be created in advance and registered in the circuit library. Here, it can be easily considered that the hardware net 16 is written in advance, the circuit is simply activated when the hardware object 6 is generated, and the circuit writing time is shortened. Once the hardware object 6 is generated, it continues to exist until a statement for deleting the hardware object 6 is executed or the application 1 is terminated. When a statement that reads from or writes to the hardware object 6 is executed during the operation of the application 1, if it is a member variable or member function related to the hardware net 16, via the hardware driver 7. IO processing for the hardware net 16 is performed.
[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 bus 35. A bus bridge may be provided between the host processor 31 and the main memory 32 on the bus 35. As shown in the figure, most of the software programs are placed in the main memory 32 and executed by the host processor 31. Circuits for various types of control and processing are virtualized and provided as a hardware network (hwNet) in a hardware component named a hardware module 33 placed on a system bus or a standard bus. 31 is temporarily written when it becomes necessary, and is erased when it becomes unnecessary. This generation / deletion procedure is performed by the constructor and the destructor operator as in the case of the software object. The hardware module 33 is recognized as a memory-type device, and reading / writing to the hardware object 6 is performed in the same manner as an object created on the main memory 32. The hardware module 33 provides a virtual circuit space in which the hardware object 6 can be freely created as an actual component in the same manner as an object can be freely created in the memory space. Therefore, a large number of hardware modules 33 are prepared in advance so as to create a large virtual circuit space. The calculation model using the hardware object 6 treats a virtual circuit as an object and provides an interface for embedding the hardware net 16 in the application 1.
[0023]
2.2 Hardware module configuration
FIG. 4 shows a block configuration diagram of the hardware module 33.
As a basic unit constituting the reconfigurable system, a hardware module 33 which is a hardware board as shown in FIG. 4 is introduced. The hardware module 33 has, for example, a configuration in which a plurality of RC-LSIs, a standard bus interface (BI) 41, a local memory (LM) 42, a local processor (LP) 43, and an FPGA 44 are connected by a local bus. It has become. The LP 43 performs a service in the hardware module 33. With the LP 43, the hardware net 16 selects and writes an arbitrary RC-LSI using the JTAG method. The BI 41 controls communication between the HP 31 and the hardware net 16 in accordance with a hardware driver control command to be described later. The hardware module 33 itself is recognized as a memory device, and is connected to a standard bus (for example, PCI) in the same form as the memory, and is incorporated in the computer. At this time, a device driver called a hardware module driver is incorporated by the OS, and a memory area is allocated. The RC-LSIs in the large number of hardware modules 33 constitute a virtual circuit space so that the large number of memory chips constitute a uniform and flat memory space.
[0024]
By using the hardware module 33 as shown in FIG. 4, the output of the first hwNet-1 placed in the FPGA-1 can be transmitted to the LM- by arranging the plurality of hardware nets 16 in different FPGAs 44. 2 and read by hwNet-2 written in FPGA-2, hwNet-1 and hwNet-2 operate simultaneously and can perform pipeline processing. Furthermore, the process can be repeated by returning the output of the hardware net 16 at the final stage to hwNet-1. Moreover, the burden on the host processor 31 can be reduced by LP. That is, the hardware net 16 written to the FPGA 44 with high use frequency can be written by sending a write command to the LP 43 through the BI 41.
[0025]
2.3 CPU configuration
FIG. 5 shows a hierarchical configuration diagram of the CPU.
The CPU 31 includes an application 1, an object manager 2, a hardware module driver 3, an OS 4, and a bus 5. In this example, an example including three applications 1 is shown, but an appropriate number of applications can be provided. Each application 1 includes a set of one or a plurality of hardware objects 6, a hardware driver 7, and an interface 8 that controls input / output between the application 1 and the hardware driver 7.
[0026]
Each hardware driver 7 shown in the figure is defined for each hardware net 16 and controls input / output operations of the hardware net 16. The hardware driver 7 includes, for example, hwNet terminal information, hwNet control information such as write, read, enable, output enable, hwObject number, hwNet number, hwModule number, assigned PLD number, hwNet assigned terminal number, Communication control information such as local memory allocation address, local memory allocation area size, hwNet status, hwNet instruction, hwNet communication area address in main memory, hwNet communication area size, hwNet communication area current address, etc. is incorporated. These pieces of information are stored in the hardware net library together with the hardware net circuit information. When the hardware object 6 is generated and the hardware net 16 is loaded, the hardware driver 7 is generated as a part of the hardware object 6 by obtaining the hwModule number, hwNet number, PLD number, etc. The
[0027]
When the hardware module 33 is incorporated in the computer, the hardware module driver 3 shown in the figure is permanently registered as a device driver in the OS 4 based on the attached device information. The hardware module driver 3 controls communication with the hardware module 33 connected to the computer bus. For example, when the PCI bus 5 is used as a standard bus, PCI device information and the like are allocated from the OS. Whenever the computer is started up, the hardware module driver 3 is incorporated in advance in the OS.
On the other hand, contrary to the hardware module driver 3, the hardware driver 7 of the hardware object 6 is incorporated into the hardware module driver 3 only when the hardware net 16 exists. The OS 4 does not sense the hardware driver 7. On the other hand, the hardware object 6 side regards the hardware driver 7 as a device driver incorporated in the OS and accesses the hardware net 16. At this time, it is not necessary to consider which hardware module 33 is accessed.
[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 hardware module driver 3 is always incorporated, the stability of the system can be guaranteed. it can. On the other hand, since the hardware driver 7 is assigned only when necessary from the application 1 side, the degree of freedom to use the hardware net 16 is greatly increased.
[0029]
FIG. 6 is a flowchart (1) of the host processor.
In the HP 31, first, when the OS starts up (S101), the OS incorporates the hardware module driver 3 when using the hardware object 6 or at an appropriate time before (S103). When the application 1 is activated, the application 1 generates a hardware object 6 related to the application (subroutine execution) (S105). When the hardware object 6 is generated, the hardware object 6 issues a request to the object manager 2 (S107). The object manager 2 incorporates the hardware driver 7 corresponding to the hardware object 6 (S109).
[0030]
FIG. 7 is a flowchart (2) of the host processor.
Next, in the HP 31, when the application 1 is executed, the application 1 calls a member function (S201). Data and instructions related to the member function are sent from the I / F 8 corresponding to the hardware object 6 to the hardware driver 7 (S203). The hardware driver 7 receives this data and instruction, and sets data in the hardware module driver 3 (S205). The hardware module driver 3 transmits a data signal for using the hardware net 16 to the bus according to the set data (S207).
FIG. 8 is a flowchart of the hardware module.
The hardware module 33 receives the data transmitted by the HP 31 via the bus 35, and the PCI-bus I / F 41 sends the received data to the associated hardware net 16 under the control of the local processor 43 (S301). . The hardware net 16 executes a predetermined process related to the member function according to the received data (S303). The PCI-bus I / F 41 transmits the processing result to the bus 35 under the control of the local processor 43 (S305).
FIG. 9 is a flowchart (3) of the host processor.
Next, in the HP 31, the hardware driver 7 receives the processing result of the member function executed on the hardware net 16 of the hardware module 33 via the bus 31 via the bus 35 (S401). . The object manager 2 sends the processing result to the hardware object 6 via the I / F 7, and the hardware object 6 sets a value in the member variable (S403). The application 1 executes a predetermined process by using the hardware object 6 in which the member variable is set (S405).
[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 hardware net 16 as the hardware object 6 in the sequential processing.
[0032]
3.1 Basic class
The base class hwObject_base_class is an abstract class that includes the virtual circuit hardware net 16 in addition to member variables and member functions as shown below. All hardware objects 6 are derived from this hwObject_base_class, including the hardware objects 6 in the library. The main structure of hwObject_base_class consists of the hwNet name corresponding to the circuit part of the hardware object 6, the member variable port corresponding to the IO of the hwNet, the local variable localint in which the area is secured in the LM, the generation (constructor) and the destruction (destructor) The operator contains IO instructions for the hardware net that are executed in response to accesses to this object's port from other objects.
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 LM 42 of the hardware module 33 and loads (unloads) the virtual circuit in addition to securing (deleting) the memory area of the MM 32. In the hwObject_base_class, the reading / writing of the member variable of the hardware object 6 and the reading of the member function are the same as those of the normal software object. When an event-driven or thread object type object is used, a new hardware object 6 can be defined by inheriting multiple objects.
[0037]
As will be described later, the hardware net 16 is described in advance in HDL, generates a bit image, and registers it in the circuit library. The hardware net 16 specified by hwNet-name is loaded into the RC-LSI when the hardware object 6 is generated. All hardware nets 16 are controlled by a common control method, and the control port is declared in hwObject_base_class. The hardware object 6 secures an input / output data area, an instruction area, and a state area in the MM 32 and the LM 42. The hardware net 16 constantly monitors the LM instruction area and executes instructions. As described above, the hardware object 6 encapsulates spatially separated parts from the MM unit, the LM unit, and the hardware net 16.
[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 free hardware module 33 is searched, a memory area is secured in the MM 32 and the LM 42, and predetermined state variables are loaded into the RC-LSI. As long as hwObj2 is not deleted by the delete operator, the memory area and the corresponding hwNet2 remain reserved. Note that when a part of a hardware object created temporarily is exited from the funcX () function, the object is deleted by the destructor, the memory area in the MM32 and the LM42 is released, and the hardware network 16 is also unloaded. In (d) in the figure, x is substituted for i_1 of hwObj2. This process corresponds to step S205 in the flowchart described above. In (e) in the figure, the exec function of hwObj2 is executed. This process similarly corresponds to step S207. Thereafter, the operation state of hwObj2 is checked by the check () function shown in FIG. That is, it is checked whether or not data returned from the hardware network has been received, and data transmission / reception control with the hardware network can be performed with an existing control statement. This process corresponds to step S401 in the flowchart described above. Next, when the state becomes “false”, the “while” statement is exited and the output of hwObj2 is substituted for y. This value y is used by the application 1. When an object member variable or member function is accessed as shown in (d), data is sent to the corresponding address. This address is normally decoded (decoded) in advance by a compiler.
[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 hardware object manager 2 is implemented in the application 1. The hardware object manager 2 manages writing / deletion of the hardware net 16 to / from the virtual space configured by the RC-LSI via the hardware manager 64 when the hardware object 6 is generated / erased. I do. The hardware module 33 device number, RC-LSI number, RC-LSI pin number, hwNet number in the RC-LSI, LM memory address and area actually assigned to the hardware object 6 Information such as size and management area is set and managed based on information obtained from the OS. The event management unit related to the hardware object 6 is implemented in the hardware object manager 2. The event processing function refers to the management table of the hardware object 6 and the hardware object manager 2 and communicates with the hardware net 16 in the RC-LSI via the LM 42. In the control of the hardware net 16 in the RC-LSI, the control unit of the hardware module 33 performs arbitration by the priority method, and the hardware network 16 is controlled via the RC-LSI control pin according to the execution flag of the management area. 16 is started. The control circuit in the RC-LSI allocates RC-LSI resources to the hardware net 16 according to the assigned hwNet number. Communication between objects is performed by data transfer between MM and LM by HP as a single processor system.
[0041]
4.2 Hardware Management
In order to dynamically connect and operate the hardware net 16 on the standard bus, the hardware module driver 3 is incorporated into the device management unit of the OS 4 when the OS 4 is started up. The hardware manager (hwManager) 64 dynamically provides a hardware driver 7 which is a device driver of the hardware net 16 on the hardware module driver 3 based on the hardware net 16 management information. To do. Since the hardware net 16 is frequently generated and deleted temporarily, the interface of the hardware object 6 with the hardware net 16 is managed at the application level. A hardware driver 7 is created and managed for each hardware object 6 as a part of the hardware object 6 of the application software. On the other hand, the hardware module 33 is managed at the OS level as a device.
[0042]
4.3 Control layer structure
FIG. 15 shows a control layer configuration diagram on the CPU side provided with a hardware manager.
The CPU 31 includes a hardware manager 9 in addition to the application 1, the object manager 2, the hardware module driver 3, the OS 4, and the bus 5 in the control hierarchy configuration diagram described above. In this example, an example including three applications 1 is shown, but an appropriate number of applications can be provided. Each application 1 has a set of one or a plurality of hardware objects 6, a hardware driver 7, and an interface 8 that controls input / output between the application 1 and the hardware driver 7.
[0043]
The hardware manager 9 directly connects the interface 8 of the hardware object 6 and the hardware driver 7, and the hardware driver 7 and the hardware module driver 3. After connecting in this way, it is possible to eliminate the calculation of the destination address and overhead without the hardware manager 9 intervening in the signal transmitted and received by the interface 8. Alternatively, a system in which the hardware manager 9 monitors and controls signal transmission / reception is also possible. The hardware manager 9 is interposed as shown in FIG. 15 in order to commonly manage a hardware net that can be shared among all applications, and is added to FIG. 5 where no sharing is performed. When sharing processing is performed, the hardware driver 7 is shared between different hardware objects 6 in the same application, or between hardware objects 6 in different applications.
[0044]
FIG. 16 shows another embodiment of the object manager.
In this example, the above-described object manager 2 is divided for each application 1 and provided with object managers 2-1 to 2-3. Each object manager 2-1 to 2-3 exchanges information with each other. This information can include information on whether or not the hardware driver is incorporated, information on the type of hardware driver, identification information, and the like. When sharing the hardware driver, the hardware manager shares the hardware driver built-in information collected by the object managers 2-1 to 2-3.
[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 hardware net 16, which is a circuit written in the above-described reconfigurable semiconductor device PLD, are connected to the internal bus. This internal bus is connected to an input / output terminal of a semiconductor device PLD that can be reconfigured in accordance with control of a desired function for controlling the circuit by the input / output selection circuit 51. When the reconfigurable semiconductor device PLD is selected, the input / output terminals of the hardware net 16 are connected to the hardware / input / output selection circuit 51 and the input / output terminals of the reconfigurable semiconductor device PLD. Connected to the bus of the module 33. In the input / output selection circuit 51, as information on the hardware net 16, the correspondence between the hwNet number, terminal information, hwNet status, allocation position, and input / output terminals of the reconfigurable semiconductor device PLD is written. When an input / output command for the hardware net 16 is sent to the reconfigurable semiconductor device PLD, the input / output selection circuit 51 compares the above information with the hardware net 16 and the reconfigurable semiconductor device. It operates as if the hardware net 16 is connected to the bus of the hardware module 33 by connecting the input / output terminals of the PLD.
[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 class hardware object 6 of the standard library is embedded in sequential object-oriented programming. Input / output of the virtual circuit hardware net 16 is performed via the hardware object 6. The hardware net 16 is operated with a driver included (encapsulated) in the hardware object 6.
(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 hardware object 6.
(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 hardware object 6 in the function, and the stack is deleted. In the event (hereinafter also including messages) driven type, transmission and reception of events are performed asynchronously. In addition, event processing is performed in parallel.
[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 hardware object 6 issues an activation signal to the virtual circuit hwNet1. In the case of proceeding sequentially, afterwards, a while loop that waits for a response from the virtual circuit hwNet1 is entered, the response is examined, and after the condition is satisfied, the next code is executed. When performing in a distributed and parallel manner, the virtual circuit hwNet2 is executed without checking the response of the virtual circuit hwNet1. After that, a control method for coding whether to issue an event for monitoring the response of hwNet1 or to continue monitoring of hwNet1 with a while statement is coded.
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 hardware module 33. FIG.
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乃至4のいずれかに記載の半導体回路制御装置。The hardware object, the semiconductor circuit control device according to still any one of claims 1 to 4 comprising an interface for controlling the input and output of information between the application and the hardware drivers. 前記ハードウェア・モジュールは、
前記ホストプロセッサとデータあるいは命令を通信するバスに対するインターフェース回路と、
再構成可能な第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の再構成可能な回路をさらに備え、
前記第1〜第Nの回路による処理結果をそれぞれ前記第1〜第のメモリを介して送受し、再構成可能な第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:
前記ハードウェア・オブジェクトを使用して作成されたアプリケーションの任意の個所において、該ハードウェア・オブジェクトに応答して、それに対応するハードウェア・モジュール内の回路を制御・生成する関数であるコンストラクタを有することを特徴とする請求項9乃至12のいずれかに記載の半導体回路制御
プログラム。
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.
JP2002006729A 2002-01-15 2002-01-15 Semiconductor circuit control device and semiconductor circuit control program Expired - Fee Related JP3845021B2 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5315517B2 (en) * 2008-07-15 2013-10-16 国立大学法人東京農工大学 Information processing apparatus and virtual circuit writing method

Cited By (1)

* Cited by examiner, † Cited by third party
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