(57)【特許請求の範囲】
【請求項１】
ベースプロセッサと、
コプロセッサと、
データメモリと、
制御インタフェースと、
データインタフェースと
を備え、
前記ベースプロセッサは、
レジスタと、
前記データメモリ及び前記レジスタに対するアクセスを行うベースプロセッサ制御部と
を備え、
前記コプロセッサは、
前記制御インタフェースを介して前記ベースプロセッサ制御部に接続されたコプロセッサ制御部と、
前記データインタフェースを介して前記データメモリ及び前記レジスタに接続されたコプロセッサ処理ユニットと
を備え、
前記コプロセッサ制御部は、前記ベースプロセッサ制御部に前記制御インタフェースを介してメモリアクセス制御信号を送信することによって、前記ベースプロセッサ制御部に前記データメモリに対するアクセスを行わせるメモリアクセス制御を行い、
前記コプロセッサ制御部は、前記ベースプロセッサ制御部に前記制御インタフェースを介してレジスタアクセス制御信号を送信することによって、前記ベースプロセッサ制御部に前記レジスタに対するアクセスを行わせるレジスタアクセス制御を行い、
前記コプロセッサ処理ユニットは、前記データインタフェースを介して前記レジスタに対するデータ読み書きを行い、また、前記データインタフェースを介して前記データメモリに対するデータ読み書きを行い、
前記コプロセッサ制御部は、前記データメモリからデータを読み出す前記メモリアクセス制御、及び、前記レジスタからデータを読み出す前記レジスタアクセス制御のうち少なくとも一方を含むリードアクセス制御を行い、
前記コプロセッサ処理ユニットは、前記リードアクセス制御に伴って前記データメモリ及び前記レジスタの少なくとも一方から読み出された前記データを、前記データインタフェースを介して受け取り、
前記コプロセッサ処理ユニットは、前記読み出されたデータを用いて演算処理を行うことにより、演算結果データを作成し、
前記コプロセッサ制御部は、前記データメモリにデータを書き込む前記メモリアクセス制御、及び、前記レジスタにデータを書き込む前記レジスタアクセス制御のうち少なくとも一方を含むライトアクセス制御を行い、
前記コプロセッサ処理ユニットは、前記ライトアクセス制御に伴って、前記データインタフェースを介して前記演算結果データを前記データメモリ及び前記レジスタの少なくとも一方に書き込み、
前記レジスタは、プログラムシーケンスを制御するためのレジスタであり、
前記レジスタはスタックポインタであり、
前記リードアクセス制御において、前記コプロセッサ制御部は、前記スタックポインタからデータを読み出す前記レジスタアクセス制御を行い、
前記コプロセッサ処理ユニットは、前記スタックポインタから読み出されたデータに基づいて新たなスタックポインタ値を計算し、
前記ライトアクセス制御において、前記コプロセッサ制御部は、前記スタックポインタにデータを書き込む前記レジスタアクセス制御、及び、前記データメモリ上のスタック領域にデータを書き込む前記メモリアクセス制御を行い、
前記コプロセッサ処理ユニットは、前記新たなスタックポインタ値を前記スタックポインタに書き込み、また、前記スタック領域に退避データをプッシュする
プロセッサシステム。
【請求項２】
ベースプロセッサと、
コプロセッサと、
データメモリと、
制御インタフェースと、
データインタフェースと
を備え、
前記ベースプロセッサは、
レジスタと、
前記データメモリ及び前記レジスタに対するアクセスを行うベースプロセッサ制御部と
を備え、
前記コプロセッサは、
前記制御インタフェースを介して前記ベースプロセッサ制御部に接続されたコプロセッサ制御部と、
前記データインタフェースを介して前記データメモリ及び前記レジスタに接続されたコプロセッサ処理ユニットと
を備え、
前記コプロセッサ制御部は、前記ベースプロセッサ制御部に前記制御インタフェースを介してメモリアクセス制御信号もしくはレジスタアクセス制御信号を送信する際に、前記ベースプロセッサ制御部に対して前記ベースプロセッサに対する命令による前記データメモリ及び前記レジスタに対するアクセスを禁止するウェイト信号を送信した上で、前記ベースプロセッサ制御部に前記データメモリもしくは前記レジスタに対するアクセスを行わせるメモリアクセス制御を行い、
前記コプロセッサ処理ユニットは、前記データインタフェースを介して前記レジスタに対するデータ読み書きを行い、また、前記データインタフェースを介して前記データメモリに対するデータ読み書きを行った後、前記ベースプロセッサ制御部に対してウェイト解除信号を送信し、前記ベースプロセッサ制御部の前記ベースプロセッサに対する命令による前記データメモリおよび前記レジスタに対するアクセス禁止を解除する
プロセッサシステム。
【請求項３】
請求項２に記載のプロセッサシステムであって、
前記ベースプロセッサは、更に、命令をフェッチする命令フェッチ部を備え、
前記命令フェッチ部によってフェッチされる前記命令のセットはベース命令セットであり、
前記コプロセッサ用のコプロ命令は、前記ベース命令セットに組み込まれており、
前記ベースプロセッサは、命令インタフェースを介して前記コプロ命令を前記コプロセッサに供給し、
前記コプロセッサ制御部及び前記コプロセッサ処理ユニットは、前記コプロ命令に基づいて動作する
プロセッサシステム。
【請求項４】
請求項３に記載のプロセッサシステムであって、
前記命令フェッチ部は、デコード前の前記コプロ命令の少なくとも一部を、前記命令インタフェースを介して前記コプロセッサに供給し、
前記コプロセッサは、更に、前記命令インタフェースを介して受け取った前記コプロ命令の前記少なくとも一部をデコードするコプロセッサデコーダを備える
プロセッサシステム。
【請求項５】
請求項２乃至４のいずれか一項に記載のプロセッサシステムであって、
前記ベースプロセッサ制御部は、
前記データメモリに対するアクセスを行う第１メモリ制御部と、
前記レジスタに対するアクセスを行う第１レジスタ制御部と
を備え、
前記コプロセッサ制御部は、
前記メモリアクセス制御を行う第２メモリ制御部と、
前記レジスタアクセス制御を行う第２レジスタ制御部と
を備え、
前記制御インタフェースは、
前記第１メモリ制御部と前記第２メモリ制御部との間を接続するメモリ制御インタフェースと、
前記第１レジスタ制御部と前記第２レジスタ制御部との間を接続するレジスタ制御インタフェースと
を備え、
前記メモリ制御インタフェースと前記レジスタ制御インタフェースとは互いから独立しており、
前記第２メモリ制御部は、前記メモリ制御インタフェースを介して前記メモリアクセス制御を行い、
前記第２レジスタ制御部は、前記レジスタ制御インタフェースを介して前記レジスタアクセス制御を行い、
前記データインタフェースは、
前記レジスタと前記コプロセッサ処理ユニットとの間を接続するレジスタデータインタフェースと、
前記データメモリと前記コプロセッサ処理ユニットとの間を接続するメモリデータインタフェースと
を備え、
前記レジスタデータインタフェースと前記メモリデータインタフェースとは互いから独立しており、
前記コプロセッサ処理ユニットは、前記レジスタデータインタフェースを介して前記レジスタに対するデータ読み書きを行い、また、前記メモリデータインタフェースを介して前記データメモリに対するデータ読み書きを行う
プロセッサシステム。
【請求項６】
請求項２乃至５のいずれか一項に記載のプロセッサシステムであって、
前記コプロセッサ制御部は、前記データメモリからデータを読み出す前記メモリアクセス制御、及び、前記レジスタからデータを読み出す前記レジスタアクセス制御のうち少なくとも一方を含むリードアクセス制御を行い、
前記コプロセッサ処理ユニットは、前記リードアクセス制御に伴って前記データメモリ及び前記レジスタの少なくとも一方から読み出された前記データを、前記データインタフェースを介して受け取り、
前記コプロセッサ処理ユニットは、前記読み出されたデータを用いて演算処理を行うことにより、演算結果データを作成し、
前記コプロセッサ制御部は、前記データメモリにデータを書き込む前記メモリアクセス制御、及び、前記レジスタにデータを書き込む前記レジスタアクセス制御のうち少なくとも一方を含むライトアクセス制御を行い、
前記コプロセッサ処理ユニットは、前記ライトアクセス制御に伴って、前記データインタフェースを介して前記演算結果データを前記データメモリ及び前記レジスタの少なくとも一方に書き込む
プロセッサシステム。
【請求項７】
請求項６に記載のプロセッサシステムであって、
前記レジスタは、プログラムシーケンスを制御するためのレジスタである
プロセッサシステム。
【請求項８】
請求項７に記載のプロセッサシステムであって、
前記レジスタはプログラムカウンタであり、
前記リードアクセス制御において、前記コプロセッサ制御部は、前記データメモリからデータを読み出す前記メモリアクセス制御を行い、
前記コプロセッサ処理ユニットは、前記データメモリから読み出されたデータに基づいて分岐先アドレスを計算し、
前記ライトアクセス制御において、前記コプロセッサ制御部は、前記プログラムカウンタにデータを書き込む前記レジスタアクセス制御を行い、
前記コプロセッサ処理ユニットは、前記分岐先アドレスを前記プログラムカウンタに書き込む
プロセッサシステム。
【請求項９】
請求項７に記載のプロセッサシステムであって、
前記レジスタはスタックポインタであり、
前記リードアクセス制御において、前記コプロセッサ制御部は、前記スタックポインタからデータを読み出す前記レジスタアクセス制御を行い、
前記コプロセッサ処理ユニットは、前記スタックポインタから読み出されたデータに基づいて新たなスタックポインタ値を計算し、
前記ライトアクセス制御において、前記コプロセッサ制御部は、前記スタックポインタにデータを書き込む前記レジスタアクセス制御、及び、前記データメモリ上のスタック領域にデータを書き込む前記メモリアクセス制御を行い、
前記コプロセッサ処理ユニットは、前記新たなスタックポインタ値を前記スタックポインタに書き込み、また、前記スタック領域に退避データをプッシュする
プロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ベースプロセッサ（ｂａｓｅ  ｐｒｏｃｅｓｓｏｒ）とコプロセッサ（ｃｏｐｒｏｃｅｓｓｏｒ）を備えるプロセッサシステム及びその制御方法に関する。
【背景技術】
【０００２】
ベースプロセッサとコプロセッサを備えるプロセッサシステムが知られている（例えば、特許文献１、特許文献２、特許文献３を参照）。一般的なコプロセッサは、浮動小数点演算などの特定の演算処理をベースプロセッサに代わって実行する。上記特許文献に記載されているように、一般的には、コプロセッサはベースプロセッサによって制御される。コプロセッサは、命令終了やエラー通知などをベースプロセッサに通知するのみである。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開昭６３−２４７８６１号公報
【特許文献２】特開昭６４−０７６２２５号公報
【特許文献３】特開平０１−２６３７６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来技術では、ベースプロセッサが行うレジスタアクセスやメモリアクセスをコプロセッサ側から制御することができなかった。従って、コプロセッサを用いることによる性能改善は限定的であった。
【課題を解決するための手段】
【０００５】
本発明の１つの観点において、コプロセッサが実行するコプロセッサ命令がベースプロセッサのプログラムに組み込まれたプロセッサシステムが提供される。そのプロセッサシステムは、命令メモリから命令を順次フェッチする命令フェッチ部を有するベースプロセッサと、命令フェッチ部に結合されコプロセッサ命令がフェッチされた場合にコプロセッサ命令のデコード及び実行を行なうコプロセッサと、ベースプロセッサとコプロセッサとで共有するデータインタフェースに結合されたメモリと、ベースプロセッサとコプロセッサとの間を結合しコプロセッサがベースプロセッサに対してデータのアクセスを要求する第１の制御インタフェースと、第１の制御インタフェースとは別に設けられベースプロセッサがメモリのアクセスを制御する第２の制御インタフェースと、を有する。コプロセッサは、第１の制御インタフェースを介してベースプロセッサに対してデータのアクセスを要求することによって、メモリまたはベースプロセッサの内部レジスタに対してデータの読み出しまたは書込みが可能である。
【０００６】
本発明の他の観点において、プロセッサシステムが提供される。そのプロセッサシステムは、ベースプロセッサと、コプロセッサと、データメモリと、制御インタフェースと、データインタフェースと、を備える。ベースプロセッサは、レジスタと、データメモリ及びレジスタに対するアクセスを行うベースプロセッサ制御部と、を備える。コプロセッサは、制御インタフェースを介してベースプロセッサ制御部に接続されたコプロセッサ制御部と、データインタフェースを介してデータメモリ及びレジスタに接続されたコプロセッサ処理ユニットと、を備える。コプロセッサ制御部は、ベースプロセッサ制御部に制御インタフェースを介してメモリアクセス制御信号を送信することによって、ベースプロセッサ制御部にデータメモリに対するアクセスを行わせるメモリアクセス制御を行う。また、コプロセッサ制御部は、ベースプロセッサ制御部に制御インタフェースを介してレジスタアクセス制御信号を送信することによって、ベースプロセッサ制御部にレジスタに対するアクセスを行わせるレジスタアクセス制御を行う。コプロセッサ処理ユニットは、データインタフェースを介してレジスタに対するデータ読み書きを行い、また、データインタフェースを介してデータメモリに対するデータ読み書きを行う。
【発明の効果】
【０００７】
本発明によれば、ベースプロセッサが行うレジスタアクセスやメモリアクセスをコプロセッサ側から制御することが可能となる。これにより、プロセッサシステムの性能を著しく向上させることが可能となる。
【図面の簡単な説明】
【０００８】
【図１】図１は、本発明の実施の形態に係るプロセッサシステムの構成例を示すブロック図である。
【図２】図２は、本発明の実施の形態における命令インタフェースの一例を示す概略図である。
【図３】図３は、本発明の実施の形態における命令インタフェースの他の例を示す概略図である。
【図４】図４は、本発明の実施の形態に係るプロセッサシステムの変形例を示すブロック図である。
【図５】図５は、本発明の実施の形態に係るプロセッサシステムによる処理を示すフローチャートである。
【図６】図６は、本発明の実施の形態におけるリードアクセス制御処理の一例を示すフローチャートである。
【図７】図７は、本発明の実施の形態におけるライトアクセス制御処理の一例を示すフローチャートである。
【図８】図８は、本発明の実施の形態におけるベースプロセッサ処理の一例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
添付図面を参照して、本発明の実施の形態を説明する。
【００１０】
１．構成
図１は、本実施の形態に係るプロセッサシステム１の構成例を示すブロック図である。プロセッサシステム１は、命令メモリ１０、データメモリ２０、ベースプロセッサ１００、コプロセッサ２００、命令インタフェース３１０、メモリアクセスインタフェース３２０、制御インタフェース３３０、及びデータインタフェース３５０を備えている。
【００１１】
命令メモリ１０及びデータメモリ２０は、ベースプロセッサ１００外部のメモリである。命令メモリ１０には、ベースプロセッサ１００及びコプロセッサ２００によって実行される各種命令が格納される。データメモリ２０には、各種データが格納される。
【００１２】
命令インタフェース３１０は、ベースプロセッサ１００とコプロセッサ２００との間をつないでいる。メモリアクセスインタフェース３２０は、データメモリ２０とベースプロセッサ１００との間をつないでいる。制御インタフェース３３０は、ベースプロセッサ１００とコプロセッサ２００との間をつないでいる。データインタフェース３５０は、ベースプロセッサ１００及びデータメモリ２０とコプロセッサ２００との間をつないでいる。言い換えれば、データメモリ２０に結合されたデータインタフェース３５０は、ベースプロセッサ１００とコプロセッサ２００とで共有されている。尚、命令インタフェース３１０、メモリアクセスインタフェース３２０、制御インタフェース３３０、及びデータインタフェース３５０は、それぞれ別々に設けられている。
【００１３】
ベースプロセッサ１００は、命令フェッチ部１１０、ベース命令デコーダ１２０、ベースプロセッサ制御部１３０、ベースプロセッサレジスタ１４０、及びベース命令処理ユニット１５０を備えている。
【００１４】
命令フェッチ部１１０は、命令メモリ１０から命令を順次フェッチする。命令フェッチ部１１０によってフェッチされる命令のセットは、以下「ベース命令セット」と参照される。ベース命令セットは、ベースプロセッサ１００が実行するプログラムであるとも言える。本実施の形態によれば、ベース命令セットは、ベースプロセッサ１００用のベース命令（ベースプロセッサ命令）だけでなく、コプロセッサ２００用のコプロ命令（コプロセッサ命令）をも含む。言い換えれば、ベース命令セットは拡張されており、コプロ命令がそのベース命令セットに組み込まれている。命令フェッチ部１１０は、フェッチした命令をベース命令デコーダ１２０に送る。更に、命令フェッチ部１１０は、デコード前の命令の少なくとも一部を、命令インタフェース３１０を介して、コプロセッサ２００に供給する。詳細は後述される。
【００１５】
ベース命令デコーダ１２０は、命令フェッチ部１１０によってフェッチされた命令をデコードする。フェッチされた命令がベース命令であった場合、ベース命令デコーダ１２０は、デコード結果をベースプロセッサ制御部１３０に供給する。
【００１６】
ベースプロセッサ制御部１３０は、ベース命令のデコード結果に応じて、各種制御処理を行う。具体的には、ベースプロセッサ制御部１３０は、メモリアクセスインタフェース３２０を介して、外部のデータメモリ２０に対するアクセスを行う。また、ベースプロセッサ制御部１３０は、ベースプロセッサレジスタ１４０に対するアクセスを行う。更に、ベースプロセッサ制御部１３０は、ベース命令処理ユニット１５０に対して処理を指示する。
【００１７】
ベースプロセッサ制御部１３０は、互いに独立したメモリ制御部１３１、レジスタ制御部１３２、及び処理制御部１３３を備えていてもよい。その場合、メモリ制御部１３１は、メモリアクセスインタフェース３２０を介して、外部のデータメモリ２０に対するアクセスを行う。レジスタ制御部１３２は、ベースプロセッサレジスタ１４０に対するアクセスを行う。処理制御部１３３は、ベース命令処理ユニット１５０に対して処理を指示する。
【００１８】
更に、本実施の形態によれば、ベースプロセッサ制御部１３０は、制御インタフェース３３０を介してコプロセッサ２００に接続されている。後に説明されるように、ベースプロセッサ制御部１３０は、この制御インタフェース３３０を介して、コプロセッサ２００によって直接制御され得る。
【００１９】
ベースプロセッサレジスタ１４０は、ベースプロセッサ１００内部のレジスタである。例えば、ベースプロセッサレジスタ１４０は、プログラムシーケンスを制御するためのプログラムレジスタである。そのようなプログラムレジスタとしては、プログラムカウンタ（ｐｒｏｇｒａｍ  ｃｏｕｎｔｅｒ）やスタックポインタ（ｓｔａｃｋ  ｐｏｉｎｔｅｒ）が例示される。ベースプロセッサレジスタ１４０は、データインタフェース３５０を介して、コプロセッサ２００に接続されている。
【００２０】
ベース処理ユニット１５０は、演算論理装置（ＡＬＵ：Ａｒｉｔｈｍｅｔｉｃ  Ｌｏｇｉｃ  Ｕｎｉｔ）を含んでおり、各種データ演算処理を行う。
【００２１】
コプロセッサ２００は、コプロセッサデコーダ２２０、コプロセッサ制御部２３０、コプロセッサレジスタ２４０、及びコプロセッサ処理ユニット２５０を備えている。
【００２２】
コプロセッサデコーダ２２０は、命令インタフェース３１０を介して、ベースプロセッサ１００に接続されている。上述の通り、ベースプロセッサ１００の命令フェッチ部１１０は、デコード前の命令の少なくとも一部を、命令インタフェース３１０を介して、コプロセッサ２００に供給する。コプロセッサ２００用のコプロ命令は、ベース命令セットに組み込まれており、ベースプロセッサ１００の命令フェッチ部１１０によって一旦フェッチされた後、命令インタフェース３１０を介してコプロセッサ２００に供給される。コプロセッサデコーダ２２０は、命令インタフェース３１０を介して、デコード前の命令の少なくとも一部を受け取り、それをデコードする。受け取った命令がコプロ命令であった場合、コプロセッサデコーダ２２０は、デコード結果をコプロセッサ制御部２３０に供給する。
【００２３】
図２は、命令インタフェース３１０の一例を概略的に示している。図２の例では、デコード前の命令の全体（オペコード及びオペランドの両方）が、命令インタフェース３１０を介して、コプロセッサデコーダ２２０に供給される。コプロセッサデコーダ２２０は、受け取った命令の全体をデコードする。
【００２４】
図３は、命令インタフェース３１０の他の例を概略的に示している。図３の例では、デコード前の命令のうちオペランドのみが、命令インタフェース３１０を介して、コプロセッサデコーダ２２０に供給される。コプロセッサデコーダ２２０は、受け取ったオペランドをデコードする。一方、オペコードは、ベースプロセッサ１００のベース命令デコーダ１２０によってデコードされる。そして、オペコードのデコード結果が、命令インタフェース３１０を介して、コプロセッサ２００に供給される。
【００２５】
コプロセッサ制御部２３０は、コプロ命令のデコード結果に応じて、各種制御処理を行う。具体的には、コプロセッサ制御部２３０は、コプロセッサレジスタ２４０に対するアクセスを行う。また、コプロセッサ制御部２３０は、コプロセッサ処理ユニット２５０に対して処理を指示する。
【００２６】
更に、本実施の形態によれば、コプロセッサ制御部２３０は、専用の制御インタフェース３３０を介して、ベースプロセッサ１００のベースプロセッサ制御部１３０に接続されている。そして、コプロセッサ制御部２３０は、この制御インタフェース３３０を介して、ベースプロセッサ制御部１３０を直接制御することができる。具体的には、コプロセッサ制御部２３０は、制御インタフェース３３０を介してベースプロセッサ制御部１３０に制御信号を直接送信し、それにより、コプロセッサ制御部２３０を制御する。その制御信号には、データメモリ２０に対するアクセスを制御（要求）するための「メモリアクセス制御信号」、ベースプロセッサレジスタ１４０に対するアクセスを制御（要求）するための「レジスタアクセス制御信号」、ベース命令処理ユニット１５０に対する指示を制御（要求）するための「処理制御信号」、コプロセッサ２００の状態をベースプロセッサ制御部１３０に通知する「ステータス信号」、等が含まれる。
【００２７】
ベースプロセッサ制御部１３０によるデータメモリ２０へのアクセスをコプロセッサ制御部２３０から直接制御することは、以下「メモリアクセス制御」と参照される。メモリアクセス制御において、コプロセッサ制御部２３０は、制御インタフェース３３０を介してベースプロセッサ制御部１３０にメモリアクセス制御信号を送信し、それにより、ベースプロセッサ制御部１３０にデータメモリ２０に対するアクセスを行わせる。そのメモリアクセス制御信号には、アクセス先のアドレス情報も含まれている。
【００２８】
ベースプロセッサ制御部１３０によるベースプロセッサレジスタ１４０へのアクセスをコプロセッサ制御部２３０から直接制御することは、以下「レジスタアクセス制御」と参照される。レジスタアクセス制御において、コプロセッサ制御部２３０は、制御インタフェース３３０を介してベースプロセッサ制御部１３０にレジスタアクセス制御信号を送信し、それにより、ベースプロセッサ制御部１３０にベースプロセッサレジスタ１４０に対するアクセスを行わせる。そのレジスタアクセス制御信号には、アクセス先のアドレス情報も含まれている。
【００２９】
ベースプロセッサ制御部１３０によるベース命令処理ユニット１５０への指示をコプロセッサ制御部２３０から直接制御することは、以下「処理制御」と参照される。処理制御において、コプロセッサ制御部２３０は、制御インタフェース３３０を介してベースプロセッサ制御部１３０に処理制御信号を送信し、それにより、ベースプロセッサ制御部１３０にベース命令処理ユニット１５０に対して指示を行わせる。
【００３０】
コプロセッサ制御部２３０は、互いに独立したメモリ制御部２３１、レジスタ制御部２３２、及び処理制御部２３３を備えていてもよい。その場合、メモリ制御部２３１は、上述のメモリアクセス制御を行う。レジスタ制御部２３２は、上述のレジスタアクセス制御を行う。処理制御部２３３は、上述の処理制御を行う。
【００３１】
好適には、制御インタフェース３３０は、互いに独立したメモリ制御インタフェース３３１、レジスタ制御インタフェース３３２、及び処理制御インタフェース３３３を備える。メモリ制御インタフェース３３１は、メモリ制御部１３１とメモリ制御部２３１との間を接続しており、メモリ制御部２３１は、このメモリ制御インタフェース３３１を介して上述のメモリアクセス制御を行う。レジスタ制御インタフェース３３２は、レジスタ制御部１３２とレジスタ制御部２３２との間を接続しており、レジスタ制御部２３２は、このレジスタ制御インタフェース３３２を介して上述のレジスタアクセス制御を行う。処理制御インタフェース３３３は、処理制御部１３３と処理制御部２３３との間を接続しており、処理制御部２３３は、この処理制御インタフェース３３３を介して上述の処理制御を行う。このような構成により、メモリアクセス制御、レジスタアクセス制御、処理制御を並列化することができ、好適である。
【００３２】
コプロセッサ処理ユニット２５０は、演算論理装置（ＡＬＵ）を含んでおり、コプロセッサ制御部２３０（処理制御部２３３）からの指示に従って各種データ演算処理を行う。更に、本実施の形態によれば、コプロセッサ処理ユニット２５０は、データインタフェース３５０を介して、ベースプロセッサレジスタ１４０及びデータメモリ２０に接続されている。
【００３３】
コプロセッサ処理ユニット２５０は、データインタフェース３５０を介して、ベースプロセッサレジスタ１４０に対するデータ読み書きを行う。例えば、上記レジスタアクセス制御をトリガとして、ベースプロセッサレジスタ１４０からデータインタフェース３５０に読み出しデータが出力される。コプロセッサ処理ユニット２５０は、データインタフェース３５０を介してその読み出しデータを受け取り、各種データ演算処理を行う。また例えば、コプロセッサ処理ユニット２５０は、上記レジスタアクセス制御をトリガとして、書き込みデータをデータインタフェース３５０に出力し、それにより、書き込みデータをベースプロセッサレジスタ１４０に書き込むこともできる。
【００３４】
また、コプロセッサ処理ユニット２５０は、データインタフェース３５０を介して、データメモリ２０に対するデータ読み書きを行う。例えば、上記メモリアクセス制御をトリガとして、データメモリ２０からデータインタフェース３５０に読み出しデータが出力される。コプロセッサ処理ユニット２５０は、データインタフェース３５０を介してその読み出しデータを受け取り、各種データ演算処理を行う。また例えば、コプロセッサ処理ユニット２５０は、上記メモリアクセス制御をトリガとして、書き込みデータをデータインタフェース３５０に出力し、それにより、書き込みデータをデータメモリ２０に書き込むこともできる。
【００３５】
好適には、データインタフェース３５０は、互いに独立したレジスタデータインタフェース３５１とメモリデータインタフェース３５２を備える。レジスタデータインタフェース３５１は、ベースプロセッサレジスタ１４０とコプロセッサ処理ユニット２５０との間を接続しており、コプロセッサ処理ユニット２５０は、このレジスタデータインタフェース３５１を介してベースプロセッサレジスタ１４０に対するデータ読み書きを行う。メモリデータインタフェース３５２は、データメモリ２０とコプロセッサ処理ユニット２５０との間を接続しており、コプロセッサ処理ユニット２５０は、このメモリデータインタフェース３５２を介してデータメモリ２０に対するデータ読み書きを行う。このような構成により、ベースプロセッサレジスタ１４０及びデータメモリ２０に対するデータ読み書きを並列化することができ、好適である。
【００３６】
尚、図４は変形例を示している。変形例においては、制御インタフェース３３０やデータインタフェース３５０は分割されていない。この場合、上述のメモリアクセス制御、レジスタアクセス制御、及び処理制御は、共通の制御インタフェース３３０を通して行われる。また、ベースプロセッサレジスタ１４０及びデータメモリ２０に対するデータ読み書きは、共通のデータインタフェース３５０を通して行われる。変形例では、インタフェース構成が単純化される。
【００３７】
２．処理
２−１．処理フロー
図５は、本実施の形態に係るプロセッサシステム１による処理を示すフローチャートである。
【００３８】
ステップＳ１１０：
ベースプロセッサ１００の命令フェッチ部１１０が、命令メモリ１０から命令をフェッチする。更に、ベースプロセッサ１００は、フェッチした命令を、命令インタフェース３１０を介してコプロセッサ２００に供給する。コプロセッサ２００に対する命令の供給方式は、図２で示されたもの及び図３で示されたもののいずれでもよい。
【００３９】
ステップＳ１２０：
フェッチした命令がベース命令である場合、ベースプロセッサ１００は、ベース命令に応じた処理を行う。
【００４０】
ステップＳ２１０：
命令は、ベースプロセッサ１００の命令フェッチ部１１０によって一旦フェッチされた後、命令インタフェース３１０を介してコプロセッサ２００に供給される。特に、コプロセッサデコーダ２２０は、命令インタフェース３１０を介して、デコード前の命令の少なくとも一部を受け取る（図２、図３参照）。
【００４１】
ステップＳ２２０：
コプロセッサデコーダ２２０は、受け取った命令の少なくとも一部をデコードする（図２、図３参照）。コプロ命令の場合、処理は、次のステップＳ２３０に進む。
【００４２】
ステップＳ２３０：
コプロセッサ制御部２３０は、制御インタフェース３３０を介して、「リードアクセス制御」を行う。リードアクセス制御は、データメモリ２０からデータを読み出すための上記「メモリアクセス制御」、あるいは／及び、ベースプロセッサレジスタ１４０からデータを読み出すための上記「レジスタアクセス制御」を含む。
【００４３】
ステップＳ１３０：
上記ステップＳ２３０の「リードアクセス制御」に従って、ベースプロセッサ１００のベースプロセッサ制御部１３０は、データメモリ２０あるいは／及びベースプロセッサレジスタ１４０に対するリードアクセスを行う。
【００４４】
ステップＳ１４０：
上記ステップＳ１３０のリードアクセスの結果、データメモリ２０あるいは／及びベースプロセッサレジスタ１４０からデータが読み出される。読み出しデータは、データインタフェース３５０に出力される。
【００４５】
ステップＳ２４０：
コプロセッサ処理ユニット２５０は、データインタフェース３５０を介して当該読み出しデータを受け取る。
【００４６】
ステップＳ２５０：
続いて、コプロセッサ処理ユニット２５０は、当該読み出しデータを用いて演算処理を行う。そして、コプロセッサ処理ユニット２５０は、演算処理の結果を示す演算結果データを作成する。
【００４７】
ステップＳ２６０：
次に、コプロセッサ制御部２３０は、制御インタフェース３３０を介して、「ライトアクセス制御」を行う。ライトアクセス制御は、データメモリ２０にデータを書き込むための上記「メモリアクセス制御」、あるいは／及び、ベースプロセッサレジスタ１４０にデータを書き込むための上記「レジスタアクセス制御」を含む。
【００４８】
ステップＳ２７０：
また、コプロセッサ処理ユニット２５０は、上記ステップＳ２５０で得られた演算結果データを、データインタフェース３５０を介してデータメモリ２０あるいは／及びベースプロセッサレジスタ１４０に出力する。
【００４９】
ステップＳ１５０：
上記ステップＳ２６０の「ライトアクセス制御」に従って、ベースプロセッサ１００のベースプロセッサ制御部１３０は、データメモリ２０あるいは／及びベースプロセッサレジスタ１４０に対するライトアクセスを行う。
【００５０】
ステップＳ１６０：
コプロセッサ処理ユニット２５０から出力された演算結果データが、データインタフェース３５０を介して、データメモリ２０あるいは／及びベースプロセッサレジスタ１４０に書き込まれる。尚、データメモリ２０とベースプロセッサレジスタ１４０のそれぞれに書き込まれる演算結果データは、互いに異なっていてもよい。
【００５１】
尚、コプロセッサ制御部２３０がベースプロセッサ制御部１３０に対してリードアクセス制御やライトアクセス制御を行う際、ベースプロセッサ制御部１３０は、ベース命令によるレジスタ／メモリアクセス要求を待たせてもよい。そのような待機処理を実現するための１つの方法として、上述の「ステータス信号」を利用することが考えられる。ステータス信号は、コプロセッサ２００の状態をベースプロセッサ制御部１３０に通知するための信号であり、コプロセッサ制御部２３０から制御インタフェース３３０を通してベースプロセッサ制御部１３０に送られる制御信号の一種である。ベースプロセッサ制御部１３０は、コプロセッサ制御部２３０から受け取るステータス信号を参照することによって、ベース命令によるレジスタ／メモリアクセス要求を待たせるか否かを決定することができる。図６〜図８を参照して、ステータス信号を利用した処理の一例を説明する。
【００５２】
図６は、図５で示されたリードアクセス制御に関連する処理（ステップＳ２３０、Ｓ２４０、Ｓ１３０、Ｓ１４０）の一例を示すフローチャートである。リードアクセス制御に際して、コプロセッサ制御部２３０は、制御インタフェース３３０を介して、“ステータス信号（Ｗａｉｔ）”をベースプロセッサ制御部１３０に送信する（ステップＳ２３１）。このステータス信号（Ｗａｉｔ）は、ベース命令によるレジスタ／メモリアクセス要求を待たせるための“ウェイト信号”である。ベースプロセッサ制御部１３０は、このステータス信号（Ｗａｉｔ）をコプロセッサ制御部２３０から受け取ると、それに応答して、ベース命令によるレジスタ／メモリアクセスを禁止する（ステップＳ１３１）。
【００５３】
そして、コプロセッサ制御部２３０は、制御インタフェース３３０を介して、リードアクセス制御信号をベースプロセッサ制御部１３０に送信する（ステップＳ２３２）。ベースプロセッサ制御部１３０は、コプロセッサ制御部２３０から受け取ったリードアクセス制御信号に応答して、データメモリ２０あるいは／及びベースプロセッサレジスタ１４０に対するリードアクセスを行う（ステップＳ１３２）。そのリードアクセスの結果、データメモリ２０あるいは／及びベースプロセッサレジスタ１４０からデータが読み出され（ステップＳ１４０）、コプロセッサ処理ユニット２５０は、データインタフェース３５０を介して当該読み出しデータを受け取る（ステップＳ２４０）。
【００５４】
このようにしてリードアクセスが完了すると、コプロセッサ制御部２３０は、制御インタフェース３３０を介して、“ステータス信号（Ｗａｉｔ解除）”をベースプロセッサ制御部１３０に送信する（ステップＳ２３３）。このステータス信号（Ｗａｉｔ解除）は、上述のステップＳ１３１で設定されたレジスタ／メモリアクセスの禁止を解除するための“ウェイト解除信号”である。ベースプロセッサ制御部１３０は、このステータス信号（Ｗａｉｔ解除）をコプロセッサ制御部２３０から受け取ると、それに応答して、レジスタ／メモリアクセスの禁止を解除する（ステップＳ１３３）。
【００５５】
図７は、図５で示されたライトアクセス制御に関連する処理（ステップＳ２６０、Ｓ２７０、Ｓ１５０、Ｓ１６０）の一例を示すフローチャートである。ライトアクセス制御に際して、コプロセッサ制御部２３０は、制御インタフェース３３０を介して、“ステータス信号（Ｗａｉｔ）”をベースプロセッサ制御部１３０に送信する（ステップＳ２６１）。このステータス信号（Ｗａｉｔ）は、ベース命令によるレジスタ／メモリアクセス要求を待たせるための“ウェイト信号”である。ベースプロセッサ制御部１３０は、このステータス信号（Ｗａｉｔ）をコプロセッサ制御部２３０から受け取ると、それに応答して、ベース命令によるレジスタ／メモリアクセスを禁止する（ステップＳ１５１）。
【００５６】
そして、コプロセッサ制御部２３０は、制御インタフェース３３０を介して、ライトアクセス制御信号をベースプロセッサ制御部１３０に送信する（ステップＳ２６２）。また、コプロセッサ処理ユニット２５０は、上記ステップＳ２５０で得られた演算結果データを、データインタフェース３５０を介してデータメモリ２０あるいは／及びベースプロセッサレジスタ１４０に出力する（ステップＳ２７０）。ベースプロセッサ制御部１３０は、コプロセッサ制御部２３０から受け取ったライトアクセス制御信号に応答して、データメモリ２０あるいは／及びベースプロセッサレジスタ１４０に対するライトアクセスを行う（ステップＳ１５２）。そのライトアクセスの結果、演算結果データが、データインタフェース３５０を介して、データメモリ２０あるいは／及びベースプロセッサレジスタ１４０に書き込まれる（ステップＳ１６０）。
【００５７】
このようにしてライトアクセスが完了すると、コプロセッサ制御部２３０は、制御インタフェース３３０を介して、“ステータス信号（Ｗａｉｔ解除）”をベースプロセッサ制御部１３０に送信する（ステップＳ２６３）。このステータス信号（Ｗａｉｔ解除）は、上述のステップＳ１５１で設定されたレジスタ／メモリアクセスの禁止を解除するための“ウェイト解除信号”である。ベースプロセッサ制御部１３０は、このステータス信号（Ｗａｉｔ解除）をコプロセッサ制御部２３０から受け取ると、それに応答して、レジスタ／メモリアクセスの禁止を解除する（ステップＳ１５３）。
【００５８】
図８は、ベースプロセッサ１００の処理例を示すフローチャートである。命令フェッチ部１１０は、命令メモリ１０から命令をフェッチする（ステップＳ１１０）。フェッチされた命令は、命令インタフェース３１０を介してコプロセッサ２００に供給される（ステップＳ２１０）。また、フェッチされた命令は、ベース命令デコーダ１２０に供給される。
【００５９】
ベース命令デコーダ１２０は、フェッチされた命令のデコードを行う（ステップＳ１２１）。その命令がベース命令である場合（ステップＳ１２２；Ｎｏ）、ベース命令デコーダ１２０は、デコード結果をベースプロセッサ制御部１３０に供給する。ベースプロセッサ制御部１３０は、そのデコード結果に応じた処理を実行する（ステップＳ１２３）。そして、処理は、ステップＳ１１０に戻る。一方、その命令がコプロ命令である場合（ステップＳ１２２；Ｙｅｓ）、ベースプロセッサ制御部１３０は、コプロセッサ２００からの上述のステータス信号の入力を待つ（ステップＳ１２４）。
【００６０】
上述の待機処理が不要である場合（ステップＳ１２５；Ｎｏ）、処理はステップＳ１１０に戻る。一方、コプロセッサ２００から上述の“ステータス信号（Ｗａｉｔ）”を受け取った場合（ステップＳ１２５；Ｙｅｓ）、ベースプロセッサ制御部１３０は、ベース命令によるレジスタ／メモリアクセスを禁止する（ステップＳ１２６）。
【００６１】
ベース命令によるレジスタ／メモリアクセスが禁止された場合、ベースプロセッサ制御部１３０は、更に、コプロセッサ２００からの上述の“ステータス信号（Ｗａｉｔ解除）”の入力を待つ（ステップＳ１２７）。コプロセッサ２００から“ステータス信号（Ｗａｉｔ解除）”を受け取ると（ステップＳ１２７；Ｙｅｓ）、ベースプロセッサ制御部１３０は、上記ステップＳ１２６で設定されたレジスタ／メモリアクセスの禁止を解除する（ステップＳ１２８）。
【００６２】
２−２．処理例（１）
次に、本実施の形態による処理の具体例を説明する。一例として、ベースプロセッサ１００のプログラムカウンタをコプロセッサ２００から制御することを考える。本例では、制御対象のベースプロセッサレジスタ１４０がプログラムカウンタである。
【００６３】
上記リードアクセス制御（ステップＳ２３０）において、コプロセッサ制御部２３０は、データメモリ２０からデータを読み出すためのメモリアクセス制御を行う。これにより、データメモリ２０からデータが読みだされ（ステップＳ１３０、Ｓ１４０）、コプロセッサ処理ユニット２５０は、データインタフェース３５０を介して当該読み出しデータを受け取る（ステップＳ２４０）。
【００６４】
続いて、ステップＳ２５０において、コプロセッサ処理ユニット２５０は、当該読み出しデータに基いて、プログラムカウンタ１４０に格納すべき分岐先アドレスを計算する。
【００６５】
次に、上記ライトアクセス制御（ステップＳ２６０）において、コプロセッサ制御部２３０は、プログラムカウンタ１４０にデータを書き込むためのレジスタアクセス制御を行う。そして、コプロセッサ処理ユニット２５０は、計算結果である分岐先アドレスを、データインタフェース３５０を介してプログラムカウンタ１４０に書き込む（ステップＳ２７０、Ｓ１５０、Ｓ１６０）。
【００６６】
このようにして、ベースプロセッサ１００のプログラムカウンタを、コプロセッサ２００からの制御によって更新することが可能となる。つまり、ベースプロセッサ１００におけるプログラムシーケンスを、コプロセッサ２００から制御することが可能となる。
【００６７】
２−３．処理例（２）
他の例として、ベースプロセッサ１００のスタックポインタをコプロセッサ２００から制御することを考える。本例では、制御対象のベースプロセッサレジスタ１４０がスタックポインタである。
【００６８】
上記リードアクセス制御（ステップＳ２３０）において、コプロセッサ制御部２３０は、スタックポインタ１４０からデータを読み出すためのレジスタアクセス制御を行う。これにより、スタックポインタ１４０からスタックポインタ値が読みだされ（ステップＳ１３０、Ｓ１４０）、コプロセッサ処理ユニット２５０は、データインタフェース３５０を介して当該スタックポインタ値を受け取る（ステップＳ２４０）。
【００６９】
続いて、ステップＳ２５０において、コプロセッサ処理ユニット２５０は、当該スタックポインタ値を所定値減少させ、新たなスタックポインタ値を計算する。
【００７０】
次に、上記ライトアクセス制御（ステップＳ２６０）において、コプロセッサ制御部２３０は、スタックポインタ１４０にデータを書き込むためのレジスタアクセス制御、及びデータメモリ２０上のスタック領域にデータを書き込むためのメモリアクセス制御を行う。そして、コプロセッサ処理ユニット２５０は、データインタフェース３５０を介して、新たなスタックポインタ値をスタックポインタ１４０に書き込み、また、スタック領域に退避データをプッシュする（ステップＳ２７０、Ｓ１５０、Ｓ１６０）。尚、図１で示された構成の場合、スタックポインタ１４０に対する処理とデータメモリ２０に対する処理を並列化することが可能であり、好適である。
【００７１】
このようにして、ベースプロセッサ１００のスタック操作を、コプロセッサ２００からの制御によって制御することが可能となる。つまり、ベースプロセッサ１００におけるプログラムシーケンスを、コプロセッサ２００から制御することが可能となる。
【００７２】
３．効果
本実施の形態によれば、ベースプロセッサ１００が行うレジスタアクセスやメモリアクセスをコプロセッサ２００側から制御することが可能となる。例えば、ベースプロセッサ１００におけるプログラムシーケンスを、コプロセッサ２００から制御することが可能となる。これにより、プロセッサシステムの性能を著しく向上させることが可能となる。尚、図１で示された構成の場合、ベースプロセッサレジスタ１４０に対する処理とデータメモリ２０に対する処理を並列化することが可能であり、好適である。
【００７３】
また、本実施の形態によれば、コプロセッサ２００用のコプロ命令は、ベース命令セットに組み込まれており、ベースプロセッサ１００によって一旦フェッチされた後、命令インタフェース３１０を介してコプロセッサ２００に供給される。コプロセッサ２００専用の命令メモリや命令フェッチ部は不要であり、ベースプロセッサ１００が共通の命令メモリ１０から命令を順次フェッチするだけでよい。コプロセッサ２００からベースプロセッサ１００に対する“割り込み処理”は発生せず、そのような割り込み処理に起因するオーバーヘッドも生じない。
【００７４】
また、本実施の形態によれば、プロトコル制御からの処理性能向上やコード効率向上（コードサイズ縮小）といった効果も期待される。
【００７５】
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
【符号の説明】
【００７６】
１    プロセッサシステム
１０    命令メモリ
２０    データメモリ
１００    ベースプロセッサ
１１０    命令フェッチ部
１２０    ベース命令デコーダ
１３０    ベースプロセッサ制御部
１３１    メモリ制御部
１３２    レジスタ制御部
１３３    処理制御部
１４０    ベースプロセッサレジスタ
１５０    ベース命令処理ユニット
２００    コプロセッサ
２２０    コプロセッサデコーダ
２３０    コプロセッサ制御部
２３１    メモリ制御部
２３２    レジスタ制御部
２３３    処理制御部
２４０    コプロセッサレジスタ
２５０    コプロセッサ処理ユニット
３１０    命令インタフェース
３２０    メモリアクセスインタフェース
３３０    制御インタフェース
３３１    メモリ制御インタフェース
３３２    レジスタ制御インタフェース
３３３    処理制御インタフェース
３５０    データインタフェース
３５１    レジスタデータインタフェース
３５２    メモリデータインタフェース
【図１】
0005555514.tif 000002
【図２】
0005555514.tif 000003
【図３】
0005555514.tif 000004
【図４】
0005555514.tif 000005
【図５】
0005555514.tif 000006
【図６】
0005555514.tif 000007
【図７】
0005555514.tif 000008
【図８】
0005555514.tif 000009