JP2004056595A - 論理回路のインターフェース方法およびインターフェースを備えた装置 - Google Patents
論理回路のインターフェース方法およびインターフェースを備えた装置 Download PDFInfo
- Publication number
- JP2004056595A JP2004056595A JP2002213005A JP2002213005A JP2004056595A JP 2004056595 A JP2004056595 A JP 2004056595A JP 2002213005 A JP2002213005 A JP 2002213005A JP 2002213005 A JP2002213005 A JP 2002213005A JP 2004056595 A JP2004056595 A JP 2004056595A
- Authority
- JP
- Japan
- Prior art keywords
- interface
- function
- definition language
- argument
- function name
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/582—Pseudo-random number generators
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Computer And Data Communications (AREA)
- Logic Circuits (AREA)
Abstract
【課題】プログラマーがレジスタの意味や多数のレジスタ間の関連性を理解するための負担を軽減することができ、しかも、ソフトウェアオブジェクトとハードウェアオブジェクトとの扱いを統一可能とし、ソフトウェアオブジェクトとハードウェアオブジェクトの交換を容易にする。
【解決手段】インターフェース定義言語を用いてインターフェースを定義し、インターフェース定義言語はソフトウェアオブジェクトに対するインターフェース定義言語と共通部分を有すると共に機能ごとに機能名および機能に対する引数および戻り値を宣言する手段を具備し、インターフェースを実現するサーバーインターフェース回路にはインターフェース定義言語に記述された機能名を識別する入力および引数の入出力を行う手段および戻り値の出力を行う手段のうち少なくとも機能名を識別する入力を行う手段を具備した。
【選択図】 図2
【解決手段】インターフェース定義言語を用いてインターフェースを定義し、インターフェース定義言語はソフトウェアオブジェクトに対するインターフェース定義言語と共通部分を有すると共に機能ごとに機能名および機能に対する引数および戻り値を宣言する手段を具備し、インターフェースを実現するサーバーインターフェース回路にはインターフェース定義言語に記述された機能名を識別する入力および引数の入出力を行う手段および戻り値の出力を行う手段のうち少なくとも機能名を識別する入力を行う手段を具備した。
【選択図】 図2
Description
【0001】
【発明の属する技術分野】
本発明は、AND/OR/NOT等の各種ゲートやフリップフロップ等の論理演算素子により構成される論理回路のインターフェース方法およびインターフェースを備えた装置に関し、特に、ソフトウェアオブジェクトとハードウェアオブジェクト(装置)の扱いを統一可能とするものである。
【0002】
【従来の技術】
従来、マイクロプロセッサと周辺LSIとのインターフェースにおいて、状態レジスタやコマンドレジスタなどと呼ばれるレジスタを介して、状態値を読み出したり、所定の処理の実行を制御したりするインターフェース方法が用いられている。
【0003】
このため、周辺LSIを制御するプログラムを設計するプログラマーは、周辺LSIのインターフェースを理解するために、レジスタの意味や複数のレジスタ間の関連性を理解し、レジスタの設定手順に留意してプログラムを作成する必要がある。
【0004】
【発明が解決しようとする課題】
ところで、近年の周辺LSIは、その機能が複雑化しており、多数の状態レジスタやコマンドレジスタを備えている。
【0005】
従って、レジスタの意味や関連性を容易に理解することが困難となっており、プログラムの誤りを生じさせる虞があるばかりでなく、正誤検出にも時間を要するという問題が生じていた。
【0006】
また、機能が複雑化しているが故に、その機能をソフトウェア上で実現するかハードウェア上で実現するかの判断も困難となっており、これらが容易に交換可能となる仕組みが必要となっているのが実情である。
【0007】
一方、近年では、インターフェース定義言語(IDL=Interface Definition Language)によりソフトウェアオブジェクトとのインターフェースを定義して活用する手法が普及している(例えば、OMG(Object Management Group)によるCORBAのIDLや、マイクロソフト社のCOM(Component Object Model)のIDLが知られている)。
【0008】
しかしながら、これらはソフトウェアオブジェクトを対象としていて、ハードウェアオブジェクト(装置)とのインターフェースは考慮されていないという問題が生じている。
【0009】
そこで、本願出願人は、これらのインターフェース定義言語を用いてハードウェアとのインターフェースを定義することができれば、ソフトウェアとハードウェアを統一的に扱うことができ、よってソフトウェアオブジェクトとハードウェアオブジェクトを容易に交換することが可能になるなど、プログラマーの負担を著しく減少させることができ、しかも、ソフトウェアとのインターフェース方法の定義がより簡単なものとなってハードウェア設計者の負担も減少させることができるという考えに至った。
【0010】
本発明は、上述のような従来の問題に鑑みてなされたもので、周辺LSIのような論理回路により構成される装置のインターフェースを改善し、プログラマーがレジスタの意味や多数のレジスタ間の関連性を理解するための負担を軽減することができ、しかも、ソフトウェアオブジェクトとハードウェアオブジェクトとの扱いを統一可能とし得て、ソフトウェアオブジェクトとハードウェアオブジェクトの交換を容易にすることができる論理回路のインターフェース方法およびインターフェースを備えた装置を提供することを目的とする。
【0011】
【課題を解決するための手段】
その目的を達成するため、本発明の論理回路のインターフェース方法は、論理演算素子により構成される論理回路において、インターフェース定義言語を用いてインターフェースを定義し、前記インターフェース定義言語はソフトウェアオブジェクトに対するインターフェース定義言語と共通部分を有し、前記インターフェース定義言語は機能ごとに機能名および該機能に対する引数および戻り値を宣言する手段を具備し、前記インターフェースを実現するサーバーインターフェース回路には前記インターフェース定義言語に記述された前記機能名を識別する入力および引数の入出力を行う手段および戻り値の出力を行う手段のうち少なくとも前記機能名を識別する入力を行う手段を具備させることを特徴とする。
【0012】
また、本発明の論理回路のインターフェース方法は、論理演算素子により構成される論理回路において、インターフェース定義言語を用いてインターフェースを定義し、前記インターフェース定義言語はソフトウェアオブジェクトに対するインターフェース定義言語と共通部分を有し、前記インターフェース定義言語は機能ごとに機能名および該機能に対する引数および戻り値を宣言する手段を具備し、前記インターフェースを実現するクライアントインターフェース回路には前記インターフェース定義言語に記述された前記機能名を識別する出力および引数の出入力を行う手段および戻り値の入力を行う手段のうち少なくとも前記機能名を識別する出力を行う手段を具備させることを特徴とする。
【0013】
また、本発明の論理回路のインターフェース方法は、論理演算素子により構成される論理回路において、インターフェース定義言語を用いてインターフェースを定義し、前記インターフェース定義言語はソフトウェアオブジェクトに対するインターフェース定義言語と共通部分を有し、前記インターフェース定義言語は機能ごとに機能名および該機能に対する引数および戻り値を宣言する手段を具備し、前記インターフェースを実現するサーバーインターフェース回路として前記インターフェース定義言語に記述された前記機能名を識別する入力および引数の入出力を行う手段および戻り値の出力を行う手段のうち少なくとも前記機能名を識別する入力を行う手段を具備したサーバー側論理回路と、前記インターフェースを実現するクライアントインターフェース回路として前記機能名を識別する出力および引数の出入力を行う手段および戻り値の入力を行う手段のうち少なくとも前記機能名を識別する出力を行う手段を具備するクライアント側論理回路とを備え、前記サーバー側論理回路と前記クライアント側論理回路とに関し、前記機能名を識別する出力を行う手段から前記機能名を識別する入力を行う手段へのデータ転送を可能とし、且つ、前記引数を入出力する手段と前記引数を出入力する手段とが互いに備わっていれば前記引数を入出力する手段と前記引数を出入力する手段とのデータ転送を可能とし、且つ、前記戻り値を出力する手段と前記戻り値を入力する手段とが互いに備わっていれば前記戻り値を出力する手段から前記戻り値を入力する手段へのデータ転送を可能とする論理回路を合成することを可能とすることを特徴とする。
【0014】
さらに、本発明のインターフェースを備えた装置は、論理演算素子により構成される論理回路において、インターフェース定義言語を用いてインターフェースを定義し、前記インターフェース定義言語はソフトウェアオブジェクトに対するインターフェース定義言語と共通部分を有し、前記インターフェース定義言語は機能ごとに機能名および該機能に対する引数および戻り値を宣言する手段を具備し、前記インターフェースを実現するサーバーインターフェース回路には前記インターフェース定義言語に記述された前記機能名を識別する入力および引数の入出力を行う手段および戻り値の出力を行う手段のうち、少なくとも前記機能名を識別する入力を行う手段を具備することを特徴とする。
【0015】
また、本発明のインターフェースを備えた装置は、論理回路において、インターフェース定義言語を用いてインターフェースを定義し、前記インターフェース定義言語はソフトウェアオブジェクトに対するインターフェース定義言語と共通部分を有し、前記インターフェース定義言語は機能ごとに機能名および該機能に対する引数および戻り値を宣言する手段を具備し、前記インターフェースを実現するクライアントインターフェース回路には前記インターフェース定義言語に記述された前記機能名を識別する出力および引数の入出力を行う手段および戻り値の入力を行う手段のうち、少なくとも前記機能名を識別する出力を行う手段を具備することを特徴とする。
【0016】
また、前記クライアントインターフェース回路の接続端子は、前記サーバーインターフェース回路の接続端子とシステムバスとのいずれとも接続可能とし、前記サーバーインターフェース回路の接続端子へ接続した場合には前記サーバーインターフェース回路を介して装置を駆動可能とし、システムバスに接続した場合には中央処理装置は前記クライアントインターフェース内部のレジスタの値を読み書き可能とし、前期中央処理装置は前記サーバーインターフェース回路を介する装置の機能を代替することを可能とするインターフェースを具備することを特徴とする。
【0017】
【発明の実施の形態】
次に、本発明の実施の形態を図面に基づいて説明する。
【0018】
図1は、本発明のコンピュータシステムの構成図である。この図1において、1はCPU(中央処理装置)、2はメモリ、3は乱数発生装置である。このメモリ2と乱数発生装置3とはシステムバス4を介してCPU1と接続されている。また、CPU1はメモリ2上に記憶されるプログラムを解釈・処理する。
【0019】
図2は乱数発生装置3のブロック構成図である。乱数発生装置3は、IDLサーバーインターフェース部11を有する。
【0020】
このIDLサーバーインターフェース部11は、機能識別レジスタ12、引数レジスタ13、戻り値レジスタ14、状態レジスタ15を備え、外部端子16によりシステムバス4に接続される。尚、図2では、各レジスタ12〜15とシステムバス4とのデータの授受を制御する部分は省略されているが、システムバス4に含まれるアドレスバスや制御バスにより各レジスタ12〜15とのデータの受渡しが制御される。
【0021】
図3はIDLによるインターフェースの定義例の説明図である。この例は、上述したCORBAのIDLとの共通部分があり、インターフェースの名称、機能名、機能名ごとの引数および戻り値が記してある。また、図3の例では、インターフェース名をrandomGeneratorとする乱数発生装置3のインターフェースを定義したもので、乱数の種を設定する機能(機能名:setSeed)と、発生した乱数を得る機能(機能名:getRandom)が示されている。そして、setSeedには入力引数としてdouble型の種(seed)が渡されることを表している。また、getRandomは戻り値として発生した乱数をdouble型の値として返すことを表している。
【0022】
図4および図5は、図3に例示したインターフェース定義を元に、本発明によるインターフェースを備えた装置をCPU1により操作するために作成したC言語のヘッダファイルおよびプログラムの説明図である。
【0023】
このようなヘッダファイルやプログラムは、インターフェース定義から一定の規則に基づいて変換して作成できるため、通常IDLコンパイラと呼ばれるプログラムにより変換を行う。CORBAなどのIDLコンパイラはインターフェース定義を通信データに変換するCやC++などのヘッダファイルやプログラムを生成するが、ここでは乱数発生装置3のIDLサーバーインターフェース部11のレジスタ設定または参照を行うCのプログラムが生成されるよう、IDLコンパイラが構成される。なお、このような役割を果たすプログラムは、スタブあるいはプロキシなどと呼ばれる。
【0024】
図5では、インターフェース定義されたsetSeedとgetRandomに対応する関数『setSeed』と『getRandom』とが記述されている。
【0025】
本発明の方法あるいは装置は複数部の協調により達成される。図1および図2に示した構成図をもとに、これらの関数および乱数発生装置3の動作の概要を説明する。
【0026】
CPU1はメモリ2に格納されているプログラムを読み出して処理を行う。そのプログラム内で関数『setSeed』が呼び出されると、関数『setSeed』のプログラムに基づき、CPU1は機能識別の値『FID_setSeed』を乱数発生装置3の機能識別レジスタ12に書き込む。
【0027】
この定数『FID_setSeed』は図4のヘッダファイルにて定義されているもので、以下の『FID_getRandom』や『Finished』などの定数も同様である。続いてdouble型の引数『seed』を引数レジスタ13に書き込み、この関数の処理は終了する。
【0028】
乱数発生装置3のIDLサーバーインターフェース部11は、機能setSeedに対するすべての引数を受け取ったことを確認すると、直ちに動作を開始させる。この例の場合、乱数発生部17の乱数の種レジスタ18に乱数の種を格納する動作が行われる。
【0029】
次に関数『getRandom』が呼び出されると、機能識別の値『FID_getRandom』を乱数発生装置3の機能識別レジスタ12に書き込む。IDLサーバーインターフェース部11は、機能『getRandom』に引数がないことから、直ちに乱数発生部に乱数の発生をさせる。IDLサーバーインターフェース部11は乱数発生部17の乱数の発生が完了すると、それを戻り値レジスタ14に書き込む。関数『getRandom』では、戻り値レジスタ14に値が書き込まれるまで、関数『getStatus』を呼び出して状態レジスタ15の値を読み取り、その値が『Finished』となるまでwhile文により待ち続ける。以上、本発明の装置を組み込んだコンピュータシステムの全体の動作の概要を説明した。
【0030】
次に、図7のフロー図を用いて図1に示したコンピュータシステムの設計作業の流れを説明する。尚、以下のフロー図並びにその説明では、各ステップを記号「S」で省略する。
【0031】
設計作業は、最初にインターフェースを決定する(S21)。インターフェースの決定では機能をすべて挙げ、各機能ごとに機能名、引数、戻り値をそれぞれ決定する。
【0032】
次に、S21で決定したインターフェースを図3のインターフェース定義ファイルとして作成する(S22)。そして、インターフェース定義ファイルをIDLコンパイラに通してヘッダファイルとスタブを作成する(S23)。IDLコンパイラにより図4のヘッダファイルと図5のスタブが生成される。
【0033】
ここでソフトウェア設計とハードウェア設計に分かれる。
【0034】
ソフトウェア設計では、次にスタブをコンパイラーによりコンパイルしてリロケータブルオブジェクトを作成する(S24)。次に他の部分のリロケータブルオブジェクトとリンクして実行モジュールを作成し(S25)、ソフトウェアの設計作業は完了する。
【0035】
ハードウェア設計者は、図3のインターフェース定義ファイルと図4のヘッダファイルを参照しながらIDLサーバーインターフェース部11を設計する(S26)。ここで参照するインターフェース定義ファイルとヘッダファイルの参照する内容については、IDLサーバーインターフェース部11の動作の詳細とともに説明する。
【0036】
次にハードウェア設計者は、乱数発生部17の回路とIDLサーバーインターフェース部11を結合する回路を設計して(S27)、乱数発生装置3の設計作業は完了する。
【0037】
引き続き、CPU1、メモリ2、乱数発生装置3,システムバス4を接続する回路の設計作業を行い(S28)、ハードウェア設計作業は終了する。
【0038】
次に、図6のIDLサーバーインターフェース部11の動作を表すフローチャートを用いて、本発明の中心であるIDLサーバーインターフェース部11の動作を、もう一度詳しく説明する。
【0039】
IDLサーバーインターフェース部11は、機能識別レジスタ12に外部端子16を介して値が書き込まれるのを待つ(S1)。
【0040】
ここで、機能識別レジスタ12に書き込まれる値は、setSeed機能であれば、これに対応する値は、図4のヘッダファイルにおいて#defineにより定義される『FID_setSeed』の値であり、具体的な値は『1』である。また、getRandom機能であれば『FID_getRandom』であり、具体的な値は『2』である。
【0041】
機能識別レジスタ12に値が書き込まれると、状態レジスタ15の値を実行中を意味する値『Executing』に変更し(S2)、機能識別レジスタ12の内容から引数の個数を割り出す(S3)。ここで、引数の個数の割り出しは、引数個数算出部20により行われるが、引数個数算出部20には図3のインターフェース定義ファイルおよび図4のヘッダを参照して、予め機能識別と引数個数との対応関係を引数個数算出部20に記憶するように設計しておく。
【0042】
次に、引数がすべて入力されているかどうかを判定し(S4)、受け取っていない引数があれば引数レジスタ13に引数が1つ書き込まれるのを待ち(S5)、再びS4から繰り返す。もしすべての引数が入力されていれば(引数がない場合は、すべて入力されたものとみなす)、機能識別により指定された機能を開始させる(S6)。IDLサーバーインターフェース部11の設計者は、図4のヘッダファイルを参照して機能識別と対応する機能を一致させておく。
【0043】
次に、機能処理の終了を待つ(S7)。その機能の処理が終了すると、戻り値があるかどうかを判定して(S8)、戻り値があれば戻り値を戻り値レジスタ14に書き込んで(S9)、最後に状態レジスタ15の値を『Finished』に変更し、再びS1から繰り返す。
【0044】
以上の説明において、図5では、状態レジスタが『Finished』に変化するまで、whileループで待つようになっているが、状態レジスタ15の値が変化したときにCPU1へ割り込みを発生するようにして、それまでこのプログラムが待機するように変更すればCPU1の利用効率を挙げることができる。また、引数の個数やデータ型の検査を加えるなどの変更を行ってもよい。また、インターフェース定義において、すべての機能が引数を持たないのであれば、引数レジスタ13を省略し、図6で示したルーチンのS4,S5を省略することもできる。また、全ての機能が戻り値を返さないのであれば、戻り値レジスタ14および図6で示したルーチンのS8,S9を省略することもできる。また、乱数発生装置3の働きをソフトウェアによりエミュレートするように変更する場合、図5の関数『setSeed』および関数『getRandom』を置き換えればよく、ハードウェアオブジェクトを容易にソフトウェアオブジェクトに交換することが可能である。これは、本発明による方法および装置で用いるインターフェース定義言語がソフトウェアオブジェクトを対象とするインターフェース定義言語と共通部分があるために、容易に交換が可能となる。
【0045】
次に、図2に示した乱数発生装置3を利用して、モンテカルロ法により円周率を計算する円周率計算装置5の構成図を図10に示す。また、この円周率計算装置(piCalculator)のインターフェース定義を図9に示す。この円周率計算装置5を組み込んだコンピュータシステムの構成図を図8に示す。
【0046】
図10の円周率計算装置5は、IDLサーバーインターフェース部21、円周率計算部27、IDLクライアントインターフェース部31からなり、IDLサーバーインターフェース部21に接続された外部端子26はシステムバス4に接続され、IDLクライアントインターフェース部31に接続された外部端子36は乱数発生装置3の外部端子16に接続される。
【0047】
外部端子36と外部端子16の接続によって、機能識別レジスタ32から機能識別レジスタ12へのデータ転送、引数レジスタ33と引数レジスタ13とのデータ転送、戻り値レジスタ14から戻り値レジスタ34へのデータ転送が可能となり、円周率計算装置5から乱数発生装置3に対する機能の要求が可能となる。
【0048】
図8のコンピュータシステムにおいて、乱数発生装置3を使用しないように変更したコンピュータシステムの構成図が図11である。図11では、円周率計算装置5のIDLクライアントインターフェース部31に接続された外部端子36はシステムバス4に接続される。
【0049】
コンピュータシステムを図8の構成から図10の構成に変更可能とするために、円周率発生装置5のIDLクライアントインターフェース部31は、乱数発生装置3のIDLサーバーインターフェース部11を駆動可能とするとともに、CPU1から機能識別レジスタ32、引数レジスタ33、戻り値レジスタ34、状態レジスタ35を読み出しまたは書き込み可能とすることで達成される。
【0050】
この時、CPU1は、円周率発生装置5のIDLクライアントインターフェース部31から発せされる要求を監視して、機能識別に応じた機能の処理を行う必要がある。
【0051】
図12は、CPU1が行う、要求の監視、機能の処理を説明するフローチャートである。
【0052】
先ず、円周率計算装置5のIDLクライアントインターフェース部31の状態レジスタ35の値を読み出す(S31)。その値が『Requesting』であれば、機能の処理の要求があると判断し(S32)、機能識別レジスタ32の値を読み出す(S33)。
【0053】
機能識別レジスタ32の値が『FID_setSeed』であれば(S34)、引数レジスタ33の値を読み出し、乱数の種として記憶する(S35)。
【0054】
機能識別レジスタ32の値が「FID_getRandom」であれば(S36)、乱数を発生し(S37)、その乱数を戻り値レジスタ34へ書き込む(S38)。
【0055】
上述したS35、S38が終了すれば、再びS31へ戻る。このプログラムはCPU1を占有してしまうので、タスクの1つとして実装する必要がある。あるいは、状態レジスタ35の値が『Requesting』に変化したときに、CPU1に割り込みが発生するようにして、それまでS31で待機するようにすれば、CPU1の利用効率を向上することができる。
【0056】
図13、図14は図12の処理をC言語化したヘッダファイルおよびプログラムである。インターフェース定義から一定の規則に従って変換できるため、先述の図4、図5のヘッダファイル、プログラムファイルと同様にIDLコンパイラと呼ばれるプログラムを使って作成することができる。なお、このような役割を果たすプログラムは、スケルトンあるいはスタブなどと呼ばれる。
【0057】
図15は、上述のような特性を持ったIDLクライアントインターフェース部31の動作を表すフローチャートである。始めに円周率計算部27から機能要求がないかを判断し(S41)、もしあれば機能識別レジスタ32に機能要求に対応する機能識別を書き込む(S42)。ここでは、『FID_setSeed』か『FID_getRandom』のいずれかの値が書き込まれる。次に機能要求がsetSeedであるかを判断し(S43)、setSeedであれば引数が存在するので、円周率計算部27から引数を受け取り引数レジスタ33に書き込み(S44)、状態レジスタ35の値を『Requesting』へと変更する(S45)。
【0058】
ここで円周率計算装置5の外部端子36の接続先が乱数発生装置3であるか、CPU1であるかにより動作が変わる。
【0059】
接続先がCPU1であれば、CPU1は先述の図12のフローチャートで示した処理を行っており、機能識別の値が『FID_setSeed』であれば、引数はS35で読み込まれる。機能識別の値が『FID_getRandom』であれば、引数はない。S47では、すべての引数が読み込まれたかどうかを判断し(引数がない場合は、読み込まれたものと判断する)、すべて読み込まれている場合は、戻り値があるかどうか判断し(S48)、戻り値がある場合は戻り値レジスタ34に値が書き込まれるまで待つ(S49)。戻り値レジスタ34に書き込まれた値を乱数として円周率計算部27に渡す(S50)。
【0060】
以上でCPU1とのやり取りは終わって、状態レジスタ35の値を『Waiting』に変更し(S51)、再びS41から繰り返す。
【0061】
もし、S46にて、円周率計算装置5の外部端子36の接続先が乱数発生装置3であると判断された場合には、機能識別レジスタ32の内容を接続先である乱数発生装置3のIDLサーバーインターフェース部11の機能識別レジスタ12に書き込む(S52)。
【0062】
ここで乱数発生装置3は図6のフローチャートに従って動作しており、S1において機能識別レジスタ12への書き込みを検出して、S2以降の動作を行う。IDLクライアントインターフェース部31のS53以降の動作は、乱数発生装置3のIDLサーバーインターフェース部11のS4以降の動作と対応付けられている。
【0063】
次に、引数があるかどうかを判断する(S53)。機能識別の値が『FID_setSeed』であれば、引数があると判断される。引数があれば引数レジスタ33の内容を乱数発生装置3の引数レジスタ13に書き込む(S54)。
【0064】
次に、戻り値があるかどうかを判断する(S55)。機能識別の値が『FID_getRandom』であれば戻り値があると判断される。戻り値があると判断された場合、乱数発生装置3の状態レジスタ15の値が『Finished』になるまで待つ(S56)。続いて乱数発生装置3の戻り値レジスタ14の値を読み出し、戻り値レジスタ34に書き込む(S57)。そして、戻り値レジスタ34の内容を円周率計算部27に渡す(S58)。
【0065】
以上で乱数発生装置3とのやり取りは終わって、状態レジスタ35の値を『Waiting』に変更し(S51)、再びS41から繰り返す。
【0066】
ところで、上記実施の形態では、乱数発生装置3と円周率計算装置5を例に取って説明したが、乱数発生部17や、円周率計算部27を変更し、またそれにあわせてインターフェース定義(randomGenerator,piCalculator)を変更することにより、種々の装置に対応できる。
【0067】
また、上記実施の形態では、引数の型や引数の個数の照合を行っていないが、それらを行うことにより、インターフェースプログラムの誤りを厳密に検出することができる。
【0068】
さらに、上記実施の形態では、入力引数の例のみを示したが出力引数あるいは入出力引数の扱いは可能で、出力引数の場合、入力引数の場合とはデータ転送の向きが逆になる。また、本実施例ではインターフェース記述言語としてCORBAのIDLを例に説明したが、ソフトウェアオブジェクトを対象とするIDLと共通部分があり、機能名および該機能に対する引数および戻り値を宣言する手段を備えたものであればCORBAのIDLに限定されるものではない。
【0069】
また、上記実施の形態のプログラムではインスタンスオブジェクトを区別するための記述を省略して簡略化しているが、インスタンスオブジェクトを区別して取り扱う手段を備えることが望ましい。
【0070】
尚、本発明の方法及び装置は、集積回路であって外部とのインターフェースを目的とするのがもっとも効果的であるが、集積回路内部のブロック間のインターフェースあるいは複数の集積回路からなる論理回路間のインターフェースに用いてもよい。
【0071】
【発明の効果】
本発明の方法および装置によれば、ソフトウェアオブジェクトと共通部のあるインターフェース定義言語によりハードウェアとのインターフェースを定義することができるから、ソフトウェアとハードウェアを統一的に扱うことが可能になり、ソフトウェアオブジェクトとハードウェアオブジェクト(装置)を容易に交換することが可能になるなどプログラマーの負担を著しく減少させることができる。また、ソフトウェアとのインターフェース方法の定義がより簡単なものになり、ハードウェア設計者の負担を減少することができる。また、ハードウェアとソフトウェアの並行開発が容易になり、開発納期の短縮を図ることができる。ハードウェアオブジェクト同士の接続と中央処理装置への接続とを容易に変更できるので、ハードウェア処理していたものをソフトウェア処理に置き換える、あるいはその逆が容易になるなど絶大な効果を有する。
【図面の簡単な説明】
【図1】本発明のコンピュータシステムの構成図である。
【図2】乱数発生装置のブロック構成図である。
【図3】インターフェース定義言語(IDL)による乱数発生装置のインターフェース定義の説明図である。
【図4】図5のプログラムに対応するヘッダファイルの説明図である。
【図5】乱数発生装置を直接操作するためのプログラムの説明図である。
【図6】IDLサーバーインターフェース部の動作を表すフロー図である。
【図7】設計作業の流れを表すフロー図である。
【図8】円周率計算装置を組み込んだコンピュータシステムのブロック構成図である。
【図9】円周率計算装置(piCalculator)のインターフェース定義の説明図である。
【図10】円周率を計算する円周率計算装置のブロック構成図である。
【図11】乱数発生装置を使用しないように変更したコンピュータシステムのブロック構成図である。
【図12】中央処理装置が行う、要求の監視及び機能の処理に関するフロー図である。
【図13】図14のプログラムに対応するヘッダファイルの説明図である。
【図14】図12の処理をC言語化したプログラムの説明図である。
【図15】IDLクライアントインターフェース部の動作を表すフロー図である。
【符号の説明】
1 中央制御装置、2 メモリ、3 乱数発生装置、4 システムバス、5 円周率計算装置、11 (乱数発生装置の)IDLサーバーインターフェース部、12 機能識別レジスタ、13 引数レジスタ、14 戻り値レジスタ、15状態レジスタ、16 外部端子、17 乱数発生部、18 乱数の種レジスタ、19 乱数レジスタ、21 (円周率計算装置の)IDLサーバーインターフェース部、22 機能識別レジスタ、23 引数レジスタ、24 戻り値レジスタ、25 状態レジスタ、26 外部端子、27 円周率計算部、28 回数レジスタ、29 円周率レジスタ、31 IDLクライアントインターフェース部、32 機能識別レジスタ、33 引数レジスタ、34 戻り値レジスタ、35
状態レジスタ、36 外部端子。
【発明の属する技術分野】
本発明は、AND/OR/NOT等の各種ゲートやフリップフロップ等の論理演算素子により構成される論理回路のインターフェース方法およびインターフェースを備えた装置に関し、特に、ソフトウェアオブジェクトとハードウェアオブジェクト(装置)の扱いを統一可能とするものである。
【0002】
【従来の技術】
従来、マイクロプロセッサと周辺LSIとのインターフェースにおいて、状態レジスタやコマンドレジスタなどと呼ばれるレジスタを介して、状態値を読み出したり、所定の処理の実行を制御したりするインターフェース方法が用いられている。
【0003】
このため、周辺LSIを制御するプログラムを設計するプログラマーは、周辺LSIのインターフェースを理解するために、レジスタの意味や複数のレジスタ間の関連性を理解し、レジスタの設定手順に留意してプログラムを作成する必要がある。
【0004】
【発明が解決しようとする課題】
ところで、近年の周辺LSIは、その機能が複雑化しており、多数の状態レジスタやコマンドレジスタを備えている。
【0005】
従って、レジスタの意味や関連性を容易に理解することが困難となっており、プログラムの誤りを生じさせる虞があるばかりでなく、正誤検出にも時間を要するという問題が生じていた。
【0006】
また、機能が複雑化しているが故に、その機能をソフトウェア上で実現するかハードウェア上で実現するかの判断も困難となっており、これらが容易に交換可能となる仕組みが必要となっているのが実情である。
【0007】
一方、近年では、インターフェース定義言語(IDL=Interface Definition Language)によりソフトウェアオブジェクトとのインターフェースを定義して活用する手法が普及している(例えば、OMG(Object Management Group)によるCORBAのIDLや、マイクロソフト社のCOM(Component Object Model)のIDLが知られている)。
【0008】
しかしながら、これらはソフトウェアオブジェクトを対象としていて、ハードウェアオブジェクト(装置)とのインターフェースは考慮されていないという問題が生じている。
【0009】
そこで、本願出願人は、これらのインターフェース定義言語を用いてハードウェアとのインターフェースを定義することができれば、ソフトウェアとハードウェアを統一的に扱うことができ、よってソフトウェアオブジェクトとハードウェアオブジェクトを容易に交換することが可能になるなど、プログラマーの負担を著しく減少させることができ、しかも、ソフトウェアとのインターフェース方法の定義がより簡単なものとなってハードウェア設計者の負担も減少させることができるという考えに至った。
【0010】
本発明は、上述のような従来の問題に鑑みてなされたもので、周辺LSIのような論理回路により構成される装置のインターフェースを改善し、プログラマーがレジスタの意味や多数のレジスタ間の関連性を理解するための負担を軽減することができ、しかも、ソフトウェアオブジェクトとハードウェアオブジェクトとの扱いを統一可能とし得て、ソフトウェアオブジェクトとハードウェアオブジェクトの交換を容易にすることができる論理回路のインターフェース方法およびインターフェースを備えた装置を提供することを目的とする。
【0011】
【課題を解決するための手段】
その目的を達成するため、本発明の論理回路のインターフェース方法は、論理演算素子により構成される論理回路において、インターフェース定義言語を用いてインターフェースを定義し、前記インターフェース定義言語はソフトウェアオブジェクトに対するインターフェース定義言語と共通部分を有し、前記インターフェース定義言語は機能ごとに機能名および該機能に対する引数および戻り値を宣言する手段を具備し、前記インターフェースを実現するサーバーインターフェース回路には前記インターフェース定義言語に記述された前記機能名を識別する入力および引数の入出力を行う手段および戻り値の出力を行う手段のうち少なくとも前記機能名を識別する入力を行う手段を具備させることを特徴とする。
【0012】
また、本発明の論理回路のインターフェース方法は、論理演算素子により構成される論理回路において、インターフェース定義言語を用いてインターフェースを定義し、前記インターフェース定義言語はソフトウェアオブジェクトに対するインターフェース定義言語と共通部分を有し、前記インターフェース定義言語は機能ごとに機能名および該機能に対する引数および戻り値を宣言する手段を具備し、前記インターフェースを実現するクライアントインターフェース回路には前記インターフェース定義言語に記述された前記機能名を識別する出力および引数の出入力を行う手段および戻り値の入力を行う手段のうち少なくとも前記機能名を識別する出力を行う手段を具備させることを特徴とする。
【0013】
また、本発明の論理回路のインターフェース方法は、論理演算素子により構成される論理回路において、インターフェース定義言語を用いてインターフェースを定義し、前記インターフェース定義言語はソフトウェアオブジェクトに対するインターフェース定義言語と共通部分を有し、前記インターフェース定義言語は機能ごとに機能名および該機能に対する引数および戻り値を宣言する手段を具備し、前記インターフェースを実現するサーバーインターフェース回路として前記インターフェース定義言語に記述された前記機能名を識別する入力および引数の入出力を行う手段および戻り値の出力を行う手段のうち少なくとも前記機能名を識別する入力を行う手段を具備したサーバー側論理回路と、前記インターフェースを実現するクライアントインターフェース回路として前記機能名を識別する出力および引数の出入力を行う手段および戻り値の入力を行う手段のうち少なくとも前記機能名を識別する出力を行う手段を具備するクライアント側論理回路とを備え、前記サーバー側論理回路と前記クライアント側論理回路とに関し、前記機能名を識別する出力を行う手段から前記機能名を識別する入力を行う手段へのデータ転送を可能とし、且つ、前記引数を入出力する手段と前記引数を出入力する手段とが互いに備わっていれば前記引数を入出力する手段と前記引数を出入力する手段とのデータ転送を可能とし、且つ、前記戻り値を出力する手段と前記戻り値を入力する手段とが互いに備わっていれば前記戻り値を出力する手段から前記戻り値を入力する手段へのデータ転送を可能とする論理回路を合成することを可能とすることを特徴とする。
【0014】
さらに、本発明のインターフェースを備えた装置は、論理演算素子により構成される論理回路において、インターフェース定義言語を用いてインターフェースを定義し、前記インターフェース定義言語はソフトウェアオブジェクトに対するインターフェース定義言語と共通部分を有し、前記インターフェース定義言語は機能ごとに機能名および該機能に対する引数および戻り値を宣言する手段を具備し、前記インターフェースを実現するサーバーインターフェース回路には前記インターフェース定義言語に記述された前記機能名を識別する入力および引数の入出力を行う手段および戻り値の出力を行う手段のうち、少なくとも前記機能名を識別する入力を行う手段を具備することを特徴とする。
【0015】
また、本発明のインターフェースを備えた装置は、論理回路において、インターフェース定義言語を用いてインターフェースを定義し、前記インターフェース定義言語はソフトウェアオブジェクトに対するインターフェース定義言語と共通部分を有し、前記インターフェース定義言語は機能ごとに機能名および該機能に対する引数および戻り値を宣言する手段を具備し、前記インターフェースを実現するクライアントインターフェース回路には前記インターフェース定義言語に記述された前記機能名を識別する出力および引数の入出力を行う手段および戻り値の入力を行う手段のうち、少なくとも前記機能名を識別する出力を行う手段を具備することを特徴とする。
【0016】
また、前記クライアントインターフェース回路の接続端子は、前記サーバーインターフェース回路の接続端子とシステムバスとのいずれとも接続可能とし、前記サーバーインターフェース回路の接続端子へ接続した場合には前記サーバーインターフェース回路を介して装置を駆動可能とし、システムバスに接続した場合には中央処理装置は前記クライアントインターフェース内部のレジスタの値を読み書き可能とし、前期中央処理装置は前記サーバーインターフェース回路を介する装置の機能を代替することを可能とするインターフェースを具備することを特徴とする。
【0017】
【発明の実施の形態】
次に、本発明の実施の形態を図面に基づいて説明する。
【0018】
図1は、本発明のコンピュータシステムの構成図である。この図1において、1はCPU(中央処理装置)、2はメモリ、3は乱数発生装置である。このメモリ2と乱数発生装置3とはシステムバス4を介してCPU1と接続されている。また、CPU1はメモリ2上に記憶されるプログラムを解釈・処理する。
【0019】
図2は乱数発生装置3のブロック構成図である。乱数発生装置3は、IDLサーバーインターフェース部11を有する。
【0020】
このIDLサーバーインターフェース部11は、機能識別レジスタ12、引数レジスタ13、戻り値レジスタ14、状態レジスタ15を備え、外部端子16によりシステムバス4に接続される。尚、図2では、各レジスタ12〜15とシステムバス4とのデータの授受を制御する部分は省略されているが、システムバス4に含まれるアドレスバスや制御バスにより各レジスタ12〜15とのデータの受渡しが制御される。
【0021】
図3はIDLによるインターフェースの定義例の説明図である。この例は、上述したCORBAのIDLとの共通部分があり、インターフェースの名称、機能名、機能名ごとの引数および戻り値が記してある。また、図3の例では、インターフェース名をrandomGeneratorとする乱数発生装置3のインターフェースを定義したもので、乱数の種を設定する機能(機能名:setSeed)と、発生した乱数を得る機能(機能名:getRandom)が示されている。そして、setSeedには入力引数としてdouble型の種(seed)が渡されることを表している。また、getRandomは戻り値として発生した乱数をdouble型の値として返すことを表している。
【0022】
図4および図5は、図3に例示したインターフェース定義を元に、本発明によるインターフェースを備えた装置をCPU1により操作するために作成したC言語のヘッダファイルおよびプログラムの説明図である。
【0023】
このようなヘッダファイルやプログラムは、インターフェース定義から一定の規則に基づいて変換して作成できるため、通常IDLコンパイラと呼ばれるプログラムにより変換を行う。CORBAなどのIDLコンパイラはインターフェース定義を通信データに変換するCやC++などのヘッダファイルやプログラムを生成するが、ここでは乱数発生装置3のIDLサーバーインターフェース部11のレジスタ設定または参照を行うCのプログラムが生成されるよう、IDLコンパイラが構成される。なお、このような役割を果たすプログラムは、スタブあるいはプロキシなどと呼ばれる。
【0024】
図5では、インターフェース定義されたsetSeedとgetRandomに対応する関数『setSeed』と『getRandom』とが記述されている。
【0025】
本発明の方法あるいは装置は複数部の協調により達成される。図1および図2に示した構成図をもとに、これらの関数および乱数発生装置3の動作の概要を説明する。
【0026】
CPU1はメモリ2に格納されているプログラムを読み出して処理を行う。そのプログラム内で関数『setSeed』が呼び出されると、関数『setSeed』のプログラムに基づき、CPU1は機能識別の値『FID_setSeed』を乱数発生装置3の機能識別レジスタ12に書き込む。
【0027】
この定数『FID_setSeed』は図4のヘッダファイルにて定義されているもので、以下の『FID_getRandom』や『Finished』などの定数も同様である。続いてdouble型の引数『seed』を引数レジスタ13に書き込み、この関数の処理は終了する。
【0028】
乱数発生装置3のIDLサーバーインターフェース部11は、機能setSeedに対するすべての引数を受け取ったことを確認すると、直ちに動作を開始させる。この例の場合、乱数発生部17の乱数の種レジスタ18に乱数の種を格納する動作が行われる。
【0029】
次に関数『getRandom』が呼び出されると、機能識別の値『FID_getRandom』を乱数発生装置3の機能識別レジスタ12に書き込む。IDLサーバーインターフェース部11は、機能『getRandom』に引数がないことから、直ちに乱数発生部に乱数の発生をさせる。IDLサーバーインターフェース部11は乱数発生部17の乱数の発生が完了すると、それを戻り値レジスタ14に書き込む。関数『getRandom』では、戻り値レジスタ14に値が書き込まれるまで、関数『getStatus』を呼び出して状態レジスタ15の値を読み取り、その値が『Finished』となるまでwhile文により待ち続ける。以上、本発明の装置を組み込んだコンピュータシステムの全体の動作の概要を説明した。
【0030】
次に、図7のフロー図を用いて図1に示したコンピュータシステムの設計作業の流れを説明する。尚、以下のフロー図並びにその説明では、各ステップを記号「S」で省略する。
【0031】
設計作業は、最初にインターフェースを決定する(S21)。インターフェースの決定では機能をすべて挙げ、各機能ごとに機能名、引数、戻り値をそれぞれ決定する。
【0032】
次に、S21で決定したインターフェースを図3のインターフェース定義ファイルとして作成する(S22)。そして、インターフェース定義ファイルをIDLコンパイラに通してヘッダファイルとスタブを作成する(S23)。IDLコンパイラにより図4のヘッダファイルと図5のスタブが生成される。
【0033】
ここでソフトウェア設計とハードウェア設計に分かれる。
【0034】
ソフトウェア設計では、次にスタブをコンパイラーによりコンパイルしてリロケータブルオブジェクトを作成する(S24)。次に他の部分のリロケータブルオブジェクトとリンクして実行モジュールを作成し(S25)、ソフトウェアの設計作業は完了する。
【0035】
ハードウェア設計者は、図3のインターフェース定義ファイルと図4のヘッダファイルを参照しながらIDLサーバーインターフェース部11を設計する(S26)。ここで参照するインターフェース定義ファイルとヘッダファイルの参照する内容については、IDLサーバーインターフェース部11の動作の詳細とともに説明する。
【0036】
次にハードウェア設計者は、乱数発生部17の回路とIDLサーバーインターフェース部11を結合する回路を設計して(S27)、乱数発生装置3の設計作業は完了する。
【0037】
引き続き、CPU1、メモリ2、乱数発生装置3,システムバス4を接続する回路の設計作業を行い(S28)、ハードウェア設計作業は終了する。
【0038】
次に、図6のIDLサーバーインターフェース部11の動作を表すフローチャートを用いて、本発明の中心であるIDLサーバーインターフェース部11の動作を、もう一度詳しく説明する。
【0039】
IDLサーバーインターフェース部11は、機能識別レジスタ12に外部端子16を介して値が書き込まれるのを待つ(S1)。
【0040】
ここで、機能識別レジスタ12に書き込まれる値は、setSeed機能であれば、これに対応する値は、図4のヘッダファイルにおいて#defineにより定義される『FID_setSeed』の値であり、具体的な値は『1』である。また、getRandom機能であれば『FID_getRandom』であり、具体的な値は『2』である。
【0041】
機能識別レジスタ12に値が書き込まれると、状態レジスタ15の値を実行中を意味する値『Executing』に変更し(S2)、機能識別レジスタ12の内容から引数の個数を割り出す(S3)。ここで、引数の個数の割り出しは、引数個数算出部20により行われるが、引数個数算出部20には図3のインターフェース定義ファイルおよび図4のヘッダを参照して、予め機能識別と引数個数との対応関係を引数個数算出部20に記憶するように設計しておく。
【0042】
次に、引数がすべて入力されているかどうかを判定し(S4)、受け取っていない引数があれば引数レジスタ13に引数が1つ書き込まれるのを待ち(S5)、再びS4から繰り返す。もしすべての引数が入力されていれば(引数がない場合は、すべて入力されたものとみなす)、機能識別により指定された機能を開始させる(S6)。IDLサーバーインターフェース部11の設計者は、図4のヘッダファイルを参照して機能識別と対応する機能を一致させておく。
【0043】
次に、機能処理の終了を待つ(S7)。その機能の処理が終了すると、戻り値があるかどうかを判定して(S8)、戻り値があれば戻り値を戻り値レジスタ14に書き込んで(S9)、最後に状態レジスタ15の値を『Finished』に変更し、再びS1から繰り返す。
【0044】
以上の説明において、図5では、状態レジスタが『Finished』に変化するまで、whileループで待つようになっているが、状態レジスタ15の値が変化したときにCPU1へ割り込みを発生するようにして、それまでこのプログラムが待機するように変更すればCPU1の利用効率を挙げることができる。また、引数の個数やデータ型の検査を加えるなどの変更を行ってもよい。また、インターフェース定義において、すべての機能が引数を持たないのであれば、引数レジスタ13を省略し、図6で示したルーチンのS4,S5を省略することもできる。また、全ての機能が戻り値を返さないのであれば、戻り値レジスタ14および図6で示したルーチンのS8,S9を省略することもできる。また、乱数発生装置3の働きをソフトウェアによりエミュレートするように変更する場合、図5の関数『setSeed』および関数『getRandom』を置き換えればよく、ハードウェアオブジェクトを容易にソフトウェアオブジェクトに交換することが可能である。これは、本発明による方法および装置で用いるインターフェース定義言語がソフトウェアオブジェクトを対象とするインターフェース定義言語と共通部分があるために、容易に交換が可能となる。
【0045】
次に、図2に示した乱数発生装置3を利用して、モンテカルロ法により円周率を計算する円周率計算装置5の構成図を図10に示す。また、この円周率計算装置(piCalculator)のインターフェース定義を図9に示す。この円周率計算装置5を組み込んだコンピュータシステムの構成図を図8に示す。
【0046】
図10の円周率計算装置5は、IDLサーバーインターフェース部21、円周率計算部27、IDLクライアントインターフェース部31からなり、IDLサーバーインターフェース部21に接続された外部端子26はシステムバス4に接続され、IDLクライアントインターフェース部31に接続された外部端子36は乱数発生装置3の外部端子16に接続される。
【0047】
外部端子36と外部端子16の接続によって、機能識別レジスタ32から機能識別レジスタ12へのデータ転送、引数レジスタ33と引数レジスタ13とのデータ転送、戻り値レジスタ14から戻り値レジスタ34へのデータ転送が可能となり、円周率計算装置5から乱数発生装置3に対する機能の要求が可能となる。
【0048】
図8のコンピュータシステムにおいて、乱数発生装置3を使用しないように変更したコンピュータシステムの構成図が図11である。図11では、円周率計算装置5のIDLクライアントインターフェース部31に接続された外部端子36はシステムバス4に接続される。
【0049】
コンピュータシステムを図8の構成から図10の構成に変更可能とするために、円周率発生装置5のIDLクライアントインターフェース部31は、乱数発生装置3のIDLサーバーインターフェース部11を駆動可能とするとともに、CPU1から機能識別レジスタ32、引数レジスタ33、戻り値レジスタ34、状態レジスタ35を読み出しまたは書き込み可能とすることで達成される。
【0050】
この時、CPU1は、円周率発生装置5のIDLクライアントインターフェース部31から発せされる要求を監視して、機能識別に応じた機能の処理を行う必要がある。
【0051】
図12は、CPU1が行う、要求の監視、機能の処理を説明するフローチャートである。
【0052】
先ず、円周率計算装置5のIDLクライアントインターフェース部31の状態レジスタ35の値を読み出す(S31)。その値が『Requesting』であれば、機能の処理の要求があると判断し(S32)、機能識別レジスタ32の値を読み出す(S33)。
【0053】
機能識別レジスタ32の値が『FID_setSeed』であれば(S34)、引数レジスタ33の値を読み出し、乱数の種として記憶する(S35)。
【0054】
機能識別レジスタ32の値が「FID_getRandom」であれば(S36)、乱数を発生し(S37)、その乱数を戻り値レジスタ34へ書き込む(S38)。
【0055】
上述したS35、S38が終了すれば、再びS31へ戻る。このプログラムはCPU1を占有してしまうので、タスクの1つとして実装する必要がある。あるいは、状態レジスタ35の値が『Requesting』に変化したときに、CPU1に割り込みが発生するようにして、それまでS31で待機するようにすれば、CPU1の利用効率を向上することができる。
【0056】
図13、図14は図12の処理をC言語化したヘッダファイルおよびプログラムである。インターフェース定義から一定の規則に従って変換できるため、先述の図4、図5のヘッダファイル、プログラムファイルと同様にIDLコンパイラと呼ばれるプログラムを使って作成することができる。なお、このような役割を果たすプログラムは、スケルトンあるいはスタブなどと呼ばれる。
【0057】
図15は、上述のような特性を持ったIDLクライアントインターフェース部31の動作を表すフローチャートである。始めに円周率計算部27から機能要求がないかを判断し(S41)、もしあれば機能識別レジスタ32に機能要求に対応する機能識別を書き込む(S42)。ここでは、『FID_setSeed』か『FID_getRandom』のいずれかの値が書き込まれる。次に機能要求がsetSeedであるかを判断し(S43)、setSeedであれば引数が存在するので、円周率計算部27から引数を受け取り引数レジスタ33に書き込み(S44)、状態レジスタ35の値を『Requesting』へと変更する(S45)。
【0058】
ここで円周率計算装置5の外部端子36の接続先が乱数発生装置3であるか、CPU1であるかにより動作が変わる。
【0059】
接続先がCPU1であれば、CPU1は先述の図12のフローチャートで示した処理を行っており、機能識別の値が『FID_setSeed』であれば、引数はS35で読み込まれる。機能識別の値が『FID_getRandom』であれば、引数はない。S47では、すべての引数が読み込まれたかどうかを判断し(引数がない場合は、読み込まれたものと判断する)、すべて読み込まれている場合は、戻り値があるかどうか判断し(S48)、戻り値がある場合は戻り値レジスタ34に値が書き込まれるまで待つ(S49)。戻り値レジスタ34に書き込まれた値を乱数として円周率計算部27に渡す(S50)。
【0060】
以上でCPU1とのやり取りは終わって、状態レジスタ35の値を『Waiting』に変更し(S51)、再びS41から繰り返す。
【0061】
もし、S46にて、円周率計算装置5の外部端子36の接続先が乱数発生装置3であると判断された場合には、機能識別レジスタ32の内容を接続先である乱数発生装置3のIDLサーバーインターフェース部11の機能識別レジスタ12に書き込む(S52)。
【0062】
ここで乱数発生装置3は図6のフローチャートに従って動作しており、S1において機能識別レジスタ12への書き込みを検出して、S2以降の動作を行う。IDLクライアントインターフェース部31のS53以降の動作は、乱数発生装置3のIDLサーバーインターフェース部11のS4以降の動作と対応付けられている。
【0063】
次に、引数があるかどうかを判断する(S53)。機能識別の値が『FID_setSeed』であれば、引数があると判断される。引数があれば引数レジスタ33の内容を乱数発生装置3の引数レジスタ13に書き込む(S54)。
【0064】
次に、戻り値があるかどうかを判断する(S55)。機能識別の値が『FID_getRandom』であれば戻り値があると判断される。戻り値があると判断された場合、乱数発生装置3の状態レジスタ15の値が『Finished』になるまで待つ(S56)。続いて乱数発生装置3の戻り値レジスタ14の値を読み出し、戻り値レジスタ34に書き込む(S57)。そして、戻り値レジスタ34の内容を円周率計算部27に渡す(S58)。
【0065】
以上で乱数発生装置3とのやり取りは終わって、状態レジスタ35の値を『Waiting』に変更し(S51)、再びS41から繰り返す。
【0066】
ところで、上記実施の形態では、乱数発生装置3と円周率計算装置5を例に取って説明したが、乱数発生部17や、円周率計算部27を変更し、またそれにあわせてインターフェース定義(randomGenerator,piCalculator)を変更することにより、種々の装置に対応できる。
【0067】
また、上記実施の形態では、引数の型や引数の個数の照合を行っていないが、それらを行うことにより、インターフェースプログラムの誤りを厳密に検出することができる。
【0068】
さらに、上記実施の形態では、入力引数の例のみを示したが出力引数あるいは入出力引数の扱いは可能で、出力引数の場合、入力引数の場合とはデータ転送の向きが逆になる。また、本実施例ではインターフェース記述言語としてCORBAのIDLを例に説明したが、ソフトウェアオブジェクトを対象とするIDLと共通部分があり、機能名および該機能に対する引数および戻り値を宣言する手段を備えたものであればCORBAのIDLに限定されるものではない。
【0069】
また、上記実施の形態のプログラムではインスタンスオブジェクトを区別するための記述を省略して簡略化しているが、インスタンスオブジェクトを区別して取り扱う手段を備えることが望ましい。
【0070】
尚、本発明の方法及び装置は、集積回路であって外部とのインターフェースを目的とするのがもっとも効果的であるが、集積回路内部のブロック間のインターフェースあるいは複数の集積回路からなる論理回路間のインターフェースに用いてもよい。
【0071】
【発明の効果】
本発明の方法および装置によれば、ソフトウェアオブジェクトと共通部のあるインターフェース定義言語によりハードウェアとのインターフェースを定義することができるから、ソフトウェアとハードウェアを統一的に扱うことが可能になり、ソフトウェアオブジェクトとハードウェアオブジェクト(装置)を容易に交換することが可能になるなどプログラマーの負担を著しく減少させることができる。また、ソフトウェアとのインターフェース方法の定義がより簡単なものになり、ハードウェア設計者の負担を減少することができる。また、ハードウェアとソフトウェアの並行開発が容易になり、開発納期の短縮を図ることができる。ハードウェアオブジェクト同士の接続と中央処理装置への接続とを容易に変更できるので、ハードウェア処理していたものをソフトウェア処理に置き換える、あるいはその逆が容易になるなど絶大な効果を有する。
【図面の簡単な説明】
【図1】本発明のコンピュータシステムの構成図である。
【図2】乱数発生装置のブロック構成図である。
【図3】インターフェース定義言語(IDL)による乱数発生装置のインターフェース定義の説明図である。
【図4】図5のプログラムに対応するヘッダファイルの説明図である。
【図5】乱数発生装置を直接操作するためのプログラムの説明図である。
【図6】IDLサーバーインターフェース部の動作を表すフロー図である。
【図7】設計作業の流れを表すフロー図である。
【図8】円周率計算装置を組み込んだコンピュータシステムのブロック構成図である。
【図9】円周率計算装置(piCalculator)のインターフェース定義の説明図である。
【図10】円周率を計算する円周率計算装置のブロック構成図である。
【図11】乱数発生装置を使用しないように変更したコンピュータシステムのブロック構成図である。
【図12】中央処理装置が行う、要求の監視及び機能の処理に関するフロー図である。
【図13】図14のプログラムに対応するヘッダファイルの説明図である。
【図14】図12の処理をC言語化したプログラムの説明図である。
【図15】IDLクライアントインターフェース部の動作を表すフロー図である。
【符号の説明】
1 中央制御装置、2 メモリ、3 乱数発生装置、4 システムバス、5 円周率計算装置、11 (乱数発生装置の)IDLサーバーインターフェース部、12 機能識別レジスタ、13 引数レジスタ、14 戻り値レジスタ、15状態レジスタ、16 外部端子、17 乱数発生部、18 乱数の種レジスタ、19 乱数レジスタ、21 (円周率計算装置の)IDLサーバーインターフェース部、22 機能識別レジスタ、23 引数レジスタ、24 戻り値レジスタ、25 状態レジスタ、26 外部端子、27 円周率計算部、28 回数レジスタ、29 円周率レジスタ、31 IDLクライアントインターフェース部、32 機能識別レジスタ、33 引数レジスタ、34 戻り値レジスタ、35
状態レジスタ、36 外部端子。
Claims (6)
- 論理演算素子により構成される論理回路において、インターフェース定義言語を用いてインターフェースを定義し、前記インターフェース定義言語はソフトウェアオブジェクトに対するインターフェース定義言語と共通部分を有し、前記インターフェース定義言語は機能ごとに機能名および該機能に対する引数および戻り値を宣言する手段を具備し、前記インターフェースを実現するサーバーインターフェース回路には前記インターフェース定義言語に記述された前記機能名を識別する入力および引数の入出力を行う手段および戻り値の出力を行う手段のうち少なくとも前記機能名を識別する入力を行う手段を具備させることを特徴とする論理回路のインターフェース方法。
- 論理演算素子により構成される論理回路において、インターフェース定義言語を用いてインターフェースを定義し、前記インターフェース定義言語はソフトウェアオブジェクトに対するインターフェース定義言語と共通部分を有し、前記インターフェース定義言語は機能ごとに機能名および該機能に対する引数および戻り値を宣言する手段を具備し、前記インターフェースを実現するクライアントインターフェース回路には前記インターフェース定義言語に記述された前記機能名を識別する出力および引数の出入力を行う手段および戻り値の入力を行う手段のうち少なくとも前記機能名を識別する出力を行う手段を具備させることを特徴とする論理回路のインターフェース方法。
- 論理演算素子により構成される論理回路において、インターフェース定義言語を用いてインターフェースを定義し、前記インターフェース定義言語はソフトウェアオブジェクトに対するインターフェース定義言語と共通部分を有し、前記インターフェース定義言語は機能ごとに機能名および該機能に対する引数および戻り値を宣言する手段を具備し、
前記インターフェースを実現するサーバーインターフェース回路として前記インターフェース定義言語に記述された前記機能名を識別する入力および引数の入出力を行う手段および戻り値の出力を行う手段のうち少なくとも前記機能名を識別する入力を行う手段を具備したサーバー側論理回路と、前記インターフェースを実現するクライアントインターフェース回路として前記機能名を識別する出力および引数の出入力を行う手段および戻り値の入力を行う手段のうち少なくとも前記機能名を識別する出力を行う手段を具備するクライアント側論理回路とを備え、
前記サーバー側論理回路と前記クライアント側論理回路とに関し、前記機能名を識別する出力を行う手段から前記機能名を識別する入力を行う手段へのデータ転送を可能とし、且つ、前記引数を入出力する手段と前記引数を出入力する手段とが互いに備わっていれば前記引数を入出力する手段と前記引数を出入力する手段とのデータ転送を可能とし、且つ、前記戻り値を出力する手段と前記戻り値を入力する手段とが互いに備わっていれば前記戻り値を出力する手段から前記戻り値を入力する手段へのデータ転送を可能とする論理回路を合成することを可能とすることを特徴とする論理回路のインターフェース方法。 - 論理演算素子により構成される論理回路において、インターフェース定義言語を用いてインターフェースを定義し、前記インターフェース定義言語はソフトウェアオブジェクトに対するインターフェース定義言語と共通部分を有し、前記インターフェース定義言語は機能ごとに機能名および該機能に対する引数および戻り値を宣言する手段を具備し、前記インターフェースを実現するサーバーインターフェース回路には前記インターフェース定義言語に記述された前記機能名を識別する入力および引数の入出力を行う手段および戻り値の出力を行う手段のうち、少なくとも前記機能名を識別する入力を行う手段を具備することを特徴とするインターフェースを備えた装置。
- 論理回路において、インターフェース定義言語を用いてインターフェースを定義し、前記インターフェース定義言語はソフトウェアオブジェクトに対するインターフェース定義言語と共通部分を有し、前記インターフェース定義言語は機能ごとに機能名および該機能に対する引数および戻り値を宣言する手段を具備し、前記インターフェースを実現するクライアントインターフェース回路には前記インターフェース定義言語に記述された前記機能名を識別する出力および引数の入出力を行う手段および戻り値の入力を行う手段のうち、少なくとも前記機能名を識別する出力を行う手段を具備することを特徴とするインターフェースを備えた装置。
- 請求項5に記載のインターフェースを備えた装置において、前記クライアントインターフェース回路の接続端子は、前記サーバーインターフェース回路の接続端子とシステムバスとのいずれとも接続可能とし、前記サーバーインターフェース回路の接続端子へ接続した場合には前記サーバーインターフェース回路を介して装置を駆動可能とし、システムバスに接続した場合には中央処理装置は前記クライアントインターフェース内部のレジスタの値を読み書き可能とし、前期中央処理装置は前記サーバーインターフェース回路を介する装置の機能を代替することを可能とするインターフェースを具備することを特徴とするインターフェースを備えた装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002213005A JP2004056595A (ja) | 2002-07-22 | 2002-07-22 | 論理回路のインターフェース方法およびインターフェースを備えた装置 |
US10/620,615 US7543307B2 (en) | 2002-07-22 | 2003-07-17 | Interface method and device having interface for circuit comprising logical operation element |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002213005A JP2004056595A (ja) | 2002-07-22 | 2002-07-22 | 論理回路のインターフェース方法およびインターフェースを備えた装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004056595A true JP2004056595A (ja) | 2004-02-19 |
Family
ID=30767825
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002213005A Pending JP2004056595A (ja) | 2002-07-22 | 2002-07-22 | 論理回路のインターフェース方法およびインターフェースを備えた装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7543307B2 (ja) |
JP (1) | JP2004056595A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100919053B1 (ko) | 2007-12-03 | 2009-09-24 | 한국전자통신연구원 | 이동통신 단말기 프레임워크에서의 하드웨어 컴포넌트관리방법 및 장치 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4785142B2 (ja) * | 2007-01-31 | 2011-10-05 | ルネサスエレクトロニクス株式会社 | データ処理装置 |
US10685150B2 (en) * | 2013-09-30 | 2020-06-16 | International Business Machines Corporation | System for design and execution of numerical experiments on a composite simulation model |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6640255B1 (en) * | 1995-03-31 | 2003-10-28 | Sun Microsystems, Inc. | Method and apparatus for generation and installation of distributed objects on a distributed object system |
US6308225B1 (en) * | 1996-07-11 | 2001-10-23 | 724 Solutions, Inc. | Method for performing distributed object calls |
US6347342B1 (en) * | 1996-07-15 | 2002-02-12 | Next Software, Inc. | Method and apparatus for dynamically brokering object messages among object models |
US6023579A (en) * | 1998-04-16 | 2000-02-08 | Unisys Corp. | Computer-implemented method for generating distributed object interfaces from metadata |
US7058956B1 (en) * | 1999-09-01 | 2006-06-06 | Microsoft Corporation | Directory services interface extensions with aggregatable software objects |
US7171475B2 (en) * | 2000-12-01 | 2007-01-30 | Microsoft Corporation | Peer networking host framework and hosting API |
US6532471B1 (en) * | 2000-12-11 | 2003-03-11 | International Business Machines Corporation | Interface repository browser and editor |
-
2002
- 2002-07-22 JP JP2002213005A patent/JP2004056595A/ja active Pending
-
2003
- 2003-07-17 US US10/620,615 patent/US7543307B2/en not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100919053B1 (ko) | 2007-12-03 | 2009-09-24 | 한국전자통신연구원 | 이동통신 단말기 프레임워크에서의 하드웨어 컴포넌트관리방법 및 장치 |
Also Published As
Publication number | Publication date |
---|---|
US7543307B2 (en) | 2009-06-02 |
US20040019618A1 (en) | 2004-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6177179B2 (ja) | エラーハンドリングをもつトランザクションのグラフ型計算 | |
DE102018005181A1 (de) | Prozessoren, Verfahren und Systeme für einen konfigurierbaren, räumlichen Beschleuniger mit Leistungs-, Richtigkeits- und Energiereduktionsmerkmalen | |
CN107066241A (zh) | 用于动态加载基于图的计算的系统和方法 | |
US7171546B2 (en) | CPU life-extension apparatus and method | |
US8041551B1 (en) | Algorithm and architecture for multi-argument associative operations that minimizes the number of components using a latency of the components | |
JP2004056595A (ja) | 論理回路のインターフェース方法およびインターフェースを備えた装置 | |
US7552269B2 (en) | Synchronizing a plurality of processors | |
Leppänen et al. | Unified OpenCL integration methodology for FPGA designs | |
Tremblay et al. | Challenges and trends in processor design | |
JP2005508029A (ja) | リコンフィギュアラブルアーキテクチャのためのプログラム変換方法 | |
Mehta et al. | UVM (Universal Verification Methodology) | |
Palmer et al. | Gauss: A framework for verifying scientific computing software | |
Richter et al. | Representation of function variants for embedded system optimization and synthesis | |
Ng et al. | Session types: towards safe and fast reconfigurable programming | |
Bergeron et al. | High level synthesis for data-driven applications | |
Ambrose et al. | Argus: A framework for rapid design and prototype of heterogeneous multicore systems in fpga | |
Beuche et al. | Streamlining object-oriented software for deeply embedded applications | |
US20240069511A1 (en) | Instruction generation and programming model for a data processing array and microcontroller | |
JP2005228325A (ja) | 資源の有限なマイクロ・プロセッサのためのプロセス言語 | |
van der Wijst | An Accelerator based on the ρ-VEX Processor: an Exploration using OpenCL | |
Deters | Feature-Oriented Hardware Design | |
JP3349940B2 (ja) | プログラマブルコントローラ用リンクユニット | |
US5864691A (en) | Central processing unit with a selector that bypasses circuits where processing is not required | |
KHALILI MAYBODI | A Data-Flow Threads Co-processor for MPSoC FPGA Clusters | |
Hansen | Computational Storage in the Context of the Daphne System |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050308 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061121 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070320 |