(57)【要約】【課題】マイクロプロセッサとの依存性を低く抑え、ハードウェアとソフトウェアの両方のポータビリティを上げることが可能なコプロセッサのホストインターフェース回路を提供する。【解決手段】コプロセッサのホストインターフェース回路において、内部アドレスバスＳ４１と、内部ストローブバスＳ５１と、内部アドレスバスＳ４１上のアドレスにエンコードされた情報から、命令Ｓ７とオペランドＳ８を生成するアドレス命令デコーダ部１０１と、内部アドレスバスＳ４１上のアドレスと内部ストローブバスＳ５１上のストローブ信号により、マイクロプロセッサ１からデータレジスタ部５と制御レジスタ部６への読み書き要求をデコードした、ホストアクセス信号Ｓ９を生成するホストデコーダ部９１と、演算部４の制御を行なうＦＳＭ部７１を備えた。【選択図】　　　図１
2004070819.tif 000002
【特許請求の範囲】
【請求項１】
アドレスバス（Ｓ１）、ストローブバス（Ｓ２）およびデータバス（Ｓ３）によりマイクロプロセッサ（１）とメモリ（３）に接続されたコプロセッサ（２）であり、
命令に従ってデータを演算する演算部（４）と、データを書き込むデータレジスタ部（５）と、当該演算部などの内部の演算の動作モードを決定する制御レジスタ部（６）と、前記データレジスタ部（５）と前記制御レジスタ部（６）の使用を、前記マイクロプロセッサ（１）または前記コプロセッサ（２）の何れかから選択する内部調停部（８）を備えたコプロセッサのインターフェース回路において、
前記アドレスバス（Ｓ１）と接続された、入力方向のパスとなる内部アドレスバス（Ｓ４１）と、
前記ストローブバス（Ｓ２）に接続された、入力方向のパスとなる内部ストローブバス（Ｓ５１）と、
前記内部アドレスバス（Ｓ４１）上のアドレスにエンコードされた情報から、命令（Ｓ７）とオペランド（Ｓ８）を生成するアドレス命令デコーダ部（１０１）と、
前記内部アドレスバス（Ｓ４１）上のアドレスと前記内部ストローブバス（Ｓ５１）上のストローブ信号により、マイクロプロセッサ（１）から前記データレジスタ部（５）と前記制御レジスタ部（６）への読み書き要求をデコードした、ホストアクセス信号（Ｓ９）を生成するホストデコーダ部（９１）と、
前記演算部（４）の制御を行なうＦＳＭ部（７１）を備えることを特徴とするコプロセッサのホストインターフェース回路。
【請求項２】
ホストアクセス信号（Ｓ９）と命令（Ｓ７）を入力とし、命令とデータレジスタへのホストアクセス信号の回数を関連づけて監視し、監視結果によりＦＳＭ部（７１）へのＦＳＭスタート信号（Ｓ１５）を生成し、演算部応答信号（Ｓ１３）によりＦＳＭスタート信号をクリアするスタート信号生成部（１１）を備えたことを特徴とする請求項１記載のコプロセッサのホストインターフェース回路。
【請求項３】
ホストアクセス（Ｓ９）とＦＭＳスタート信号（Ｓ１５）を入力とし、ホストアクセス信号とＦＭＳスタート信号を対応付けて監視し、監視結果でデータレジスタのバンクを決定する、バンクアドレス（Ｓ１６）を生成するバンクアドレス生成部（１２）と、
データバスに接続された内部データバス（Ｓ６）を入出力とし、複数のバンクに分割され、バンクアドレスによりバンクが選択され、内部調停部（８）で生成されたレジスタ選択信号（Ｓ１１）を、選択されたバンクのレジスタ選択に用いるバンクデータレジスタ部（５１）を備えることを特徴とする請求項２記載のコプロセッサのホストインターフェース回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロプロセッサの補助的な処理を行なうコプロセッサのインターフェース回路に関するものである。
【０００２】
【従来の技術】
従来、マイクロプロセッサの補助的な処理を行なうコプロセッサのインターフェース回路は、図８のようになっている。
図８において、マイクロプロセッサ１、コプロセッサ２およびメモリ３がアドレスバスＳ１、ストローブバスＳ２およびデータバスＳ３により接続されている。メモリ３上にはマイクロプロセッサ１とコプロセッサ２の命令がそれぞれ格納されている。コプロセッサ２内部では、アドレスバスＳ１が内部アドレスバスＳ４と接続され、ストローブバスＳ２が内部ストローブバスＳ５と接続され、またデータバスＳ３が内部データバスＳ６と接続されている。これらの内部バスは双方向のバスである。
【０００３】
次に動作を説明する。
マイクロプロセッサ１はメモリ３から命令を読み込み実行を行なう。このとき命令がコプロセッサ命令の場合、マイクロプロセッサ１はデータバスＳ３を通してコプロセッサ命令をコプロセッサ２に転送する。必要であれば同時にストローブバスＳ２にも制御信号を乗せコプロセッサ２に転送する。データバスＳ３上のコプロセッサ命令は内部データバスＳ６を経由して、命令デコーダ部１０に入力される。
【０００４】
命令デコーダ部１０において、コプロセッサ命令は、命令Ｓ７とオペランドＳ８にデコードされる。命令Ｓ７は演算部４と同時に、コプロセッサ２の制御を行なうマイクロプログラム部７にも入力される。
【０００５】
マイクロプログラム部７は演算部４で実行する命令に必要となるデータを、メモリからデータレジスタ５に転送するため、アドレスとストローブ信号を生成する。これらの信号は内部アドレスバスＳ４と内部ストローブバスＳ５から、アドレスバスＳ１とストローブバスＳ２を経由してメモリに送信される。
【０００６】
この時マイクロプログラム部７はホストインターフェース部９が誤って動作しないように、ホストインターフェースイネーブル信号Ｓ９１を作成し、ホストインターフェース部９の動作を禁止する。
【０００７】
メモリ３はコプロセッサ２に要求されたデータを、データバスＳ３に乗せる。データバスＳ３から内部データバスＳ６上に現れたデータを、データレジスタ部５に一時的に記憶するために、オペランドに適合するように演算アクセス信号Ｓ１０を生成する。演算アクセス信号Ｓ１０は内部調停部８に入力そして調停され、レジスタ選択信号Ｓ１１により、所定のデータレジスタ部５に内部データバスＳ６上のデータが書き込まれる。データがデータレジスタ部５に書き込まれた後、マイクロプログラム部７は演算部起動信号Ｓ１２を生成して、演算部４を起動させる。
【０００８】
演算部４は命令に従いデータの演算を行ない、演算結果と演算部応答信号Ｓ１３を生成する。演算部応答信号Ｓ１３を受け取ったマイクロプログラム部７は、演算結果をデータレジスタ部５に書き込むため、オペランドに適合するように演算アクセス信号Ｓ１０を生成する。マイクロプロセッサ１からデータレジスタ部５と制御レジスタ６のアクセスが生じる場合、アドレスバスＳ１とストローブバスＳ２の信号が、内部アドレスバスＳ４と内部ストローブバスＳ５を経由してホストインターフェース部９に入力され、ホストアクセス信号Ｓ９を生成する。ホストアクセス信号Ｓ９は内部調停部８で調停され、レジスタ選択信号Ｓ１１により、所定のデータレジスタ部５もしくは制御レジスタ部６が選択される。制御レジスタ部６の制御情報Ｓ１４は、演算部４やマイクロプログラム部７の動作モード等の決定に利用される。
【０００９】
図９は従来のデータレジスタ部と制御レジスタ部のメモリマップＦ１の説明図である。
この例では最大２入力の演算を行い、一つの演算結果を生成するものである。演算部４の入力データは、データレジスタ１（Ｆ１２）とデータレジスタ２（Ｆ１３）に一時的に記憶される。０ｘ００と０ｘ０４にそれぞれマッピングされ、すべての命令において共通に利用される。演算部４の出力データは、結果用データレジスタ（Ｆ１４）に記憶される。これは０ｘ０８にマッピングされている。また、演算部４とマイクロプログラム部７の動作モードの決定を行なう制御レジスタ（Ｆ１１）が０ｘ０Ｃにマッピングされている。これらのアドレスはコプロセッサ２が接続されているベースアドレスからオフセットアドレスであり、マイクロプロセッサ１はベースアドレスとオフセットアドレスが足したものをアドレスとして利用し、コプロセッサ２のレジスタ群にアクセスする。
【００１０】
【発明が解決しようとする課題】
ところが、従来技術では以下の問題があった。
（１）コプロセッサ２は能動的に動作せず、マイクロプロセッサ１から命令を受け取り、それをトリガーにして受動的に動作する。そのため、マイクロプロセッサ１とコプロセッサ２の間に、専用のプロトコルを必要とする。そのため、コプロセッサ２は主となるマイクロプロセッサ１に強く依存するので、他のマイクロプロセッサで簡単に利用することができなかった。また、同時に、この依存性のためプログラムをアセンブラで記述する必要があり、ソフトウェアの立場からも、他のマイクロプロセッサで簡単に利用することが出来なかった。さらに、マイクロプロセッサ１から命令を受け取った後、コプロセッサ２は能動的に命令の実行にデータを取得しなければならないため、マイクロプログラム部７のような複雑な回路や、双方向の内部バスを必要とするなど、インターフェースの回路が複雑で、かつ設計が困難であった。
【００１１】
（２）それから、マイクロプロセッサ１とコプロセッサ２の間にあるプロトコルによるオーバヘッドのため、スループットの低下が生じるという問題がった。
【００１２】
（３）そして、マルチタスク環境でコプロセッサを利用する際、コンテキストスイッチに対応するため、コプロセッサのコンテキストをセーブする命令を持つが。メモリにコンテキストを書出すため、コンテキストスイッチでのスループットの低下を生じるという問題があった。
【００１３】
そこで、上記課題を解決するために、本発明の第１の目的は、どのようなマイクロプロセッサでも簡単に利用できるように、コプロセッサとしての性格を維持したまま、マイクロプロセッサとの依存性を低く抑え、ハードウェアとソフトウェアの両方のポータビリティを上げることが可能なコプロセッサのホストインターフェース回路を提供することにある。
【００１４】
また、本発明の第２の目的は、マイクロプロセッサとコプロセッサの間にあるプロトコルにより生じていたオーバヘッドを減少させ、スループットを上げることが可能なコプロセッサのホストインターフェース回路を提供することにある。
【００１５】
さらに、本発明の第３の目的は、マルチタスク環境でコプロセッサを利用してもスループットを落さないよう、コンテキストスイッチの負荷を低減することが可能なコプロセッサのホストインターフェース回路を提供することにある。
【００１６】
【課題を解決するための手段】
上記問題を解決するため、請求項１の本発明は、アドレスバス、ストローブバスおよびデータバスによりマイクロプロセッサとメモリに接続されたコプロセッサであり、命令に従ってデータを演算する演算部と、データを書き込むデータレジスタ部と、当該演算部などの内部の演算の動作モードを決定する制御レジスタ部と、前記データレジスタ部と前記制御レジスタ部の使用を、前記マイクロプロセッサまたは前記コプロセッサの何れかから選択する内部調停部を備えたコプロセッサのインターフェース回路において、前記アドレスバスと接続された、入力方向のパスとなる内部アドレスバスと、前記ストローブバスに接続された、入力方向のパスとなる内部ストローブバスと、前記内部アドレスバス上のアドレスにエンコードされた情報から、命令とオペランドを生成するアドレス命令デコーダ部と、前記内部アドレスバス上のアドレスと前記内部ストローブバス上のストローブ信号により、マイクロプロセッサから前記データレジスタ部と前記制御レジスタ部への読み書き要求をデコードした、ホストアクセス信号を生成するホストデコーダ部と、前記演算部の制御を行なうＦＳＭ部を備えたものである。
【００１７】
また、請求項２の本発明は、請求項１記載のコプロセッサのホストインターフェース回路において、ホストアクセス信号（Ｓ９）と命令（Ｓ７）を入力とし、命令とデータレジスタへのホストアクセス信号の回数を関連づけて監視し、監視結果によりＦＳＭ部へのＦＳＭスタート信号を生成し、演算部応答信号によりＦＳＭスタート信号をクリアするスタート信号生成部を備えたものである。
【００１８】
さらに、請求項３の本発明は、請求項２記載のコプロセッサのホストインターフェース回路において、ホストアクセスとＦＭＳスタート信号を入力とし、ホストアクセス信号とＦＭＳスタート信号を対応付けて監視し、監視結果でデータレジスタのバンクを決定する、バンクアドレスを生成するバンクアドレス生成部と、データバスに接続された内部データバスを入出力とし、複数のバンクに分割され、バンクアドレスによりバンクが選択され、内部調停部で生成されたレジスタ選択信号を、選択されたバンクのレジスタ選択に用いるバンクデータレジスタ部を備えたものである。
【００１９】
【発明の実施の形態】
本発明の実施例を図に基づいて説明する。
【００２０】
［第１実施例］
図１は本発明の第１実施例を示すコプロセッサのホストインターフェース回路のブロック図、図２は第１実施例によるメモリマップの説明図、図３は第１実施例によるメモリマップのコプロセッサで演算を行なわせるＣ言語のプログラム例である。
【００２１】
まず、第１実施例の理解を容易にするため、図１の説明の前に、図１のコプロセッサのメモリマップＦ１の例を示す図２を先に説明する。
本コプロセッサは２入力の命令を３つと１入力の命令をひとつ持つものである。オフセットアドレスの０ｘ００に制御レジスタＦ１１が、０ｘ０４に結果用データレジスタＦ１２がマッピングされ、すべての命令の演算結果はこの結果用データレジスタに格納される。命令１の入力となる命令１用データレジスタ１（Ｆ１４）と命令１用データレジスタ２（Ｆ１５）が０ｘ１０と０ｘ１４に、命令２の入力となる命令２用データレジスタ１（Ｆ１６）と命令２用データレジスタ２（Ｆ１７）が０ｘ１８と０ｘ１Ｃに、命令３の入力となる命令３用データレジスタ１（Ｆ１８）と命令３用データレジスタ２（Ｆ１９）が０ｘ２０と０ｘ２４に、命令４の入力となる命令４用データレジスタ１（Ｆ２０）が０ｘ２８にそれぞれマッピングされている。０ｘ０８から０ｘ０ｆは何もマッピングされていない領域（Ｆ１３）である。８ビットのオフセットアドレスに対して、上位５ビットが命令を、下位３ビットが命令に対するレジスタの選択、つまりオペランドをエンコードしている。すなわちこのアドレスにエンコードされた情報をデコードできればコプロセッサが命令を理解できる。
【００２２】
次に、このメモリマップのコプロセッサで、演算を行なわせるＣ言語の例を図３に示す。
＃ｄｅｆｉｎｅ文ではアドレスとインストラクションを定義している。インストラクションは命令とオペランドの定義を行なっている。ｅｘｅｃ＿ｉｎｓｔ１（）は命令１に対するデータ設定を、ｇｅｔ＿ｒｅｓｕｌｔ（）は命令実行後の結果取得を、それぞれマクロとして定義している。関数ｉｎｓｔｒｕｃｔｉｏｎ１（）は命令１を実行し演算結果を得るものである。ｄａｔａ１とｄａｔａ２をｅｘｅｃ＿ｉｎｓｔ１（）により設定後、ｇｅｔ＿ｒｅｓｕｌｔ（）により結果を取得する。この例でわかるように、ＢＡＳＥで定義されるベースアドレスのみが、マイクロプロセッサを利用したシステムで固有であり、このＢＡＳＥ以外はどのシステムでも共通に利用できるものである。そのため、ソフトウェア的にポータビリティに優れたものといえる。さらに、コンパイラ的に処理する必要がある構文はポインタだけであり、コンパイラに特別なコプロセッサ用の拡張を必要としないため、開発環境のポータビリティにも優れているといえる。
【００２３】
上記を踏まえた上で図１の本発明の実施例を説明する。ここで、マイクロプロセッサ１の命令はメモリ３に格納されている。コプロセッサ２を動作させる命令は、図２のメモリマップを実現するように、マイクロプロセッサ１のメモリアクセス命令を利用して記述されている。なお、本発明の構成要素が従来と同じものについてはその説明を省略し、異なる点のみ説明する。
【００２４】
図１において、７１はＦＳＭ部（ｆｉｎｉｔｅ　ｓｔａｔｅ　ｍａｃｈｉｎｅの略）、９１はホストデコーダ部、１０１はアドレス命令デコーダ部である。
本発明が従来と異なる点は、コプロセッサのインターフェース回路において、アドレスバスＳ１と接続された、入力方向のパスとなる内部アドレスバスＳ４１と、ストローブバスＳ２に接続された、入力方向のパスとなる内部ストローブバスＳ５１と、内部アドレスバスＳ４１上のアドレスにエンコードされた情報から、命令Ｓ７とオペランドＳ８を生成するアドレス命令デコーダ部１０１と、内部アドレスバスＳ４１上のアドレスと内部ストローブバスＳ５１上のストローブ信号により、マイクロプロセッサ１からデータレジスタ部５と制御レジスタ部６への読み書き要求をデコードした、ホストアクセス信号Ｓ９を生成するホストデコーダ部９１と、演算部４の制御を行なうＦＳＭ部７１を備えた点である。
【００２５】
次に動作を説明する。
図１において、命令１がエンコードされたアドレスでコプロセッサ２がアクセスされた場合、アドレスバスＳ１と接続された内部アドレスバスＳ４から、アドレス命令デコーダ部１０１にアドレスが送られ、命令Ｓ７とオペランドＳ８が生成される。同時に、内部アドレスバスＳ４１と、ストローブバスＳ２に接続された内部ストローブバスＳ５１は、共にホストデコーダ部９１に送られ、オペランドに相当するデータレジスタ部５に対する、ホストアクセス信号Ｓ９を生成する。この場合データのセットなので書き込み信号となる。ホストアクセス信号Ｓ９は内部調停部８に転送され、ＦＳＭ部７１の演算アクセス信号Ｓ１０と調停され、レジスタ選択信号Ｓ１１が生成される。データレジスタ部５に書き込みたいデータが、データバスに接続された内部データバスＳ６を経由して、オペランドで指定されたデータレジスタ部５に書き込まれる。
【００２６】
本実施例では、制御レジスタ部６上の制御情報Ｓ１４中の１ビットを利用して、ＦＳＭ部７１を起動する。そのため、制御レジスタ部６のビットをセットする。この情報はＦＳＭ部７１に接続されているので、ＦＳＭ部７１は動作を開始し、演算部４を起動する演算部起動信号Ｓ１２を作成する。この演算部起動信号Ｓ１２により演算部４は実行を開始し、データレジスタ部５のデータを利用して演算を行ない、演算結果をデータレジスタ部５に書き戻すと同時に演算部応答信号Ｓ１３を生成する。この信号はＦＳＭ部７１に入力され、ＦＳＭ部７１の動作が完了する。
【００２７】
本発明の第１実施例に係るコプロセッサのホストインターフェース回路は上記構成にしたので、コプロセッサがマイクロプロセッサから見ると、受動的なデバイスとしてとらえられると共に、単純なメモリと同等の回路で実現できるため、いろいろなマイクロプロセッサでの利用を簡単に実施することができる。
【００２８】
また、マイクロプロセッサとのインターフェース回路がデコーダですみ、内部のステートマシンも演算部のみを管理すれば良いので、インターフェース部分のみならず、全体の回路を簡単にすることができる。
【００２９】
また、命令とデータをメモリアクセス命令に同時に記述できることにより、マイクロプロセッサとコプロセッサ間のインターフェースのオーバーへッドを減少することができる。
【００３０】
さらに、マイクロプロセッサのパイプラインのストールを抑えることもでき、オーバーへッドの減少とともにスループットを向上することができる。
【００３１】
［第２実施例］
次に、本発明の第２実施例を説明する。
図４は本発明の第２実施例を示すコプロセッサのホストインターフェース回路のブロック図である。なお、第２実施例の構成要素が第１実施例と同じものについてはその説明を省略し、異なる点のみ説明する。
【００３２】
図４において、　１１はスタート信号生成部である。
第２実施例の特徴は、ホストアクセス信号Ｓ９と命令Ｓ７を入力とし、命令とデータレジスタへのホストアクセス信号の回数を関連づけて監視し、監視結果によりＦＳＭ部７１へのＦＳＭスタート信号Ｓ１５を生成し、演算部応答信号Ｓ１３によりＦＳＭスタート信号をクリアするスタート信号生成部１１を備えた点である。
【００３３】
次に動作を説明する。
図４において、マイクロプロセッサからホストアクセス信号Ｓ９と命令Ｓ７がスタート信号生成部１１に入力される。命令に対するホストアクセス信号の状態を監視して、監視結果が条件に適合したらスタート信号生成部はＦＳＭスタート信号Ｓ１５を生成する。２入力を必要とする命令の場合、同じ命令を表すデータレジスタ部に、２つのデータが異なるオペランドＳ８に設定された場合に条件に適合する。同じオペランドの場合には条件に適合しないのでＦＳＭスタート信号は生成されない。生成されたＦＳＭスタート信号Ｓ１５はＦＳＭ部７１に入力され、ＦＳＭ部７１のステートマシンが起動される。演算部４を動作させる演算部起動信号Ｓ１２を作成し、演算部４で用いるデータレジスタ部５に書かれたデータを取得するため演算アクセス信号Ｓ１０を生成する。演算部４は演算が終了すると演算部応答信号Ｓ１３をＦＳＭ部７１に返す。この信号を受け取ったＦＳＭ部７１は、演算結果をデータレジスタ部５に書き込むため演算アクセス信号Ｓ１０を生成し、動作を終了する。
【００３４】
図５は図４に示したコプロセッサのホストインターフェース回路を具体化したブロック図である。
図５において、第１ホストアクセス信号Ｓ９１と第２ホストアクセス信号Ｓ９２は、それぞれ２つのオペランドに対応する信号であり、すべての命令に共通である。
【００３５】
以下、動作を説明する。
データレジスタ部５にデータを設定する際、第１ホストアクセス信号Ｓ９１と第２ホストアクセス信号Ｓ９２が生成された場合、スタート信号生成部１１はＦＳＭスタート信号Ｓ１５を生成する。第１ホストアクセス信号Ｓ９１の状態は第１フリップフロップ１１１により記憶される。同様に第２ホストアクセス信号Ｓ９２の状態は第２フリップフロップ１１２により記憶される。第１フリップフロップ１１１と第２フリップフロップ１１２に記憶された、第１ホストアクセス信号Ｓ９１と第２ホストアクセス信号Ｓ９２の信号は、第１フリップフロップ出力Ｓ１１１と第２フリップフロップ出力Ｓ１１２に出力され、デコーダ１１３に入力される。デコーダ１１３には命令Ｓ７も入力されており、命令Ｓ７と第１フリップフロップ出力Ｓ１１１、第２フリップフロップ出力Ｓ１１２をデコードすることで、ＦＳＭスタート信号Ｓ１５の生成条件を監視する。演算部４での命令の実行が終わったことを示す演算部応答信号Ｓ１３は、第１フリップフロップ１１１と第２フリップフロップ１１２のクリアに用いられる。これは同時にＦＳＭスタート信号Ｓ１５のクリアも実行する。これにより命令の実行に必要なアクセスを行なうだけで、ＦＳＭスタート信号の生成を自動で行なうことができるようになる。
【００３６】
本発明の第２実施例に係るコプロセッサのホストインターフェース回路は、上記構成にしたので、命令に必要なデータをすべて設定することにより、自動的に演算処理を行なうことができる。命令とデータをメモリアクセス命令に同時に記述できることに加え、必要な回数のメモリアクセス命令のみで演算処理を開始できるため、スループット向上を図れるという効果を持つ。
【００３７】
［第３実施例］
次に本発明の第３実施例について説明する。
図６は第３実施例を示すコプロセッサのホストインターフェース回路のブロック図である。なお、第３実施例の構成要素が第１、第２実施例と同じものについてはその説明を省略し、異なる点のみ説明する。
【００３８】
図６において、１２はバンクアドレス生成部、５１はバンクデータレジスタ部である。
第３実施例の特徴は、ホストアクセスＳ９とＦＭＳスタート信号Ｓ１５を入力とし、ホストアクセス信号とＦＭＳスタート信号を対応付けて監視し、その監視結果でデータレジスタのバンクを決定すると共に、バンクアドレスＳ１６を生成するバンクアドレス生成部１２と、データバスに接続された内部データバスＳ６を入出力とし、複数のバンクに分割され、バンクアドレスによりバンクが選択され、内部調停部８で生成されたレジスタ選択信号Ｓ１１を、選択されたバンクのレジスタ選択に用いるバンクデータレジスタ部５１を備えた点である。
【００３９】
次に動作を説明する。
マイクロプロセッサからホストアクセス信号Ｓ９と命令Ｓ７がスタート信号生成部１１に入力される。命令に対するホストアクセス信号の状態を監視して、監視結果が条件に適合したらスタート信号生成部はＦＳＭスタート信号Ｓ１５を生成する。生成されたＦＳＭスタート信号は、命令とオペランドＳ８と共に、ＦＳＭ部７１に入力され、ＦＳＭ部７１のステートマシンを起動する。ＦＳＭスタート信号Ｓ１６はホストアクセス信号と共に、バンクアドレス生成部１２にも入力される。バンクアドレス生成部１２では、ＦＳＭスタート信号Ｓ１５とバンクデータレジスタ部５１への読み込みを表すホストアクセス信号を関連づけて管理し、バンクアドレスＳ１６を生成する。この関係が壊れるときには、バンクアドレス生成部１２は新しいバンクアドレスを生成する。つまり、データの書込と演算結果の読み込みは不可分な処理のため、これを管理しプロセスを識別する。このプロセスの識別がバンクアドレスで管理されることになる。また、起動したＦＳＭ部７１は、演算部４を動作させる演算部起動信号Ｓ１２を作成し、演算部４で用いるバンクデータレジスタ部５１に書かれたデータを取得するため、演算アクセス信号Ｓ１０を生成する。演算アクセス信号Ｓ１０は内部調停部８に入力され、ホストアクセス信号と調停されレジスタ選択信号Ｓ１１を生成する。バンクアドレス生成部１２で生成されたバンクアドレスＳ１６によりバンクデータレジスタ部のバンクが決定された後、レジスタ選択信号はバンクデータレジスタ部５１に作用する。演算部４は演算が終了すると演算部応答信号Ｓ１３をＦＳＭ部７１に返す。この信号を受け取ったＦＳＭ部７１は、演算結果をデータレジスタ部５に書き込むため演算アクセス信号を生成し、動作を終了する。
【００４０】
図７は図６に示したコプロセッサのホストインターフェース回路を具体化したブロック図である。
【００４１】
以下、動作を説明する。
第１ホストアクセス信号Ｓ９１と第２ホストアクセス信号Ｓ９２は、それぞれ２つのオペランドに対応する信号であり、すべての命令に共通である。データレジスタ部にデータを設定する際、第１ホストアクセス信号と第２ホストアクセス信号が生成された場合、スタート信号生成部１１はＦＳＭスタート信号Ｓ１５を生成する。第１ホストアクセス信号の状態は第１フリップフロップ１１１により記憶される。同様に第２ホストアクセス信号の状態は第２フリップフロップ１１２により記憶される。第１フリップフロップと第２フリップフロップに記憶された、第１ホストアクセス信号と第２ホストアクセス信号の信号は、第１フリップフロップ出力Ｓ１１１と第２フリップフロップ出力Ｓ１１２に出力して、デコーダ１１３に入力される。デコーダには命令Ｓ７も入力されており、命令と第１フリップフロップ出力、第２フリップフロップ出力をデコードすることで、ＦＳＭスタート信号の生成条件を監視する。演算部での命令の実行が終わったことを示す演算部応答信号Ｓ１３は、第１フリップフロップと第２フリップフロップのクリアに用いられる。これは同時にＦＳＭスタート信号のクリアも実行する。以上の動作は図５と同等である。スタート信号生成部で作成されたＦＳＭスタート信号は、マイクロプロセッサからのバンクデータレジスタ部への読みを表す、第３ホストアクセス信号Ｓ９３と共に、バンクアドレス生成部１２に入力される。バンクアドレス生成部にはアップダウン動作を行なう、バンク数で決定されるｎビットのカウンタ１２１を備える。ＦＳＭスタート信号はアップ端子に、ホストアクセス信号３はダウン端子にそれぞれ接続する。ＦＳＭスタート信号が引き続き起る場合は、最初と次のＦＳＭスタート信号では出力である、バンクアドレスＳ１６が異なる。この回路構成ではバンクアドレスをスタックで管理していることになり、異なるプロセスに対応する。
【００４２】
本発明の第３実施例に係るコプロセッサのホストインターフェース回路は、上記構成にしたので、マイクロプロセッサからのアクセスをプロセスに関連づけ管理でき、特別な命令を用意せずにマルチタスク環境で利用することができる。また、メモリにコンテキストを書出す必要がないので、コンテキストスイッチスループット向上を図れるという効果がある。
【００４３】
【発明の効果】
以上述べたように、本発明によれば以下の効果がある。
請求項１記載のコプロセッサのホストインターフェース回路は、アドレスバスと接続された、入力方向のパスとなる内部アドレスバスと、ストローブバスに接続された、入力方向のパスとなる内部ストローブバスと、内部アドレスバス上のアドレスにエンコードされた情報から、命令とオペランドを生成するアドレス命令デコーダ部と、内部アドレスバス上のアドレスと内部ストローブバス上のストローブ信号により、マイクロプロセッサからデータレジスタ部と制御レジスタ部への読み書き要求をデコードした、ホストアクセス信号を生成するホストデコーダ部と、演算部４の制御を行なうＦＳＭ部７１を備える構成にしたので、コプロセッサがマイクロプロセッサから見ると受動的なデバイスとしてとらえられると共に、単純なメモリと同等の回路で実現できるため、いろいろなマイクロプロセッサでの利用を簡単で実施することができる。
また、マイクロプロセッサとのインターフェース回路がデコーダですみ、内部のステートマシンも演算部のみを管理すれば良いので、インターフェース部分のみならず、全体の回路を簡単にすることができる。
さらに、命令とデータをメモリアクセス命令に同時に記述できることにより、マイクロプロセッサとコプロセッサ間のインターフェースのオーバーへッドを減少できる。さらに、マイクロプロセッサのパイプラインのストールを抑えることもでき、オーバーへッドの減少とともにスループットを向上できるという効果がある。
【００４４】
請求項２記載のコプロセッサのホストインターフェース回路は、ホストアクセス信号と命令を入力とし、命令とデータレジスタへのホストアクセス信号の回数を関連づけて監視し、監視結果によりＦＳＭ部へのＦＳＭスタート信号を生成し、演算部応答信号によりＦＳＭスタート信号をクリアするスタート信号生成部を備える構成にしたので、命令に必要なデータをすべて設定することにより、自動的に演算処理を行なうことができる。
また、命令とデータをメモリアクセス命令に同時に記述できることに加え、必要な回数のメモリアクセス命令のみで演算処理を開始できるため、スループット向上を図れるという効果がある。
【００４５】
請求項３記載のコプロセッサのホストインターフェース回路は、ホストアクセスとＦＭＳスタート信号を入力とし、ホストアクセス信号とＦＭＳスタート信号を対応付けて監視し、監視結果でデータレジスタのバンクを決定する、バンクアドレスを生成するバンクアドレス生成部と、データバスに接続された内部データバスを入出力とし、複数のバンクに分割され、バンクアドレスによりバンクが選択され、内部調停部で生成されたレジスタ選択信号を、選択されたバンクのレジスタ選択に用いるバンクデータレジスタ部を備える構成にしたので、マイクロプロセッサからのアクセスをプロセスに関連づけ管理でき、特別な命令を用意せずにマルチタスク環境で利用することができる。
また、メモリにコンテキストを書出す必要がないので、コンテキストスイッチスループット向上を図れるという効果がある。
【図面の簡単な説明】
【図１】本発明の第１実施例を示すコプロセッサのホストインターフェース回路のブロック図である。
【図２】第１実施例を示すメモリマップの説明図である。
【図３】第１実施例を示すプログラム例である。
【図４】本発明の第２実施例を示すコプロセッサのホストインターフェース回路のブロック図である。
【図５】図４に示したコプロセッサのホストインターフェース回路を具体化したブロック図である。
【図６】本発明の第３実施例を示すコプロセッサのホストインターフェース回路のブロック図である。
【図７】図６に示したコプロセッサのホストインターフェース回路を具体化したブロック図である。
【図８】従来のコプロセッサのホストインターフェース回路のブロック図である。
【図９】従来のコプロセッサでのメモリマップの説明図である。
【符号の説明】
１：マイクロプロセッサ
２：コプロセッサ
３：メモリ
４：演算部
５：データレジスタ部
５１：バンクデータレジスタ部
６：制御レジスタ部
７：マイクロプログラム部
７１：ＦＳＭ部
８：内部調停部
９：ホストデコーダ部
９１：ホストでコーダ部
１０：命令デコーダ部
１１：スタート信号生成部
１１１：第１フリップフロップ
１１２：第２フリップフロップ
１１３：デコーダ
１２：バンクアドレス生成部
１２１：カウンタ
１０１：アドレス命令デコーダ部
Ｓ１：アドレスバス
Ｓ２：ストローブバス
Ｓ３：データバス
Ｓ４１：内部アドレスバス
Ｓ５１：内部ストローブバス
Ｓ６：内部データバス
Ｓ７：命令
Ｓ８：オペランド
Ｓ９：ホストアクセス信号
Ｓ９１：第１ホストアクセス信号
Ｓ９２：第２ホストアクセス信号
Ｓ９３：第３ホストアクセス信号
Ｓ１０：演算アクセス信号
Ｓ１１：レジスタ選択信号
Ｓ１２：演算部起動信号
Ｓ１３：演算部応答信号
Ｓ１４：制御情報
Ｓ１５：ＦＳＭスタート信号
Ｓ１６：バンクアドレス
Ｓ１１１：第１フリップフロップ出力
Ｓ１１２：第２フリップフロップ出力
Ｆ１：メモリマップ
Ｆ１１：制御レジスタ
Ｆ１２：結果用データレジスタ
Ｆ１４：命令１用データレジスタ１
Ｆ１５：命令１用データレジスタ２
Ｆ１６：命令２用データレジスタ１
Ｆ１７：命令２用データレジスタ２
Ｆ１８：命令３用データレジスタ１
Ｆ１９：命令３用データレジスタ２
Ｆ２０：命令４用データレジスタ１
【図１】
2004070819.tif 000003
【図２】
2004070819.tif 000004
【図３】
2004070819.tif 000005
【図４】
2004070819.tif 000006
【図５】
2004070819.tif 000007
【図６】
2004070819.tif 000008
【図７】
2004070819.tif 000009
【図８】
2004070819.tif 000010
【図９】
2004070819.tif 000011