JP2004070819A - コプロセッサのホストインターフェース回路 - Google Patents
コプロセッサのホストインターフェース回路 Download PDFInfo
- Publication number
- JP2004070819A JP2004070819A JP2002231577A JP2002231577A JP2004070819A JP 2004070819 A JP2004070819 A JP 2004070819A JP 2002231577 A JP2002231577 A JP 2002231577A JP 2002231577 A JP2002231577 A JP 2002231577A JP 2004070819 A JP2004070819 A JP 2004070819A
- Authority
- JP
- Japan
- Prior art keywords
- unit
- bus
- address
- coprocessor
- internal
- 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
Landscapes
- Advance Control (AREA)
- Multi Processors (AREA)
Abstract
【課題】マイクロプロセッサとの依存性を低く抑え、ハードウェアとソフトウェアの両方のポータビリティを上げることが可能なコプロセッサのホストインターフェース回路を提供する。
【解決手段】コプロセッサのホストインターフェース回路において、内部アドレスバスS41と、内部ストローブバスS51と、内部アドレスバスS41上のアドレスにエンコードされた情報から、命令S7とオペランドS8を生成するアドレス命令デコーダ部101と、内部アドレスバスS41上のアドレスと内部ストローブバスS51上のストローブ信号により、マイクロプロセッサ1からデータレジスタ部5と制御レジスタ部6への読み書き要求をデコードした、ホストアクセス信号S9を生成するホストデコーダ部91と、演算部4の制御を行なうFSM部71を備えた。
【選択図】 図1
【解決手段】コプロセッサのホストインターフェース回路において、内部アドレスバスS41と、内部ストローブバスS51と、内部アドレスバスS41上のアドレスにエンコードされた情報から、命令S7とオペランドS8を生成するアドレス命令デコーダ部101と、内部アドレスバスS41上のアドレスと内部ストローブバスS51上のストローブ信号により、マイクロプロセッサ1からデータレジスタ部5と制御レジスタ部6への読み書き要求をデコードした、ホストアクセス信号S9を生成するホストデコーダ部91と、演算部4の制御を行なうFSM部71を備えた。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は、マイクロプロセッサの補助的な処理を行なうコプロセッサのインターフェース回路に関するものである。
【0002】
【従来の技術】
従来、マイクロプロセッサの補助的な処理を行なうコプロセッサのインターフェース回路は、図8のようになっている。
図8において、マイクロプロセッサ1、コプロセッサ2およびメモリ3がアドレスバスS1、ストローブバスS2およびデータバスS3により接続されている。メモリ3上にはマイクロプロセッサ1とコプロセッサ2の命令がそれぞれ格納されている。コプロセッサ2内部では、アドレスバスS1が内部アドレスバスS4と接続され、ストローブバスS2が内部ストローブバスS5と接続され、またデータバスS3が内部データバスS6と接続されている。これらの内部バスは双方向のバスである。
【0003】
次に動作を説明する。
マイクロプロセッサ1はメモリ3から命令を読み込み実行を行なう。このとき命令がコプロセッサ命令の場合、マイクロプロセッサ1はデータバスS3を通してコプロセッサ命令をコプロセッサ2に転送する。必要であれば同時にストローブバスS2にも制御信号を乗せコプロセッサ2に転送する。データバスS3上のコプロセッサ命令は内部データバスS6を経由して、命令デコーダ部10に入力される。
【0004】
命令デコーダ部10において、コプロセッサ命令は、命令S7とオペランドS8にデコードされる。命令S7は演算部4と同時に、コプロセッサ2の制御を行なうマイクロプログラム部7にも入力される。
【0005】
マイクロプログラム部7は演算部4で実行する命令に必要となるデータを、メモリからデータレジスタ5に転送するため、アドレスとストローブ信号を生成する。これらの信号は内部アドレスバスS4と内部ストローブバスS5から、アドレスバスS1とストローブバスS2を経由してメモリに送信される。
【0006】
この時マイクロプログラム部7はホストインターフェース部9が誤って動作しないように、ホストインターフェースイネーブル信号S91を作成し、ホストインターフェース部9の動作を禁止する。
【0007】
メモリ3はコプロセッサ2に要求されたデータを、データバスS3に乗せる。データバスS3から内部データバスS6上に現れたデータを、データレジスタ部5に一時的に記憶するために、オペランドに適合するように演算アクセス信号S10を生成する。演算アクセス信号S10は内部調停部8に入力そして調停され、レジスタ選択信号S11により、所定のデータレジスタ部5に内部データバスS6上のデータが書き込まれる。データがデータレジスタ部5に書き込まれた後、マイクロプログラム部7は演算部起動信号S12を生成して、演算部4を起動させる。
【0008】
演算部4は命令に従いデータの演算を行ない、演算結果と演算部応答信号S13を生成する。演算部応答信号S13を受け取ったマイクロプログラム部7は、演算結果をデータレジスタ部5に書き込むため、オペランドに適合するように演算アクセス信号S10を生成する。マイクロプロセッサ1からデータレジスタ部5と制御レジスタ6のアクセスが生じる場合、アドレスバスS1とストローブバスS2の信号が、内部アドレスバスS4と内部ストローブバスS5を経由してホストインターフェース部9に入力され、ホストアクセス信号S9を生成する。ホストアクセス信号S9は内部調停部8で調停され、レジスタ選択信号S11により、所定のデータレジスタ部5もしくは制御レジスタ部6が選択される。制御レジスタ部6の制御情報S14は、演算部4やマイクロプログラム部7の動作モード等の決定に利用される。
【0009】
図9は従来のデータレジスタ部と制御レジスタ部のメモリマップF1の説明図である。
この例では最大2入力の演算を行い、一つの演算結果を生成するものである。演算部4の入力データは、データレジスタ1(F12)とデータレジスタ2(F13)に一時的に記憶される。0x00と0x04にそれぞれマッピングされ、すべての命令において共通に利用される。演算部4の出力データは、結果用データレジスタ(F14)に記憶される。これは0x08にマッピングされている。また、演算部4とマイクロプログラム部7の動作モードの決定を行なう制御レジスタ(F11)が0x0Cにマッピングされている。これらのアドレスはコプロセッサ2が接続されているベースアドレスからオフセットアドレスであり、マイクロプロセッサ1はベースアドレスとオフセットアドレスが足したものをアドレスとして利用し、コプロセッサ2のレジスタ群にアクセスする。
【0010】
【発明が解決しようとする課題】
ところが、従来技術では以下の問題があった。
(1)コプロセッサ2は能動的に動作せず、マイクロプロセッサ1から命令を受け取り、それをトリガーにして受動的に動作する。そのため、マイクロプロセッサ1とコプロセッサ2の間に、専用のプロトコルを必要とする。そのため、コプロセッサ2は主となるマイクロプロセッサ1に強く依存するので、他のマイクロプロセッサで簡単に利用することができなかった。また、同時に、この依存性のためプログラムをアセンブラで記述する必要があり、ソフトウェアの立場からも、他のマイクロプロセッサで簡単に利用することが出来なかった。さらに、マイクロプロセッサ1から命令を受け取った後、コプロセッサ2は能動的に命令の実行にデータを取得しなければならないため、マイクロプログラム部7のような複雑な回路や、双方向の内部バスを必要とするなど、インターフェースの回路が複雑で、かつ設計が困難であった。
【0011】
(2)それから、マイクロプロセッサ1とコプロセッサ2の間にあるプロトコルによるオーバヘッドのため、スループットの低下が生じるという問題がった。
【0012】
(3)そして、マルチタスク環境でコプロセッサを利用する際、コンテキストスイッチに対応するため、コプロセッサのコンテキストをセーブする命令を持つが。メモリにコンテキストを書出すため、コンテキストスイッチでのスループットの低下を生じるという問題があった。
【0013】
そこで、上記課題を解決するために、本発明の第1の目的は、どのようなマイクロプロセッサでも簡単に利用できるように、コプロセッサとしての性格を維持したまま、マイクロプロセッサとの依存性を低く抑え、ハードウェアとソフトウェアの両方のポータビリティを上げることが可能なコプロセッサのホストインターフェース回路を提供することにある。
【0014】
また、本発明の第2の目的は、マイクロプロセッサとコプロセッサの間にあるプロトコルにより生じていたオーバヘッドを減少させ、スループットを上げることが可能なコプロセッサのホストインターフェース回路を提供することにある。
【0015】
さらに、本発明の第3の目的は、マルチタスク環境でコプロセッサを利用してもスループットを落さないよう、コンテキストスイッチの負荷を低減することが可能なコプロセッサのホストインターフェース回路を提供することにある。
【0016】
【課題を解決するための手段】
上記問題を解決するため、請求項1の本発明は、アドレスバス、ストローブバスおよびデータバスによりマイクロプロセッサとメモリに接続されたコプロセッサであり、命令に従ってデータを演算する演算部と、データを書き込むデータレジスタ部と、当該演算部などの内部の演算の動作モードを決定する制御レジスタ部と、前記データレジスタ部と前記制御レジスタ部の使用を、前記マイクロプロセッサまたは前記コプロセッサの何れかから選択する内部調停部を備えたコプロセッサのインターフェース回路において、前記アドレスバスと接続された、入力方向のパスとなる内部アドレスバスと、前記ストローブバスに接続された、入力方向のパスとなる内部ストローブバスと、前記内部アドレスバス上のアドレスにエンコードされた情報から、命令とオペランドを生成するアドレス命令デコーダ部と、前記内部アドレスバス上のアドレスと前記内部ストローブバス上のストローブ信号により、マイクロプロセッサから前記データレジスタ部と前記制御レジスタ部への読み書き要求をデコードした、ホストアクセス信号を生成するホストデコーダ部と、前記演算部の制御を行なうFSM部を備えたものである。
【0017】
また、請求項2の本発明は、請求項1記載のコプロセッサのホストインターフェース回路において、ホストアクセス信号(S9)と命令(S7)を入力とし、命令とデータレジスタへのホストアクセス信号の回数を関連づけて監視し、監視結果によりFSM部へのFSMスタート信号を生成し、演算部応答信号によりFSMスタート信号をクリアするスタート信号生成部を備えたものである。
【0018】
さらに、請求項3の本発明は、請求項2記載のコプロセッサのホストインターフェース回路において、ホストアクセスとFMSスタート信号を入力とし、ホストアクセス信号とFMSスタート信号を対応付けて監視し、監視結果でデータレジスタのバンクを決定する、バンクアドレスを生成するバンクアドレス生成部と、データバスに接続された内部データバスを入出力とし、複数のバンクに分割され、バンクアドレスによりバンクが選択され、内部調停部で生成されたレジスタ選択信号を、選択されたバンクのレジスタ選択に用いるバンクデータレジスタ部を備えたものである。
【0019】
【発明の実施の形態】
本発明の実施例を図に基づいて説明する。
【0020】
[第1実施例]
図1は本発明の第1実施例を示すコプロセッサのホストインターフェース回路のブロック図、図2は第1実施例によるメモリマップの説明図、図3は第1実施例によるメモリマップのコプロセッサで演算を行なわせるC言語のプログラム例である。
【0021】
まず、第1実施例の理解を容易にするため、図1の説明の前に、図1のコプロセッサのメモリマップF1の例を示す図2を先に説明する。
本コプロセッサは2入力の命令を3つと1入力の命令をひとつ持つものである。オフセットアドレスの0x00に制御レジスタF11が、0x04に結果用データレジスタF12がマッピングされ、すべての命令の演算結果はこの結果用データレジスタに格納される。命令1の入力となる命令1用データレジスタ1(F14)と命令1用データレジスタ2(F15)が0x10と0x14に、命令2の入力となる命令2用データレジスタ1(F16)と命令2用データレジスタ2(F17)が0x18と0x1Cに、命令3の入力となる命令3用データレジスタ1(F18)と命令3用データレジスタ2(F19)が0x20と0x24に、命令4の入力となる命令4用データレジスタ1(F20)が0x28にそれぞれマッピングされている。0x08から0x0fは何もマッピングされていない領域(F13)である。8ビットのオフセットアドレスに対して、上位5ビットが命令を、下位3ビットが命令に対するレジスタの選択、つまりオペランドをエンコードしている。すなわちこのアドレスにエンコードされた情報をデコードできればコプロセッサが命令を理解できる。
【0022】
次に、このメモリマップのコプロセッサで、演算を行なわせるC言語の例を図3に示す。
#define文ではアドレスとインストラクションを定義している。インストラクションは命令とオペランドの定義を行なっている。exec_inst1()は命令1に対するデータ設定を、get_result()は命令実行後の結果取得を、それぞれマクロとして定義している。関数instruction1()は命令1を実行し演算結果を得るものである。data1とdata2をexec_inst1()により設定後、get_result()により結果を取得する。この例でわかるように、BASEで定義されるベースアドレスのみが、マイクロプロセッサを利用したシステムで固有であり、このBASE以外はどのシステムでも共通に利用できるものである。そのため、ソフトウェア的にポータビリティに優れたものといえる。さらに、コンパイラ的に処理する必要がある構文はポインタだけであり、コンパイラに特別なコプロセッサ用の拡張を必要としないため、開発環境のポータビリティにも優れているといえる。
【0023】
上記を踏まえた上で図1の本発明の実施例を説明する。ここで、マイクロプロセッサ1の命令はメモリ3に格納されている。コプロセッサ2を動作させる命令は、図2のメモリマップを実現するように、マイクロプロセッサ1のメモリアクセス命令を利用して記述されている。なお、本発明の構成要素が従来と同じものについてはその説明を省略し、異なる点のみ説明する。
【0024】
図1において、71はFSM部(finite state machineの略)、91はホストデコーダ部、101はアドレス命令デコーダ部である。
本発明が従来と異なる点は、コプロセッサのインターフェース回路において、アドレスバスS1と接続された、入力方向のパスとなる内部アドレスバスS41と、ストローブバスS2に接続された、入力方向のパスとなる内部ストローブバスS51と、内部アドレスバスS41上のアドレスにエンコードされた情報から、命令S7とオペランドS8を生成するアドレス命令デコーダ部101と、内部アドレスバスS41上のアドレスと内部ストローブバスS51上のストローブ信号により、マイクロプロセッサ1からデータレジスタ部5と制御レジスタ部6への読み書き要求をデコードした、ホストアクセス信号S9を生成するホストデコーダ部91と、演算部4の制御を行なうFSM部71を備えた点である。
【0025】
次に動作を説明する。
図1において、命令1がエンコードされたアドレスでコプロセッサ2がアクセスされた場合、アドレスバスS1と接続された内部アドレスバスS4から、アドレス命令デコーダ部101にアドレスが送られ、命令S7とオペランドS8が生成される。同時に、内部アドレスバスS41と、ストローブバスS2に接続された内部ストローブバスS51は、共にホストデコーダ部91に送られ、オペランドに相当するデータレジスタ部5に対する、ホストアクセス信号S9を生成する。この場合データのセットなので書き込み信号となる。ホストアクセス信号S9は内部調停部8に転送され、FSM部71の演算アクセス信号S10と調停され、レジスタ選択信号S11が生成される。データレジスタ部5に書き込みたいデータが、データバスに接続された内部データバスS6を経由して、オペランドで指定されたデータレジスタ部5に書き込まれる。
【0026】
本実施例では、制御レジスタ部6上の制御情報S14中の1ビットを利用して、FSM部71を起動する。そのため、制御レジスタ部6のビットをセットする。この情報はFSM部71に接続されているので、FSM部71は動作を開始し、演算部4を起動する演算部起動信号S12を作成する。この演算部起動信号S12により演算部4は実行を開始し、データレジスタ部5のデータを利用して演算を行ない、演算結果をデータレジスタ部5に書き戻すと同時に演算部応答信号S13を生成する。この信号はFSM部71に入力され、FSM部71の動作が完了する。
【0027】
本発明の第1実施例に係るコプロセッサのホストインターフェース回路は上記構成にしたので、コプロセッサがマイクロプロセッサから見ると、受動的なデバイスとしてとらえられると共に、単純なメモリと同等の回路で実現できるため、いろいろなマイクロプロセッサでの利用を簡単に実施することができる。
【0028】
また、マイクロプロセッサとのインターフェース回路がデコーダですみ、内部のステートマシンも演算部のみを管理すれば良いので、インターフェース部分のみならず、全体の回路を簡単にすることができる。
【0029】
また、命令とデータをメモリアクセス命令に同時に記述できることにより、マイクロプロセッサとコプロセッサ間のインターフェースのオーバーへッドを減少することができる。
【0030】
さらに、マイクロプロセッサのパイプラインのストールを抑えることもでき、オーバーへッドの減少とともにスループットを向上することができる。
【0031】
[第2実施例]
次に、本発明の第2実施例を説明する。
図4は本発明の第2実施例を示すコプロセッサのホストインターフェース回路のブロック図である。なお、第2実施例の構成要素が第1実施例と同じものについてはその説明を省略し、異なる点のみ説明する。
【0032】
図4において、 11はスタート信号生成部である。
第2実施例の特徴は、ホストアクセス信号S9と命令S7を入力とし、命令とデータレジスタへのホストアクセス信号の回数を関連づけて監視し、監視結果によりFSM部71へのFSMスタート信号S15を生成し、演算部応答信号S13によりFSMスタート信号をクリアするスタート信号生成部11を備えた点である。
【0033】
次に動作を説明する。
図4において、マイクロプロセッサからホストアクセス信号S9と命令S7がスタート信号生成部11に入力される。命令に対するホストアクセス信号の状態を監視して、監視結果が条件に適合したらスタート信号生成部はFSMスタート信号S15を生成する。2入力を必要とする命令の場合、同じ命令を表すデータレジスタ部に、2つのデータが異なるオペランドS8に設定された場合に条件に適合する。同じオペランドの場合には条件に適合しないのでFSMスタート信号は生成されない。生成されたFSMスタート信号S15はFSM部71に入力され、FSM部71のステートマシンが起動される。演算部4を動作させる演算部起動信号S12を作成し、演算部4で用いるデータレジスタ部5に書かれたデータを取得するため演算アクセス信号S10を生成する。演算部4は演算が終了すると演算部応答信号S13をFSM部71に返す。この信号を受け取ったFSM部71は、演算結果をデータレジスタ部5に書き込むため演算アクセス信号S10を生成し、動作を終了する。
【0034】
図5は図4に示したコプロセッサのホストインターフェース回路を具体化したブロック図である。
図5において、第1ホストアクセス信号S91と第2ホストアクセス信号S92は、それぞれ2つのオペランドに対応する信号であり、すべての命令に共通である。
【0035】
以下、動作を説明する。
データレジスタ部5にデータを設定する際、第1ホストアクセス信号S91と第2ホストアクセス信号S92が生成された場合、スタート信号生成部11はFSMスタート信号S15を生成する。第1ホストアクセス信号S91の状態は第1フリップフロップ111により記憶される。同様に第2ホストアクセス信号S92の状態は第2フリップフロップ112により記憶される。第1フリップフロップ111と第2フリップフロップ112に記憶された、第1ホストアクセス信号S91と第2ホストアクセス信号S92の信号は、第1フリップフロップ出力S111と第2フリップフロップ出力S112に出力され、デコーダ113に入力される。デコーダ113には命令S7も入力されており、命令S7と第1フリップフロップ出力S111、第2フリップフロップ出力S112をデコードすることで、FSMスタート信号S15の生成条件を監視する。演算部4での命令の実行が終わったことを示す演算部応答信号S13は、第1フリップフロップ111と第2フリップフロップ112のクリアに用いられる。これは同時にFSMスタート信号S15のクリアも実行する。これにより命令の実行に必要なアクセスを行なうだけで、FSMスタート信号の生成を自動で行なうことができるようになる。
【0036】
本発明の第2実施例に係るコプロセッサのホストインターフェース回路は、上記構成にしたので、命令に必要なデータをすべて設定することにより、自動的に演算処理を行なうことができる。命令とデータをメモリアクセス命令に同時に記述できることに加え、必要な回数のメモリアクセス命令のみで演算処理を開始できるため、スループット向上を図れるという効果を持つ。
【0037】
[第3実施例]
次に本発明の第3実施例について説明する。
図6は第3実施例を示すコプロセッサのホストインターフェース回路のブロック図である。なお、第3実施例の構成要素が第1、第2実施例と同じものについてはその説明を省略し、異なる点のみ説明する。
【0038】
図6において、12はバンクアドレス生成部、51はバンクデータレジスタ部である。
第3実施例の特徴は、ホストアクセスS9とFMSスタート信号S15を入力とし、ホストアクセス信号とFMSスタート信号を対応付けて監視し、その監視結果でデータレジスタのバンクを決定すると共に、バンクアドレスS16を生成するバンクアドレス生成部12と、データバスに接続された内部データバスS6を入出力とし、複数のバンクに分割され、バンクアドレスによりバンクが選択され、内部調停部8で生成されたレジスタ選択信号S11を、選択されたバンクのレジスタ選択に用いるバンクデータレジスタ部51を備えた点である。
【0039】
次に動作を説明する。
マイクロプロセッサからホストアクセス信号S9と命令S7がスタート信号生成部11に入力される。命令に対するホストアクセス信号の状態を監視して、監視結果が条件に適合したらスタート信号生成部はFSMスタート信号S15を生成する。生成されたFSMスタート信号は、命令とオペランドS8と共に、FSM部71に入力され、FSM部71のステートマシンを起動する。FSMスタート信号S16はホストアクセス信号と共に、バンクアドレス生成部12にも入力される。バンクアドレス生成部12では、FSMスタート信号S15とバンクデータレジスタ部51への読み込みを表すホストアクセス信号を関連づけて管理し、バンクアドレスS16を生成する。この関係が壊れるときには、バンクアドレス生成部12は新しいバンクアドレスを生成する。つまり、データの書込と演算結果の読み込みは不可分な処理のため、これを管理しプロセスを識別する。このプロセスの識別がバンクアドレスで管理されることになる。また、起動したFSM部71は、演算部4を動作させる演算部起動信号S12を作成し、演算部4で用いるバンクデータレジスタ部51に書かれたデータを取得するため、演算アクセス信号S10を生成する。演算アクセス信号S10は内部調停部8に入力され、ホストアクセス信号と調停されレジスタ選択信号S11を生成する。バンクアドレス生成部12で生成されたバンクアドレスS16によりバンクデータレジスタ部のバンクが決定された後、レジスタ選択信号はバンクデータレジスタ部51に作用する。演算部4は演算が終了すると演算部応答信号S13をFSM部71に返す。この信号を受け取ったFSM部71は、演算結果をデータレジスタ部5に書き込むため演算アクセス信号を生成し、動作を終了する。
【0040】
図7は図6に示したコプロセッサのホストインターフェース回路を具体化したブロック図である。
【0041】
以下、動作を説明する。
第1ホストアクセス信号S91と第2ホストアクセス信号S92は、それぞれ2つのオペランドに対応する信号であり、すべての命令に共通である。データレジスタ部にデータを設定する際、第1ホストアクセス信号と第2ホストアクセス信号が生成された場合、スタート信号生成部11はFSMスタート信号S15を生成する。第1ホストアクセス信号の状態は第1フリップフロップ111により記憶される。同様に第2ホストアクセス信号の状態は第2フリップフロップ112により記憶される。第1フリップフロップと第2フリップフロップに記憶された、第1ホストアクセス信号と第2ホストアクセス信号の信号は、第1フリップフロップ出力S111と第2フリップフロップ出力S112に出力して、デコーダ113に入力される。デコーダには命令S7も入力されており、命令と第1フリップフロップ出力、第2フリップフロップ出力をデコードすることで、FSMスタート信号の生成条件を監視する。演算部での命令の実行が終わったことを示す演算部応答信号S13は、第1フリップフロップと第2フリップフロップのクリアに用いられる。これは同時にFSMスタート信号のクリアも実行する。以上の動作は図5と同等である。スタート信号生成部で作成されたFSMスタート信号は、マイクロプロセッサからのバンクデータレジスタ部への読みを表す、第3ホストアクセス信号S93と共に、バンクアドレス生成部12に入力される。バンクアドレス生成部にはアップダウン動作を行なう、バンク数で決定されるnビットのカウンタ121を備える。FSMスタート信号はアップ端子に、ホストアクセス信号3はダウン端子にそれぞれ接続する。FSMスタート信号が引き続き起る場合は、最初と次のFSMスタート信号では出力である、バンクアドレスS16が異なる。この回路構成ではバンクアドレスをスタックで管理していることになり、異なるプロセスに対応する。
【0042】
本発明の第3実施例に係るコプロセッサのホストインターフェース回路は、上記構成にしたので、マイクロプロセッサからのアクセスをプロセスに関連づけ管理でき、特別な命令を用意せずにマルチタスク環境で利用することができる。また、メモリにコンテキストを書出す必要がないので、コンテキストスイッチスループット向上を図れるという効果がある。
【0043】
【発明の効果】
以上述べたように、本発明によれば以下の効果がある。
請求項1記載のコプロセッサのホストインターフェース回路は、アドレスバスと接続された、入力方向のパスとなる内部アドレスバスと、ストローブバスに接続された、入力方向のパスとなる内部ストローブバスと、内部アドレスバス上のアドレスにエンコードされた情報から、命令とオペランドを生成するアドレス命令デコーダ部と、内部アドレスバス上のアドレスと内部ストローブバス上のストローブ信号により、マイクロプロセッサからデータレジスタ部と制御レジスタ部への読み書き要求をデコードした、ホストアクセス信号を生成するホストデコーダ部と、演算部4の制御を行なうFSM部71を備える構成にしたので、コプロセッサがマイクロプロセッサから見ると受動的なデバイスとしてとらえられると共に、単純なメモリと同等の回路で実現できるため、いろいろなマイクロプロセッサでの利用を簡単で実施することができる。
また、マイクロプロセッサとのインターフェース回路がデコーダですみ、内部のステートマシンも演算部のみを管理すれば良いので、インターフェース部分のみならず、全体の回路を簡単にすることができる。
さらに、命令とデータをメモリアクセス命令に同時に記述できることにより、マイクロプロセッサとコプロセッサ間のインターフェースのオーバーへッドを減少できる。さらに、マイクロプロセッサのパイプラインのストールを抑えることもでき、オーバーへッドの減少とともにスループットを向上できるという効果がある。
【0044】
請求項2記載のコプロセッサのホストインターフェース回路は、ホストアクセス信号と命令を入力とし、命令とデータレジスタへのホストアクセス信号の回数を関連づけて監視し、監視結果によりFSM部へのFSMスタート信号を生成し、演算部応答信号によりFSMスタート信号をクリアするスタート信号生成部を備える構成にしたので、命令に必要なデータをすべて設定することにより、自動的に演算処理を行なうことができる。
また、命令とデータをメモリアクセス命令に同時に記述できることに加え、必要な回数のメモリアクセス命令のみで演算処理を開始できるため、スループット向上を図れるという効果がある。
【0045】
請求項3記載のコプロセッサのホストインターフェース回路は、ホストアクセスとFMSスタート信号を入力とし、ホストアクセス信号とFMSスタート信号を対応付けて監視し、監視結果でデータレジスタのバンクを決定する、バンクアドレスを生成するバンクアドレス生成部と、データバスに接続された内部データバスを入出力とし、複数のバンクに分割され、バンクアドレスによりバンクが選択され、内部調停部で生成されたレジスタ選択信号を、選択されたバンクのレジスタ選択に用いるバンクデータレジスタ部を備える構成にしたので、マイクロプロセッサからのアクセスをプロセスに関連づけ管理でき、特別な命令を用意せずにマルチタスク環境で利用することができる。
また、メモリにコンテキストを書出す必要がないので、コンテキストスイッチスループット向上を図れるという効果がある。
【図面の簡単な説明】
【図1】本発明の第1実施例を示すコプロセッサのホストインターフェース回路のブロック図である。
【図2】第1実施例を示すメモリマップの説明図である。
【図3】第1実施例を示すプログラム例である。
【図4】本発明の第2実施例を示すコプロセッサのホストインターフェース回路のブロック図である。
【図5】図4に示したコプロセッサのホストインターフェース回路を具体化したブロック図である。
【図6】本発明の第3実施例を示すコプロセッサのホストインターフェース回路のブロック図である。
【図7】図6に示したコプロセッサのホストインターフェース回路を具体化したブロック図である。
【図8】従来のコプロセッサのホストインターフェース回路のブロック図である。
【図9】従来のコプロセッサでのメモリマップの説明図である。
【符号の説明】
1:マイクロプロセッサ
2:コプロセッサ
3:メモリ
4:演算部
5:データレジスタ部
51:バンクデータレジスタ部
6:制御レジスタ部
7:マイクロプログラム部
71:FSM部
8:内部調停部
9:ホストデコーダ部
91:ホストでコーダ部
10:命令デコーダ部
11:スタート信号生成部
111:第1フリップフロップ
112:第2フリップフロップ
113:デコーダ
12:バンクアドレス生成部
121:カウンタ
101:アドレス命令デコーダ部
S1:アドレスバス
S2:ストローブバス
S3:データバス
S41:内部アドレスバス
S51:内部ストローブバス
S6:内部データバス
S7:命令
S8:オペランド
S9:ホストアクセス信号
S91:第1ホストアクセス信号
S92:第2ホストアクセス信号
S93:第3ホストアクセス信号
S10:演算アクセス信号
S11:レジスタ選択信号
S12:演算部起動信号
S13:演算部応答信号
S14:制御情報
S15:FSMスタート信号
S16:バンクアドレス
S111:第1フリップフロップ出力
S112:第2フリップフロップ出力
F1:メモリマップ
F11:制御レジスタ
F12:結果用データレジスタ
F14:命令1用データレジスタ1
F15:命令1用データレジスタ2
F16:命令2用データレジスタ1
F17:命令2用データレジスタ2
F18:命令3用データレジスタ1
F19:命令3用データレジスタ2
F20:命令4用データレジスタ1
【発明の属する技術分野】
本発明は、マイクロプロセッサの補助的な処理を行なうコプロセッサのインターフェース回路に関するものである。
【0002】
【従来の技術】
従来、マイクロプロセッサの補助的な処理を行なうコプロセッサのインターフェース回路は、図8のようになっている。
図8において、マイクロプロセッサ1、コプロセッサ2およびメモリ3がアドレスバスS1、ストローブバスS2およびデータバスS3により接続されている。メモリ3上にはマイクロプロセッサ1とコプロセッサ2の命令がそれぞれ格納されている。コプロセッサ2内部では、アドレスバスS1が内部アドレスバスS4と接続され、ストローブバスS2が内部ストローブバスS5と接続され、またデータバスS3が内部データバスS6と接続されている。これらの内部バスは双方向のバスである。
【0003】
次に動作を説明する。
マイクロプロセッサ1はメモリ3から命令を読み込み実行を行なう。このとき命令がコプロセッサ命令の場合、マイクロプロセッサ1はデータバスS3を通してコプロセッサ命令をコプロセッサ2に転送する。必要であれば同時にストローブバスS2にも制御信号を乗せコプロセッサ2に転送する。データバスS3上のコプロセッサ命令は内部データバスS6を経由して、命令デコーダ部10に入力される。
【0004】
命令デコーダ部10において、コプロセッサ命令は、命令S7とオペランドS8にデコードされる。命令S7は演算部4と同時に、コプロセッサ2の制御を行なうマイクロプログラム部7にも入力される。
【0005】
マイクロプログラム部7は演算部4で実行する命令に必要となるデータを、メモリからデータレジスタ5に転送するため、アドレスとストローブ信号を生成する。これらの信号は内部アドレスバスS4と内部ストローブバスS5から、アドレスバスS1とストローブバスS2を経由してメモリに送信される。
【0006】
この時マイクロプログラム部7はホストインターフェース部9が誤って動作しないように、ホストインターフェースイネーブル信号S91を作成し、ホストインターフェース部9の動作を禁止する。
【0007】
メモリ3はコプロセッサ2に要求されたデータを、データバスS3に乗せる。データバスS3から内部データバスS6上に現れたデータを、データレジスタ部5に一時的に記憶するために、オペランドに適合するように演算アクセス信号S10を生成する。演算アクセス信号S10は内部調停部8に入力そして調停され、レジスタ選択信号S11により、所定のデータレジスタ部5に内部データバスS6上のデータが書き込まれる。データがデータレジスタ部5に書き込まれた後、マイクロプログラム部7は演算部起動信号S12を生成して、演算部4を起動させる。
【0008】
演算部4は命令に従いデータの演算を行ない、演算結果と演算部応答信号S13を生成する。演算部応答信号S13を受け取ったマイクロプログラム部7は、演算結果をデータレジスタ部5に書き込むため、オペランドに適合するように演算アクセス信号S10を生成する。マイクロプロセッサ1からデータレジスタ部5と制御レジスタ6のアクセスが生じる場合、アドレスバスS1とストローブバスS2の信号が、内部アドレスバスS4と内部ストローブバスS5を経由してホストインターフェース部9に入力され、ホストアクセス信号S9を生成する。ホストアクセス信号S9は内部調停部8で調停され、レジスタ選択信号S11により、所定のデータレジスタ部5もしくは制御レジスタ部6が選択される。制御レジスタ部6の制御情報S14は、演算部4やマイクロプログラム部7の動作モード等の決定に利用される。
【0009】
図9は従来のデータレジスタ部と制御レジスタ部のメモリマップF1の説明図である。
この例では最大2入力の演算を行い、一つの演算結果を生成するものである。演算部4の入力データは、データレジスタ1(F12)とデータレジスタ2(F13)に一時的に記憶される。0x00と0x04にそれぞれマッピングされ、すべての命令において共通に利用される。演算部4の出力データは、結果用データレジスタ(F14)に記憶される。これは0x08にマッピングされている。また、演算部4とマイクロプログラム部7の動作モードの決定を行なう制御レジスタ(F11)が0x0Cにマッピングされている。これらのアドレスはコプロセッサ2が接続されているベースアドレスからオフセットアドレスであり、マイクロプロセッサ1はベースアドレスとオフセットアドレスが足したものをアドレスとして利用し、コプロセッサ2のレジスタ群にアクセスする。
【0010】
【発明が解決しようとする課題】
ところが、従来技術では以下の問題があった。
(1)コプロセッサ2は能動的に動作せず、マイクロプロセッサ1から命令を受け取り、それをトリガーにして受動的に動作する。そのため、マイクロプロセッサ1とコプロセッサ2の間に、専用のプロトコルを必要とする。そのため、コプロセッサ2は主となるマイクロプロセッサ1に強く依存するので、他のマイクロプロセッサで簡単に利用することができなかった。また、同時に、この依存性のためプログラムをアセンブラで記述する必要があり、ソフトウェアの立場からも、他のマイクロプロセッサで簡単に利用することが出来なかった。さらに、マイクロプロセッサ1から命令を受け取った後、コプロセッサ2は能動的に命令の実行にデータを取得しなければならないため、マイクロプログラム部7のような複雑な回路や、双方向の内部バスを必要とするなど、インターフェースの回路が複雑で、かつ設計が困難であった。
【0011】
(2)それから、マイクロプロセッサ1とコプロセッサ2の間にあるプロトコルによるオーバヘッドのため、スループットの低下が生じるという問題がった。
【0012】
(3)そして、マルチタスク環境でコプロセッサを利用する際、コンテキストスイッチに対応するため、コプロセッサのコンテキストをセーブする命令を持つが。メモリにコンテキストを書出すため、コンテキストスイッチでのスループットの低下を生じるという問題があった。
【0013】
そこで、上記課題を解決するために、本発明の第1の目的は、どのようなマイクロプロセッサでも簡単に利用できるように、コプロセッサとしての性格を維持したまま、マイクロプロセッサとの依存性を低く抑え、ハードウェアとソフトウェアの両方のポータビリティを上げることが可能なコプロセッサのホストインターフェース回路を提供することにある。
【0014】
また、本発明の第2の目的は、マイクロプロセッサとコプロセッサの間にあるプロトコルにより生じていたオーバヘッドを減少させ、スループットを上げることが可能なコプロセッサのホストインターフェース回路を提供することにある。
【0015】
さらに、本発明の第3の目的は、マルチタスク環境でコプロセッサを利用してもスループットを落さないよう、コンテキストスイッチの負荷を低減することが可能なコプロセッサのホストインターフェース回路を提供することにある。
【0016】
【課題を解決するための手段】
上記問題を解決するため、請求項1の本発明は、アドレスバス、ストローブバスおよびデータバスによりマイクロプロセッサとメモリに接続されたコプロセッサであり、命令に従ってデータを演算する演算部と、データを書き込むデータレジスタ部と、当該演算部などの内部の演算の動作モードを決定する制御レジスタ部と、前記データレジスタ部と前記制御レジスタ部の使用を、前記マイクロプロセッサまたは前記コプロセッサの何れかから選択する内部調停部を備えたコプロセッサのインターフェース回路において、前記アドレスバスと接続された、入力方向のパスとなる内部アドレスバスと、前記ストローブバスに接続された、入力方向のパスとなる内部ストローブバスと、前記内部アドレスバス上のアドレスにエンコードされた情報から、命令とオペランドを生成するアドレス命令デコーダ部と、前記内部アドレスバス上のアドレスと前記内部ストローブバス上のストローブ信号により、マイクロプロセッサから前記データレジスタ部と前記制御レジスタ部への読み書き要求をデコードした、ホストアクセス信号を生成するホストデコーダ部と、前記演算部の制御を行なうFSM部を備えたものである。
【0017】
また、請求項2の本発明は、請求項1記載のコプロセッサのホストインターフェース回路において、ホストアクセス信号(S9)と命令(S7)を入力とし、命令とデータレジスタへのホストアクセス信号の回数を関連づけて監視し、監視結果によりFSM部へのFSMスタート信号を生成し、演算部応答信号によりFSMスタート信号をクリアするスタート信号生成部を備えたものである。
【0018】
さらに、請求項3の本発明は、請求項2記載のコプロセッサのホストインターフェース回路において、ホストアクセスとFMSスタート信号を入力とし、ホストアクセス信号とFMSスタート信号を対応付けて監視し、監視結果でデータレジスタのバンクを決定する、バンクアドレスを生成するバンクアドレス生成部と、データバスに接続された内部データバスを入出力とし、複数のバンクに分割され、バンクアドレスによりバンクが選択され、内部調停部で生成されたレジスタ選択信号を、選択されたバンクのレジスタ選択に用いるバンクデータレジスタ部を備えたものである。
【0019】
【発明の実施の形態】
本発明の実施例を図に基づいて説明する。
【0020】
[第1実施例]
図1は本発明の第1実施例を示すコプロセッサのホストインターフェース回路のブロック図、図2は第1実施例によるメモリマップの説明図、図3は第1実施例によるメモリマップのコプロセッサで演算を行なわせるC言語のプログラム例である。
【0021】
まず、第1実施例の理解を容易にするため、図1の説明の前に、図1のコプロセッサのメモリマップF1の例を示す図2を先に説明する。
本コプロセッサは2入力の命令を3つと1入力の命令をひとつ持つものである。オフセットアドレスの0x00に制御レジスタF11が、0x04に結果用データレジスタF12がマッピングされ、すべての命令の演算結果はこの結果用データレジスタに格納される。命令1の入力となる命令1用データレジスタ1(F14)と命令1用データレジスタ2(F15)が0x10と0x14に、命令2の入力となる命令2用データレジスタ1(F16)と命令2用データレジスタ2(F17)が0x18と0x1Cに、命令3の入力となる命令3用データレジスタ1(F18)と命令3用データレジスタ2(F19)が0x20と0x24に、命令4の入力となる命令4用データレジスタ1(F20)が0x28にそれぞれマッピングされている。0x08から0x0fは何もマッピングされていない領域(F13)である。8ビットのオフセットアドレスに対して、上位5ビットが命令を、下位3ビットが命令に対するレジスタの選択、つまりオペランドをエンコードしている。すなわちこのアドレスにエンコードされた情報をデコードできればコプロセッサが命令を理解できる。
【0022】
次に、このメモリマップのコプロセッサで、演算を行なわせるC言語の例を図3に示す。
#define文ではアドレスとインストラクションを定義している。インストラクションは命令とオペランドの定義を行なっている。exec_inst1()は命令1に対するデータ設定を、get_result()は命令実行後の結果取得を、それぞれマクロとして定義している。関数instruction1()は命令1を実行し演算結果を得るものである。data1とdata2をexec_inst1()により設定後、get_result()により結果を取得する。この例でわかるように、BASEで定義されるベースアドレスのみが、マイクロプロセッサを利用したシステムで固有であり、このBASE以外はどのシステムでも共通に利用できるものである。そのため、ソフトウェア的にポータビリティに優れたものといえる。さらに、コンパイラ的に処理する必要がある構文はポインタだけであり、コンパイラに特別なコプロセッサ用の拡張を必要としないため、開発環境のポータビリティにも優れているといえる。
【0023】
上記を踏まえた上で図1の本発明の実施例を説明する。ここで、マイクロプロセッサ1の命令はメモリ3に格納されている。コプロセッサ2を動作させる命令は、図2のメモリマップを実現するように、マイクロプロセッサ1のメモリアクセス命令を利用して記述されている。なお、本発明の構成要素が従来と同じものについてはその説明を省略し、異なる点のみ説明する。
【0024】
図1において、71はFSM部(finite state machineの略)、91はホストデコーダ部、101はアドレス命令デコーダ部である。
本発明が従来と異なる点は、コプロセッサのインターフェース回路において、アドレスバスS1と接続された、入力方向のパスとなる内部アドレスバスS41と、ストローブバスS2に接続された、入力方向のパスとなる内部ストローブバスS51と、内部アドレスバスS41上のアドレスにエンコードされた情報から、命令S7とオペランドS8を生成するアドレス命令デコーダ部101と、内部アドレスバスS41上のアドレスと内部ストローブバスS51上のストローブ信号により、マイクロプロセッサ1からデータレジスタ部5と制御レジスタ部6への読み書き要求をデコードした、ホストアクセス信号S9を生成するホストデコーダ部91と、演算部4の制御を行なうFSM部71を備えた点である。
【0025】
次に動作を説明する。
図1において、命令1がエンコードされたアドレスでコプロセッサ2がアクセスされた場合、アドレスバスS1と接続された内部アドレスバスS4から、アドレス命令デコーダ部101にアドレスが送られ、命令S7とオペランドS8が生成される。同時に、内部アドレスバスS41と、ストローブバスS2に接続された内部ストローブバスS51は、共にホストデコーダ部91に送られ、オペランドに相当するデータレジスタ部5に対する、ホストアクセス信号S9を生成する。この場合データのセットなので書き込み信号となる。ホストアクセス信号S9は内部調停部8に転送され、FSM部71の演算アクセス信号S10と調停され、レジスタ選択信号S11が生成される。データレジスタ部5に書き込みたいデータが、データバスに接続された内部データバスS6を経由して、オペランドで指定されたデータレジスタ部5に書き込まれる。
【0026】
本実施例では、制御レジスタ部6上の制御情報S14中の1ビットを利用して、FSM部71を起動する。そのため、制御レジスタ部6のビットをセットする。この情報はFSM部71に接続されているので、FSM部71は動作を開始し、演算部4を起動する演算部起動信号S12を作成する。この演算部起動信号S12により演算部4は実行を開始し、データレジスタ部5のデータを利用して演算を行ない、演算結果をデータレジスタ部5に書き戻すと同時に演算部応答信号S13を生成する。この信号はFSM部71に入力され、FSM部71の動作が完了する。
【0027】
本発明の第1実施例に係るコプロセッサのホストインターフェース回路は上記構成にしたので、コプロセッサがマイクロプロセッサから見ると、受動的なデバイスとしてとらえられると共に、単純なメモリと同等の回路で実現できるため、いろいろなマイクロプロセッサでの利用を簡単に実施することができる。
【0028】
また、マイクロプロセッサとのインターフェース回路がデコーダですみ、内部のステートマシンも演算部のみを管理すれば良いので、インターフェース部分のみならず、全体の回路を簡単にすることができる。
【0029】
また、命令とデータをメモリアクセス命令に同時に記述できることにより、マイクロプロセッサとコプロセッサ間のインターフェースのオーバーへッドを減少することができる。
【0030】
さらに、マイクロプロセッサのパイプラインのストールを抑えることもでき、オーバーへッドの減少とともにスループットを向上することができる。
【0031】
[第2実施例]
次に、本発明の第2実施例を説明する。
図4は本発明の第2実施例を示すコプロセッサのホストインターフェース回路のブロック図である。なお、第2実施例の構成要素が第1実施例と同じものについてはその説明を省略し、異なる点のみ説明する。
【0032】
図4において、 11はスタート信号生成部である。
第2実施例の特徴は、ホストアクセス信号S9と命令S7を入力とし、命令とデータレジスタへのホストアクセス信号の回数を関連づけて監視し、監視結果によりFSM部71へのFSMスタート信号S15を生成し、演算部応答信号S13によりFSMスタート信号をクリアするスタート信号生成部11を備えた点である。
【0033】
次に動作を説明する。
図4において、マイクロプロセッサからホストアクセス信号S9と命令S7がスタート信号生成部11に入力される。命令に対するホストアクセス信号の状態を監視して、監視結果が条件に適合したらスタート信号生成部はFSMスタート信号S15を生成する。2入力を必要とする命令の場合、同じ命令を表すデータレジスタ部に、2つのデータが異なるオペランドS8に設定された場合に条件に適合する。同じオペランドの場合には条件に適合しないのでFSMスタート信号は生成されない。生成されたFSMスタート信号S15はFSM部71に入力され、FSM部71のステートマシンが起動される。演算部4を動作させる演算部起動信号S12を作成し、演算部4で用いるデータレジスタ部5に書かれたデータを取得するため演算アクセス信号S10を生成する。演算部4は演算が終了すると演算部応答信号S13をFSM部71に返す。この信号を受け取ったFSM部71は、演算結果をデータレジスタ部5に書き込むため演算アクセス信号S10を生成し、動作を終了する。
【0034】
図5は図4に示したコプロセッサのホストインターフェース回路を具体化したブロック図である。
図5において、第1ホストアクセス信号S91と第2ホストアクセス信号S92は、それぞれ2つのオペランドに対応する信号であり、すべての命令に共通である。
【0035】
以下、動作を説明する。
データレジスタ部5にデータを設定する際、第1ホストアクセス信号S91と第2ホストアクセス信号S92が生成された場合、スタート信号生成部11はFSMスタート信号S15を生成する。第1ホストアクセス信号S91の状態は第1フリップフロップ111により記憶される。同様に第2ホストアクセス信号S92の状態は第2フリップフロップ112により記憶される。第1フリップフロップ111と第2フリップフロップ112に記憶された、第1ホストアクセス信号S91と第2ホストアクセス信号S92の信号は、第1フリップフロップ出力S111と第2フリップフロップ出力S112に出力され、デコーダ113に入力される。デコーダ113には命令S7も入力されており、命令S7と第1フリップフロップ出力S111、第2フリップフロップ出力S112をデコードすることで、FSMスタート信号S15の生成条件を監視する。演算部4での命令の実行が終わったことを示す演算部応答信号S13は、第1フリップフロップ111と第2フリップフロップ112のクリアに用いられる。これは同時にFSMスタート信号S15のクリアも実行する。これにより命令の実行に必要なアクセスを行なうだけで、FSMスタート信号の生成を自動で行なうことができるようになる。
【0036】
本発明の第2実施例に係るコプロセッサのホストインターフェース回路は、上記構成にしたので、命令に必要なデータをすべて設定することにより、自動的に演算処理を行なうことができる。命令とデータをメモリアクセス命令に同時に記述できることに加え、必要な回数のメモリアクセス命令のみで演算処理を開始できるため、スループット向上を図れるという効果を持つ。
【0037】
[第3実施例]
次に本発明の第3実施例について説明する。
図6は第3実施例を示すコプロセッサのホストインターフェース回路のブロック図である。なお、第3実施例の構成要素が第1、第2実施例と同じものについてはその説明を省略し、異なる点のみ説明する。
【0038】
図6において、12はバンクアドレス生成部、51はバンクデータレジスタ部である。
第3実施例の特徴は、ホストアクセスS9とFMSスタート信号S15を入力とし、ホストアクセス信号とFMSスタート信号を対応付けて監視し、その監視結果でデータレジスタのバンクを決定すると共に、バンクアドレスS16を生成するバンクアドレス生成部12と、データバスに接続された内部データバスS6を入出力とし、複数のバンクに分割され、バンクアドレスによりバンクが選択され、内部調停部8で生成されたレジスタ選択信号S11を、選択されたバンクのレジスタ選択に用いるバンクデータレジスタ部51を備えた点である。
【0039】
次に動作を説明する。
マイクロプロセッサからホストアクセス信号S9と命令S7がスタート信号生成部11に入力される。命令に対するホストアクセス信号の状態を監視して、監視結果が条件に適合したらスタート信号生成部はFSMスタート信号S15を生成する。生成されたFSMスタート信号は、命令とオペランドS8と共に、FSM部71に入力され、FSM部71のステートマシンを起動する。FSMスタート信号S16はホストアクセス信号と共に、バンクアドレス生成部12にも入力される。バンクアドレス生成部12では、FSMスタート信号S15とバンクデータレジスタ部51への読み込みを表すホストアクセス信号を関連づけて管理し、バンクアドレスS16を生成する。この関係が壊れるときには、バンクアドレス生成部12は新しいバンクアドレスを生成する。つまり、データの書込と演算結果の読み込みは不可分な処理のため、これを管理しプロセスを識別する。このプロセスの識別がバンクアドレスで管理されることになる。また、起動したFSM部71は、演算部4を動作させる演算部起動信号S12を作成し、演算部4で用いるバンクデータレジスタ部51に書かれたデータを取得するため、演算アクセス信号S10を生成する。演算アクセス信号S10は内部調停部8に入力され、ホストアクセス信号と調停されレジスタ選択信号S11を生成する。バンクアドレス生成部12で生成されたバンクアドレスS16によりバンクデータレジスタ部のバンクが決定された後、レジスタ選択信号はバンクデータレジスタ部51に作用する。演算部4は演算が終了すると演算部応答信号S13をFSM部71に返す。この信号を受け取ったFSM部71は、演算結果をデータレジスタ部5に書き込むため演算アクセス信号を生成し、動作を終了する。
【0040】
図7は図6に示したコプロセッサのホストインターフェース回路を具体化したブロック図である。
【0041】
以下、動作を説明する。
第1ホストアクセス信号S91と第2ホストアクセス信号S92は、それぞれ2つのオペランドに対応する信号であり、すべての命令に共通である。データレジスタ部にデータを設定する際、第1ホストアクセス信号と第2ホストアクセス信号が生成された場合、スタート信号生成部11はFSMスタート信号S15を生成する。第1ホストアクセス信号の状態は第1フリップフロップ111により記憶される。同様に第2ホストアクセス信号の状態は第2フリップフロップ112により記憶される。第1フリップフロップと第2フリップフロップに記憶された、第1ホストアクセス信号と第2ホストアクセス信号の信号は、第1フリップフロップ出力S111と第2フリップフロップ出力S112に出力して、デコーダ113に入力される。デコーダには命令S7も入力されており、命令と第1フリップフロップ出力、第2フリップフロップ出力をデコードすることで、FSMスタート信号の生成条件を監視する。演算部での命令の実行が終わったことを示す演算部応答信号S13は、第1フリップフロップと第2フリップフロップのクリアに用いられる。これは同時にFSMスタート信号のクリアも実行する。以上の動作は図5と同等である。スタート信号生成部で作成されたFSMスタート信号は、マイクロプロセッサからのバンクデータレジスタ部への読みを表す、第3ホストアクセス信号S93と共に、バンクアドレス生成部12に入力される。バンクアドレス生成部にはアップダウン動作を行なう、バンク数で決定されるnビットのカウンタ121を備える。FSMスタート信号はアップ端子に、ホストアクセス信号3はダウン端子にそれぞれ接続する。FSMスタート信号が引き続き起る場合は、最初と次のFSMスタート信号では出力である、バンクアドレスS16が異なる。この回路構成ではバンクアドレスをスタックで管理していることになり、異なるプロセスに対応する。
【0042】
本発明の第3実施例に係るコプロセッサのホストインターフェース回路は、上記構成にしたので、マイクロプロセッサからのアクセスをプロセスに関連づけ管理でき、特別な命令を用意せずにマルチタスク環境で利用することができる。また、メモリにコンテキストを書出す必要がないので、コンテキストスイッチスループット向上を図れるという効果がある。
【0043】
【発明の効果】
以上述べたように、本発明によれば以下の効果がある。
請求項1記載のコプロセッサのホストインターフェース回路は、アドレスバスと接続された、入力方向のパスとなる内部アドレスバスと、ストローブバスに接続された、入力方向のパスとなる内部ストローブバスと、内部アドレスバス上のアドレスにエンコードされた情報から、命令とオペランドを生成するアドレス命令デコーダ部と、内部アドレスバス上のアドレスと内部ストローブバス上のストローブ信号により、マイクロプロセッサからデータレジスタ部と制御レジスタ部への読み書き要求をデコードした、ホストアクセス信号を生成するホストデコーダ部と、演算部4の制御を行なうFSM部71を備える構成にしたので、コプロセッサがマイクロプロセッサから見ると受動的なデバイスとしてとらえられると共に、単純なメモリと同等の回路で実現できるため、いろいろなマイクロプロセッサでの利用を簡単で実施することができる。
また、マイクロプロセッサとのインターフェース回路がデコーダですみ、内部のステートマシンも演算部のみを管理すれば良いので、インターフェース部分のみならず、全体の回路を簡単にすることができる。
さらに、命令とデータをメモリアクセス命令に同時に記述できることにより、マイクロプロセッサとコプロセッサ間のインターフェースのオーバーへッドを減少できる。さらに、マイクロプロセッサのパイプラインのストールを抑えることもでき、オーバーへッドの減少とともにスループットを向上できるという効果がある。
【0044】
請求項2記載のコプロセッサのホストインターフェース回路は、ホストアクセス信号と命令を入力とし、命令とデータレジスタへのホストアクセス信号の回数を関連づけて監視し、監視結果によりFSM部へのFSMスタート信号を生成し、演算部応答信号によりFSMスタート信号をクリアするスタート信号生成部を備える構成にしたので、命令に必要なデータをすべて設定することにより、自動的に演算処理を行なうことができる。
また、命令とデータをメモリアクセス命令に同時に記述できることに加え、必要な回数のメモリアクセス命令のみで演算処理を開始できるため、スループット向上を図れるという効果がある。
【0045】
請求項3記載のコプロセッサのホストインターフェース回路は、ホストアクセスとFMSスタート信号を入力とし、ホストアクセス信号とFMSスタート信号を対応付けて監視し、監視結果でデータレジスタのバンクを決定する、バンクアドレスを生成するバンクアドレス生成部と、データバスに接続された内部データバスを入出力とし、複数のバンクに分割され、バンクアドレスによりバンクが選択され、内部調停部で生成されたレジスタ選択信号を、選択されたバンクのレジスタ選択に用いるバンクデータレジスタ部を備える構成にしたので、マイクロプロセッサからのアクセスをプロセスに関連づけ管理でき、特別な命令を用意せずにマルチタスク環境で利用することができる。
また、メモリにコンテキストを書出す必要がないので、コンテキストスイッチスループット向上を図れるという効果がある。
【図面の簡単な説明】
【図1】本発明の第1実施例を示すコプロセッサのホストインターフェース回路のブロック図である。
【図2】第1実施例を示すメモリマップの説明図である。
【図3】第1実施例を示すプログラム例である。
【図4】本発明の第2実施例を示すコプロセッサのホストインターフェース回路のブロック図である。
【図5】図4に示したコプロセッサのホストインターフェース回路を具体化したブロック図である。
【図6】本発明の第3実施例を示すコプロセッサのホストインターフェース回路のブロック図である。
【図7】図6に示したコプロセッサのホストインターフェース回路を具体化したブロック図である。
【図8】従来のコプロセッサのホストインターフェース回路のブロック図である。
【図9】従来のコプロセッサでのメモリマップの説明図である。
【符号の説明】
1:マイクロプロセッサ
2:コプロセッサ
3:メモリ
4:演算部
5:データレジスタ部
51:バンクデータレジスタ部
6:制御レジスタ部
7:マイクロプログラム部
71:FSM部
8:内部調停部
9:ホストデコーダ部
91:ホストでコーダ部
10:命令デコーダ部
11:スタート信号生成部
111:第1フリップフロップ
112:第2フリップフロップ
113:デコーダ
12:バンクアドレス生成部
121:カウンタ
101:アドレス命令デコーダ部
S1:アドレスバス
S2:ストローブバス
S3:データバス
S41:内部アドレスバス
S51:内部ストローブバス
S6:内部データバス
S7:命令
S8:オペランド
S9:ホストアクセス信号
S91:第1ホストアクセス信号
S92:第2ホストアクセス信号
S93:第3ホストアクセス信号
S10:演算アクセス信号
S11:レジスタ選択信号
S12:演算部起動信号
S13:演算部応答信号
S14:制御情報
S15:FSMスタート信号
S16:バンクアドレス
S111:第1フリップフロップ出力
S112:第2フリップフロップ出力
F1:メモリマップ
F11:制御レジスタ
F12:結果用データレジスタ
F14:命令1用データレジスタ1
F15:命令1用データレジスタ2
F16:命令2用データレジスタ1
F17:命令2用データレジスタ2
F18:命令3用データレジスタ1
F19:命令3用データレジスタ2
F20:命令4用データレジスタ1
Claims (3)
- アドレスバス(S1)、ストローブバス(S2)およびデータバス(S3)によりマイクロプロセッサ(1)とメモリ(3)に接続されたコプロセッサ(2)であり、
命令に従ってデータを演算する演算部(4)と、データを書き込むデータレジスタ部(5)と、当該演算部などの内部の演算の動作モードを決定する制御レジスタ部(6)と、前記データレジスタ部(5)と前記制御レジスタ部(6)の使用を、前記マイクロプロセッサ(1)または前記コプロセッサ(2)の何れかから選択する内部調停部(8)を備えたコプロセッサのインターフェース回路において、
前記アドレスバス(S1)と接続された、入力方向のパスとなる内部アドレスバス(S41)と、
前記ストローブバス(S2)に接続された、入力方向のパスとなる内部ストローブバス(S51)と、
前記内部アドレスバス(S41)上のアドレスにエンコードされた情報から、命令(S7)とオペランド(S8)を生成するアドレス命令デコーダ部(101)と、
前記内部アドレスバス(S41)上のアドレスと前記内部ストローブバス(S51)上のストローブ信号により、マイクロプロセッサ(1)から前記データレジスタ部(5)と前記制御レジスタ部(6)への読み書き要求をデコードした、ホストアクセス信号(S9)を生成するホストデコーダ部(91)と、
前記演算部(4)の制御を行なうFSM部(71)を備えることを特徴とするコプロセッサのホストインターフェース回路。 - ホストアクセス信号(S9)と命令(S7)を入力とし、命令とデータレジスタへのホストアクセス信号の回数を関連づけて監視し、監視結果によりFSM部(71)へのFSMスタート信号(S15)を生成し、演算部応答信号(S13)によりFSMスタート信号をクリアするスタート信号生成部(11)を備えたことを特徴とする請求項1記載のコプロセッサのホストインターフェース回路。
- ホストアクセス(S9)とFMSスタート信号(S15)を入力とし、ホストアクセス信号とFMSスタート信号を対応付けて監視し、監視結果でデータレジスタのバンクを決定する、バンクアドレス(S16)を生成するバンクアドレス生成部(12)と、
データバスに接続された内部データバス(S6)を入出力とし、複数のバンクに分割され、バンクアドレスによりバンクが選択され、内部調停部(8)で生成されたレジスタ選択信号(S11)を、選択されたバンクのレジスタ選択に用いるバンクデータレジスタ部(51)を備えることを特徴とする請求項2記載のコプロセッサのホストインターフェース回路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002231577A JP2004070819A (ja) | 2002-08-08 | 2002-08-08 | コプロセッサのホストインターフェース回路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002231577A JP2004070819A (ja) | 2002-08-08 | 2002-08-08 | コプロセッサのホストインターフェース回路 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004070819A true JP2004070819A (ja) | 2004-03-04 |
Family
ID=32017303
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002231577A Pending JP2004070819A (ja) | 2002-08-08 | 2002-08-08 | コプロセッサのホストインターフェース回路 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004070819A (ja) |
-
2002
- 2002-08-08 JP JP2002231577A patent/JP2004070819A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9003422B2 (en) | Microprocessor architecture having extendible logic | |
US10318407B2 (en) | Allocating a debug instruction set based on the current operating state in a multi-instruction-set data processing apparatus | |
US7487341B2 (en) | Handling address translations and exceptions of a heterogeneous resource of a processor using another processor resource | |
US7603540B2 (en) | Using field programmable gate array (FPGA) technology with a microprocessor for reconfigurable, instruction level hardware acceleration | |
JP5668143B2 (ja) | データ処理装置のデバッグ | |
KR101793318B1 (ko) | 명령어 에뮬레이션 프로세서, 방법 및 시스템 | |
US20080244222A1 (en) | Many-core processing using virtual processors | |
JP3136257B2 (ja) | コンピュータメモリインタフェース装置 | |
JPH0430053B2 (ja) | ||
JP2000231549A (ja) | マイクロプロセッサ | |
US6401197B1 (en) | Microprocessor and multiprocessor system | |
US7941650B2 (en) | Microprocessor based on event-processing instruction set and event-processing method using the same | |
US10248574B2 (en) | Input/output translation lookaside buffer prefetching | |
US20090094439A1 (en) | Data processing apparatus and method employing multiple register sets | |
JPH0696008A (ja) | 情報処理装置 | |
CN114691598A (zh) | 用于处理器的独立于存储器的和可缩放状态组件初始化 | |
CN114253607A (zh) | 用于由集群化解码流水线对共享微代码定序器的乱序访问的方法、系统和装置 | |
JP2008533569A (ja) | 周知のプロセッサーステートに基いてcamリネーミングレジスタファイルにおいてコンパレーターを選択的にイネーブルにするための電力節約方法および装置 | |
JP2004070819A (ja) | コプロセッサのホストインターフェース回路 | |
JP2002535749A (ja) | 複数の命令ソースからの命令を実行するプロセッサおよび方法 | |
CN112585584A (zh) | 用于处理引起异常的事件的装置和方法 | |
US7587579B2 (en) | Processor core interface for providing external hardware modules with access to registers of the core and methods thereof | |
JP2002541582A (ja) | エミュレータシステム内のユーザメモリを更新する方法およびシステム | |
US12007902B2 (en) | Configurable memory system and memory managing method thereof | |
JPH09160831A (ja) | 情報処理装置 |