(57)【要約】【課題】  主プロセッサとコプロセッサとの間でのデータ転送に要するサイクル数を低減し得る演算処理装置を提供する。【解決手段】  主プロセッサにおける、命令を逐次解釈して命令に基づく制御を行う命令解釈制御部は、単一命令中のフィールド２２で前記コプロセッサに実行させるべき演算処理の種別を指定してフィールド２４で当該演算処理の対象が格納されている第１のレジスタを指定してフィールド２３で前記コプロセッサが演算処理をした結果が格納されるべき第２のレジスタを指定しコプロセッサへの演算を依頼するコプロセッサ演算命令を、取得し解釈することにより、前記コプロセッサに、第１のレジスタの内容を演算処理対象として当該種別の演算処理を実行させ、更に、コプロセッサによりなされた演算処理の結果を、第２のレジスタに書き込む制御を行う。【選択図】  図２
2006048661.tif 000002
【特許請求の範囲】
【請求項１】
主プロセッサとコプロセッサとを備える演算処理装置であって、
前記主プロセッサは、命令を逐次解釈して命令に基づく制御を行う命令解釈制御部を有し、
前記命令解釈制御部は、前記コプロセッサに実行させるべき演算処理の種別と、当該演算処理の対象が格納されている第１記憶領域と、前記コプロセッサが演算処理をした結果が格納されるべき第２記憶領域とを指定する処理依頼命令を解釈することにより、前記コプロセッサに、第１記憶領域の内容を演算処理対象として当該種別の演算処理を実行させ、更に、前記コプロセッサによりなされた、ある演算処理の結果を、第２記憶領域に書き込む制御を行う
ことを特徴とする演算処理装置。
【請求項２】
前記主プロセッサは、演算命令に基づき演算を行う際に、演算の対象又は結果を格納するための複数のレジスタを有しており、
処理依頼命令は、第１記憶領域を指定するものとして前記複数のレジスタのうちいずれかを識別する第１データと、第２記憶領域を指定するものとして前記複数のレジスタのうちいずれかを識別する第２データとを含み、
前記命令解釈制御部は、前記コプロセッサに、処理依頼命令に含まれる第１データで識別されるレジスタの内容を演算処理対象として、当該処理依頼命令で指定される種別の演算処理を実行させ、更に、前記コプロセッサによりなされた、ある演算処理の結果を、当該処理依頼命令に含まれる第２データで識別されるレジスタに書き込む制御を行う
ことを特徴とする請求項１記載の演算処理装置。
【請求項３】
処理依頼命令は、コードフォーマットとして、前記主プロセッサが実行可能な命令群中で当該処理依頼命令を他の命令と識別するための命令識別コードを格納するフィールドの他に、コプロセッサに実行させるべき演算処理の種別を示すコプロセッサ用命令コードを格納するフィールドと、第１データを格納するフィールドと、第２データを格納するフィールドとの各々を含み、
前記命令解釈制御部は、処理依頼命令に含まれるコプロセッサ用命令コードを前記コプロセッサへと送出するよう制御し、当該処理依頼命令に含まれる第１データにより識別されるレジスタの内容であるソースデータを前記コプロセッサへと送出するよう制御し、更に、前記コプロセッサから送出された、ある演算処理の結果である結果データを取得して、当該処理依頼命令に含まれる第２データにより識別されるレジスタに書き込むよう制御し、
前記コプロセッサは、前記主プロセッサから送出されたコプロセッサ用命令コードを解釈し、前記主プロセッサから送出されたソースデータを取得して演算処理対象にして、当該コプロセッサ用命令コードにより示されている種別の演算処理を実行し、当該演算処理の結果である結果データを前記主プロセッサへと送出する
ことを特徴とする請求項２記載の演算処理装置。
【請求項４】
前記命令解釈制御部は、処理依頼命令に含まれるコプロセッサ用命令コードを前記コプロセッサへ送出する際に、当該処理依頼命令に含まれる第２データを当該コプロセッサ用命令コードと共に前記コプロセッサに送出し、
前記コプロセッサは、前記主プロセッサから送出されたコプロセッサ用命令コードにより示されている種別の演算処理を実行した結果である結果データを前記主プロセッサへと送出する際に、当該コプロセッサ用命令コードと共に前記主プロセッサから送出された第２データを、当該結果データと共に前記主プロセッサへと送出し、
前記命令解釈制御部は、前記コプロセッサから共に送出された結果データと第２データとを取得して、当該結果データを当該第２データにより識別されるレジスタに書き込むよう制御する
ことを特徴とする請求項３記載の演算処理装置。
【請求項５】
前記命令解釈制御部が処理依頼命令に含まれる第２データにより識別されるレジスタに書き込むよう制御する結果データは、前記コプロセッサから送出された、当該処理依頼命令で指定された演算処理の結果であり、
前記命令解釈制御部は、前記演算処理の各種別に対応付けて演算処理時間を示す時間情報を予め記憶しており、処理依頼命令に含まれていた前記コプロセッサ用命令コードと、前記ソースデータとを前記コプロセッサへと送出した後、当該コプロセッサ用命令コードで示される演算処理の種別に対応して記憶している時間情報が示す演算処理時間が経過した時に、前記コプロセッサから送出された結果データを、当該処理依頼命令に含まれていた第２データにより識別されたレジスタに書き込むよう制御する
ことを特徴とする請求項３記載の演算処理装置。
【請求項６】
前記命令解釈制御部は、前記コプロセッサから送出された結果データが前記処理依頼命令に含まれる第２データにより識別されるレジスタに書き込まれる際に、所定信号を前記コプロセッサへと送出するよう制御し、
前記コプロセッサは、前記所定信号が前記主プロセッサにより送出されたことを検知するまで、前記結果データの送出を継続し、当該検知後に当該結果データの送出を停止する
ことを特徴とする請求項３記載の演算処理装置。
【請求項７】
前記コプロセッサは、コプロセッサ用命令コードにより指定される各種別の演算処理について、演算処理開始からいずれも同一時間の経過後に結果データを出力するものであり、
前記命令解釈制御部が処理依頼命令に含まれる第２データにより識別されるレジスタに書き込むよう制御する結果データは、前記コプロセッサから送出された、当該処理依頼命令に先行して解釈した別の処理依頼命令により指定される演算処理の結果データであり、
前記命令解釈制御部は、処理依頼命令に第２データと共に含まれていた前記コプロセッサ用命令コードを前記コプロセッサへと送出した後、当該処理依頼命令に後続して別の命令を解釈する前に、前記コプロセッサが当該処理依頼命令に先行する処理依頼命令で指定した演算処理を行った結果として送出した結果データを、当該第２データにより識別されたレジスタに書き込むよう制御する
ことを特徴とする請求項３記載の演算処理装置。
【請求項８】
前記命令解釈制御部が行うところの、処理依頼命令に含まれる第２データで識別されるレジスタに書き込む前記制御は、当該処理依頼命令で指定される種別の演算処理を前記コプロセッサに実行させた結果を当該レジスタに書き込む制御である
ことを特徴とする請求項２記載の演算処理装置。
【請求項９】
前記演算処理装置は第１及び第２のコプロセッサを備え、
第２のコプロセッサは、複数のレジスタを有しており、
前記処理依頼命令は、第１のコプロセッサに実行させるべき演算処理の種別の指定と、第１記憶領域を指定するものとして第２のコプロセッサの複数のレジスタのうちいずれかを識別する第１データと、第２記憶領域を指定するものとして第２のコプロセッサの複数のレジスタのうちいずれかを識別する第２データとを含み、
前記命令解釈制御部は、第１のコプロセッサに、処理依頼命令に含まれる第１データで識別される、第２のコプロセッサ内のレジスタの内容を演算処理対象として、当該処理依頼命令で指定される種別の演算処理を実行させ、更に、第１のコプロセッサによりなされた、ある演算処理の結果を、当該処理依頼命令に含まれる第２データで識別される、第２のコプロセッサ内のレジスタに書き込む制御を行う
ことを特徴とする請求項１記載の演算処理装置。
【請求項１０】
入力されるデータに基づいて、クレーム１の演算処理装置にコプロセッサと共に備えられている主プロセッサに実行させるための機械語の命令列を生成する命令列生成装置であって、
記憶手段と、
入力されたデータを取得する入力データ取得手段と、
前記入力されたデータに基づいて、コプロセッサに実行させるべき演算処理の種別と、当該演算処理の対象が格納されている、当該コプロセッサの外部の第１記憶領域と、前記コプロセッサが演算処理をした結果が格納されるべき、当該コプロセッサの外部の第２記憶領域とを指定する処理依頼命令を含む機械語の命令列を生成し、前記記憶手段に当該命令列を記録する命令列生成手段とを備える
ことを特徴とする命令列生成装置。
【請求項１１】
前記命令列生成手段により生成される処理依頼命令は、コードフォーマットとして、前記主プロセッサが実行可能な命令群中で当該処理依頼命令を他の命令と識別するための命令識別コードを格納するフィールドの他に、コプロセッサに実行させるべき演算処理の種別を示すコプロセッサ用命令コードを格納するフィールドと、第１記憶領域を指定するものとして、前記主プロセッサが有する複数のレジスタのうちのいずれかを識別する第１データを格納するフィールドと、第２記憶領域を指定するものとして、前記主プロセッサが有する複数のレジスタのうちのいずれかを識別する第２データを格納するフィールドとの各々を含む
ことを特徴とする請求項１０記載の命令列生成装置。
【請求項１２】
前記命令列生成装置は、更に、コプロセッサが実行可能な演算処理の各種別に対応付けて、演算処理時間を示す時間情報を予め記憶している演算時間管理手段を含み、
前記命令列生成手段は、生成した処理依頼命令に含まれる第２データで識別される前記主プロセッサのレジスタの内容を演算対象とする演算命令を、命令列において当該処理依頼命令に後続する位置に生成する際には、当該処理依頼命令に含まれるコプロセッサ用命令コードで示される種別の演算処理に関する演算処理時間を、前記演算時間管理手段により記憶されている時間情報に基づいて特定し、当該処理依頼命令から、特定した演算処理時間に相当する命令数分以上の間隔を空けた位置に当該演算命令を置くようにして前記命令列の生成を行う
ことを特徴とする請求項１１記載の命令列生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサとコプロセッサとを備える演算処理装置に関し、特に、プロセッサと所定の演算を行うコプロセッサとの間での演算対象及び演算結果のデータ転送制御技術に関する。
【背景技術】
【０００２】
従来、計算機システムにおける演算処理装置として、汎用的なプロセッサ（以下、「主プロセッサ」という。）と特定演算用のプロセッサ（以下、「コプロセッサ」という。）とを含み、これら複数のプロセッサが協調して動作するように構成されている演算処理装置がある。
このような主プロセッサとコプロセッサとを含む演算処理装置は、例えば、ＭＰＥＧ（Moving Picture Experts Group）方式での動画像の符号化（エンコード）処理に用いられる。
【０００３】
このエンコード処理における計算量の大部分を占めるＭＥ（Motion Estimation）処理において、処理対象とする動画を構成する各画像の画素データ間の差分絶対値演算及びその和を計算する必要があり、一般に非常に多くの画素データを計算対象とすることから、その差分絶対値演算及びその和に係る演算回数は非常に多いものとなる。
そこで、この差分絶対値演算及びその和を、並列計算することに特化した演算器を有するコプロセッサに計算させ、それ以外に、エンコード処理のために必要な処理を、主プロセッサが行うことにより、処理全体に必要となるクロックサイクル（以下、単に「サイクル」という。）の数を低減する。
【０００４】
このように、主プロセッサとコプロセッサとが協調動作を行う演算処理装置は、当然ながら、単一のプロセッサからなる演算処理装置に処理を行わせる場合よりも、少ないサイクル数で目的の処理を完了できるので、演算処理装置の動作周波数を比較的低く抑えてもその目的の処理を完了できるようになる。
一般に演算処理装置の動作周波数を高めるための技術開発には多くのコストを要するため、目的の処理を完了するためのサイクル数を低減することは、比較的コストの低い演算処理装置により目的の処理を行わせることができるようになるという効果に繋がり、演算処理装置の動作周波数を低く抑えることは消費電力を低く抑えることができるようになるという効果に繋がる。
【０００５】
ところで、従来、コプロセッサに行わせるべき演算を指示するための命令として、コプロセッサ・データ操作命令、コプロセッサ・レジスタ転送命令が知られており、主プロセッサとコプロセッサとの間での演算対象や演算結果のデータ転送を指示するための命令としては、コプロセッサ・レジスタ転送命令が知られている（非特許文献１参照）。
このコプロセッサ・レジスタ転送命令は、主プロセッサとコプロセッサとの間での一方向のデータ転送を指定する命令である。
【０００６】
具体的に言えば、このコプロセッサ・レジスタ転送命令では、演算対象であるソースデータ及び演算結果であるデスティネーションデータのいずれか一方しか主プロセッサのレジスタを指定できない。
図１７に、コプロセッサに演算を行わせるプログラムの例を示す。
同図のプログラムにおいて、行Ｌ１における命令ＭＣＲは、コプロセッサへのデータ転送を伴いコプロセッサに指示をするコプロセッサ・レジスタ転送命令であり、コプロセッサを特定する第１オペランドｐ０と、コプロセッサの処理内容を特定する第２オペランドであって値０なら３サイクル要する特定のコプロセッサ演算を行う旨を示すものと、演算対象のソースデータが格納されている主プロセッサ内のレジスタを指定する第３オペランドｒ１と、コプロセッサ内で演算に用いられるレジスタを指定する第４オペランドＣｒ１及び第５オペランドＣｒ２とからなる。また、行Ｌ２及び行Ｌ３における命令ｎｏｐは１サイクル費やして特段の処理を行わない命令であり、行Ｌ４における命令ＭＲＣは、コプロセッサからのデータ転送を伴いコプロセッサに指示をするコプロセッサ・レジスタ転送命令であり、コプロセッサを特定する第１オペランドｐ０と、コプロセッサの処理内容を特定する第２オペランドであって値が１なら演算を行わない旨を示すものと、演算結果であるデスティネーションデータが格納されるべき主プロセッサ内のレジスタを指定する第３オペランドｒ０と、コプロセッサ内で演算に用いられるレジスタを指定する第４オペランドＣｒ１及び第５オペランドＣｒ２とからなる。
【０００７】
このように、ソースデータは主プロセッサに格納されており、そのソースデータに基づいてコプロセッサにおいて演算を行い、その演算結果として生成されたデスティネーションデータを主プロセッサに格納しなければならない場合には、ソースデータの転送のためと、デスティネーションデータの転送のためにコプロセッサ・レジスタ転送命令を２度発行する。
【非特許文献１】Ｓｔｅｖｅ  Ｆｕｒｂｅｒ著，アーム株式会社（監訳），「改訂ＡＲＭプロセッサ」，２００１年１２月１８日（初版発行），ＣＱ出版株式会社（発行）、ｐ．１２２−１２６
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は、上述したサイクル数低減による有用な効果を得るべくなされたものであり、従来技術よりも、主プロセッサとコプロセッサとの間でのデータ転送に要するサイクル数を低減し得る演算処理装置を提供することを目的とし、また、この演算処理装置に入力すべき命令列を生成する命令列生成装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、本発明に係る演算処理装置は、主プロセッサとコプロセッサとを備える演算処理装置であって、前記主プロセッサは、命令を逐次解釈して命令に基づく制御を行う命令解釈制御部を有し、前記命令解釈制御部は、前記コプロセッサに実行させるべき演算処理の種別と、当該演算処理の対象が格納されている第１記憶領域と、前記コプロセッサが演算処理をした結果が格納されるべき第２記憶領域とを指定する処理依頼命令を解釈することにより、前記コプロセッサに、第１記憶領域の内容を演算処理対象として当該種別の演算処理を実行させ、更に、前記コプロセッサによりなされた、ある演算処理の結果を、第２記憶領域に書き込む制御を行うことを特徴とする。
【発明の効果】
【００１０】
上記構成の演算処理装置は、コプロセッサに演算処理を依頼するための処理依頼命令が、コプロセッサにより実行されるべき演算処理の種別の指定と、コプロセッサへのソースデータの転送元となる第１記憶領域の指定と、コプロセッサからのデスティネーションデータの転送先となる第２記憶領域の指定とを併せ持っている場合に、この処理依頼命令に対応して動作可能であるため、目的の処理を完了するために必要なサイクル数を比較的低く抑え得る。基本的に演算処理装置は、１命令の実行に１サイクル以上を必要とするため、同じ目的を達成するための命令数が少なければ命令数が多い場合よりも目的達成に必要なサイクル数を抑え得るからである。また、このような演算処理装置に、処理依頼命令を行わせるためのプログラムのコードサイズを、従来のものより小さくすることができるという効果も得られる。このことは、命令メモリの容量低減化に繋がり得る。
【００１１】
ここで、前記主プロセッサは、演算命令に基づき演算を行う際に、演算の対象又は結果を格納するための複数のレジスタを有しており、処理依頼命令は、第１記憶領域を指定するものとして前記複数のレジスタのうちいずれかを識別する第１データと、第２記憶領域を指定するものとして前記複数のレジスタのうちいずれかを識別する第２データとを含み、前記命令解釈制御部は、前記コプロセッサに、処理依頼命令に含まれる第１データで識別されるレジスタの内容を演算処理対象として、当該処理依頼命令で指定される種別の演算処理を実行させ、更に、前記コプロセッサによりなされた、ある演算処理の結果を、当該処理依頼命令に含まれる第２データで識別されるレジスタに書き込む制御を行うこととしてもよい。
【００１２】
これにより、主プロセッサのレジスタ群の中のいずれかのレジスタを、ソースデータの転送元及びデスティネーションデータの転送先として指定してコプロセッサに演算を行わせるための１つの処理依頼命令に対応して演算処理装置が動作するため、主プロセッサの演算結果をコプロセッサに引き渡して特定の演算を行わせて、かつ、あるコプロセッサによる演算結果を主プロセッサで演算対象にするような処理を１つの命令で記述できることから、そのような処理手順が積み重ねられて構成される一連の処理に対応するプログラムを、少ない命令数の命令列で記述することができ、この結果としてその一連の処理についての実行性能は従来よりも向上する。
【００１３】
また、処理依頼命令は、コードフォーマットとして、前記主プロセッサが実行可能な命令群中で当該処理依頼命令を他の命令と識別するための命令識別コードを格納するフィールドの他に、コプロセッサに実行させるべき演算処理の種別を示すコプロセッサ用命令コードを格納するフィールドと、第１データを格納するフィールドと、第２データを格納するフィールドとの各々を含み、前記命令解釈制御部は、処理依頼命令に含まれるコプロセッサ用命令コードを前記コプロセッサへと送出するよう制御し、当該処理依頼命令に含まれる第１データにより識別されるレジスタの内容であるソースデータを前記コプロセッサへと送出するよう制御し、更に、前記コプロセッサから送出された、ある演算処理の結果である結果データを取得して、当該処理依頼命令に含まれる第２データにより識別されるレジスタに書き込むよう制御し、前記コプロセッサは、前記主プロセッサから送出されたコプロセッサ用命令コードを解釈し、前記主プロセッサから送出されたソースデータを取得して演算処理対象にして、当該コプロセッサ用命令コードにより示されている種別の演算処理を実行し、当該演算処理の結果である結果データを前記主プロセッサへと送出することとしてもよい。
【００１４】
これにより、主プロセッサの演算結果をコプロセッサに引き渡して特定の演算を行わせて、かつ、その特定の演算の演算結果を更に主プロセッサで演算対象にするような処理におけるコプロセッサへのデータの転送元となる主プロセッサのレジスタの指定と、コプロセッサに行わせるべき演算処理の種別の指定と、コプロセッサからのデータの転送先となる主プロセッサのレジスタの指定とを、１つの命令で記述できるようになる。
【００１５】
また、前記命令解釈制御部は、処理依頼命令に含まれるコプロセッサ用命令コードを前記コプロセッサへ送出する際に、当該処理依頼命令に含まれる第２データを当該コプロセッサ用命令コードと共に前記コプロセッサに送出し、前記コプロセッサは、前記主プロセッサから送出されたコプロセッサ用命令コードにより示されている種別の演算処理を実行した結果である結果データを前記主プロセッサへと送出する際に、当該コプロセッサ用命令コードと共に前記主プロセッサから送出された第２データを、当該結果データと共に前記主プロセッサへと送出し、前記命令解釈制御部は、前記コプロセッサから共に送出された結果データと第２データとを取得して、当該結果データを当該第２データにより識別されるレジスタに書き込むよう制御することとしてもよい。
【００１６】
これにより、主プロセッサ側で、処理依頼命令に対応してコプロセッサに演算開始のトリガとなる信号つまりコプロセッサ用命令コード等を送出した後に、何サイクルか経過してからその処理依頼命令に対応してコプロセッサによる演算結果が返却されるまでの間、ずっとそのコプロセッサによる演算結果を格納すべきレジスタがいずれであるかを記憶保持しておく必要がなくなり、コプロセッサに一旦預けておいて後に戻された情報に基づいて特定されるレジスタに、コプロセッサによる演算結果を格納しさえすればよくなる。
【００１７】
また、前記命令解釈制御部が処理依頼命令に含まれる第２データにより識別されるレジスタに書き込むよう制御する結果データは、前記コプロセッサから送出された、当該処理依頼命令で指定された演算処理の結果であり、前記命令解釈制御部は、前記演算処理の各種別に対応付けて演算処理時間を示す時間情報を予め記憶しており、処理依頼命令に含まれていた前記コプロセッサ用命令コードと、前記ソースデータとを前記コプロセッサへと送出した後、当該コプロセッサ用命令コードで示される演算処理の種別に対応して記憶している時間情報が示す演算処理時間が経過した時に、前記コプロセッサから送出された結果データを、当該処理依頼命令に含まれていた第２データにより識別されたレジスタに書き込むよう制御することとしてもよい。
【００１８】
これにより、主プロセッサは、処理依頼命令に対応してコプロセッサに演算開始を行わせた後に、コプロセッサによる演算結果が返却されるべきレジスタを記憶しておかなければならないが、コプロセッサからその処理依頼命令に対応した演算が終了した旨の通知を受けなくても、コプロセッサがデータ伝送路上に出力している演算結果を取得すべきタイミングを自ら特定することができ、その演算結果を取得して、先に記憶していたレジスタに格納することができるようになる。
【００１９】
また、前記命令解釈制御部は、前記コプロセッサから送出された結果データが前記処理依頼命令に含まれる第２データにより識別されるレジスタに書き込まれる際に、所定信号を前記コプロセッサへと送出するよう制御し、前記コプロセッサは、前記所定信号が前記主プロセッサにより送出されたことを検知するまで、前記結果データの送出を継続し、当該検知後に当該結果データの送出を停止することとしてもよい。
【００２０】
これにより、主プロセッサが、処理依頼命令を含むプログラムの実行中でその処理依頼命令に対応してコプロセッサに演算を開始させた後に、例えば外部からの割込信号に対応して割込対応処理を行っているような場合等、コプロセッサの演算終了時点で速やかに主プロセッサがコプロセッサの演算結果としてデータ伝送路上に出力されたデータをレジスタに書き込むことができないような場合であっても、その書き込むことができるようになってから書き込まれる際に、つまり書き込まれる直前か書き込まれる時か書き込まれた直後かに、その旨をコプロセッサに送出することとして、その送出があるまでコプロセッサは演算結果の出力を継続するので、コプロセッサによる演算結果を主プロセッサが確実に取得することができる。
【００２１】
また、前記コプロセッサは、コプロセッサ用命令コードにより指定される各種別の演算処理について、演算処理開始からいずれも同一時間の経過後に結果データを出力するものであり、前記命令解釈制御部が処理依頼命令に含まれる第２データにより識別されるレジスタに書き込むよう制御する結果データは、前記コプロセッサから送出された、当該処理依頼命令に先行して解釈した別の処理依頼命令により指定される演算処理の結果データであり、前記命令解釈制御部は、処理依頼命令に第２データと共に含まれていた前記コプロセッサ用命令コードを前記コプロセッサへと送出した後、当該処理依頼命令に後続して別の命令を解釈する前に、前記コプロセッサが当該処理依頼命令に先行する処理依頼命令で指定した演算処理を行った結果として送出した結果データを、当該第２データにより識別されたレジスタに書き込むよう制御することとしてもよい。
【００２２】
これにより、例えば、コプロセッサが依頼された演算をパイプライン方式で処理することを前提として演算処理装置に複数の連続する処理依頼命令を供給して解釈実行させるような場合において、連続する処理依頼命令の１つの処理依頼命令において、コプロセッサに与えるデータを格納するレジスタの指定のみならず、それより先行する処理依頼命令に対応するコプロセッサの演算結果を受け取るレジスタを指定することができるため、つまり１命令で主プロセッサからコプロセッサへのデータ転送とコプロセッサから主プロセッサへのデータ転送に係る主プロセッサ内のデータ格納位置を指定できるため、何らかの目的を達成するために必要な命令数を従来よりも低減させることができ、目的達成のために必要なサイクル数を抑え得る。
【００２３】
また、前記命令解釈制御部が行うところの、処理依頼命令に含まれる第２データで識別されるレジスタに書き込む前記制御は、当該処理依頼命令で指定される種別の演算処理を前記コプロセッサに実行させた結果を当該レジスタに書き込む制御であることとしてもよい。
これにより、処理依頼命令により指定した演算をコプロセッサに実行させた結果を主プロセッサが受け取るためのレジスタの指定をその処理依頼命令に含めることができるので、一般の演算命令と同様に、その演算命令に応じた演算結果を格納するレジスタの指定をオペランドとして含む命令形式で、コプロセッサに演算を行わせる処理依頼命令の命令形式を定めることができるようになり、例えばプログラム作成者における命令の理解の容易化等に役立つ。
【００２４】
また、前記演算処理装置は第１及び第２のコプロセッサを備え、第２のコプロセッサは、複数のレジスタを有しており、前記処理依頼命令は、第１のコプロセッサに実行させるべき演算処理の種別の指定と、第１記憶領域を指定するものとして第２のコプロセッサの複数のレジスタのうちいずれかを識別する第１データと、第２記憶領域を指定するものとして第２のコプロセッサの複数のレジスタのうちいずれかを識別する第２データとを含み、前記命令解釈制御部は、第１のコプロセッサに、処理依頼命令に含まれる第１データで識別される、第２のコプロセッサ内のレジスタの内容を演算処理対象として、当該処理依頼命令で指定される種別の演算処理を実行させ、更に、第１のコプロセッサによりなされた、ある演算処理の結果を、当該処理依頼命令に含まれる第２データで識別される、第２のコプロセッサ内のレジスタに書き込む制御を行うこととしてもよい。
【００２５】
これにより、あるコプロセッサ内のデータに基づいて他のコプロセッサに演算を行わせてその演算結果を元のコプロセッサ内部に返却することを１命令で指示することができるようになる。
また、本発明に係る命令列生成装置は、入力されるデータに基づいて、クレーム１の演算処理装置にコプロセッサと共に備えられている主プロセッサに実行させるための機械語の命令列を生成する命令列生成装置であって、記憶手段と、入力されたデータを取得する入力データ取得手段と、前記入力されたデータに基づいて、コプロセッサに実行させるべき演算処理の種別と、当該演算処理の対象が格納されている、当該コプロセッサの外部の第１記憶領域と、前記コプロセッサが演算処理をした結果が格納されるべき、当該コプロセッサの外部の第２記憶領域とを指定する処理依頼命令を含む機械語の命令列を生成し、前記記憶手段に当該命令列を記録する命令列生成手段とを備えることを特徴とする。
【００２６】
上述の演算処理装置に供給して解釈させ実行させることができる命令列を必要とする場合に、この命令列生成装置により、コプロセッサ外部の記憶領域の内容に基づいてコプロセッサに演算を行わせてその演算結果をコプロセッサ外部の記憶領域に格納することを指定する１つの処理依頼命令を含む命令列を生成させることができる。
ここで、前記命令列生成手段により生成される処理依頼命令は、コードフォーマットとして、前記主プロセッサが実行可能な命令群中で当該処理依頼命令を他の命令と識別するための命令識別コードを格納するフィールドの他に、コプロセッサに実行させるべき演算処理の種別を示すコプロセッサ用命令コードを格納するフィールドと、第１記憶領域を指定するものとして、前記主プロセッサが有する複数のレジスタのうちのいずれかを識別する第１データを格納するフィールドと、第２記憶領域を指定するものとして、前記主プロセッサが有する複数のレジスタのうちのいずれかを識別する第２データを格納するフィールドとの各々を含むこととしてもよい。
【００２７】
この命令列生成装置により、主プロセッサのレジスタの内容を用いてコプロセッサに演算を行わせてその演算結果を主プロセッサのレジスタに格納することを指定する１つの処理依頼命令を含む命令列を生成させることができる。
また、前記命令列生成装置は、更に、コプロセッサが実行可能な演算処理の各種別に対応付けて、演算処理時間を示す時間情報を予め記憶している演算時間管理手段を含み、前記命令列生成手段は、生成した処理依頼命令に含まれる第２データで識別される前記主プロセッサのレジスタの内容を演算対象とする演算命令を、命令列において当該処理依頼命令に後続する位置に生成する際には、当該処理依頼命令に含まれるコプロセッサ用命令コードで示される種別の演算処理に関する演算処理時間を、前記演算時間管理手段により記憶されている時間情報に基づいて特定し、当該処理依頼命令から、特定した演算処理時間に相当する命令数分以上の間隔を空けた位置に当該演算命令を置くようにして前記命令列の生成を行うこととしてもよい。
【００２８】
これにより、処理依頼命令で指定したデスティネーションデータを演算対象とする演算命令がその処理依頼命令に後続する場合に、その演算命令の実行時点で、処理依頼命令に応じてコプロセッサが演算中であってまだデスティネーションデータが生成されていないような事態が発生することを防止した命令列が生成されるようになる。
【発明を実施するための最良の形態】
【００２９】
＜実施の形態１＞
以下、本発明の実施の形態１に係る演算処理装置について説明する。
＜概要＞
本発明の実施の形態１に係る演算処理装置は、主プロセッサとコプロセッサとを備え、主プロセッサにおける取得、解釈及び実行の対象となる命令セットに、コプロセッサに演算を行わせるためのコプロセッサ演算命令が含まれている。このコプロセッサ演算命令に該当するｘｅｘｅｃ命令について、ニーモニック表記で表すと次のようになる。
【００３０】
ｘｅｘｅｃ  ＯＰｎ，ｄｓｔＲｎ，ｓｒｃＲｎ
ここで、コプロセッサ演算命令つまりｘｅｘｅｃ命令は、ＯＰｎ、ｄｓｔＲｎ及びｓｒｃＲｎという３つのオペランドの指定を必要とする命令である。このＯＰｎはコプロセッサにおける演算処理の種別の指定であり、ｓｒｃＲｎはコプロセッサの演算に用いられるソースデータを格納している主プロセッサ側のレジスタの番号の指定であり、ｄｓｔＲｎはコプロセッサによるその演算結果を格納するための主プロセッサ側のレジスタ番号の指定である。
【００３１】
このコプロセッサ演算命令を取得し解釈すると、主プロセッサは、ｓｒｃＲｎで指定されたレジスタの内容であるソースデータと、演算処理の種別とをコプロセッサに伝達することにより、コプロセッサに演算を依頼する。これを受けてコプロセッサは、ソースデータを用いて演算処理を行い演算結果であるデスティネーションデータを主プロセッサに伝達し、主プロセッサは、そのデスティネーションデータを受け取ってｄｓｔＲｎで指定されたレジスタに格納する。
【００３２】
このように、１つのコプロセッサ演算命令が、コプロセッサにより実行されるべき演算処理の種別の指定と、主プロセッサからコプロセッサへのソースデータ転送の指定と、コプロセッサから主プロセッサへのデスティネーションデータ転送の指定とを併せ持つことにより、このコプロセッサ演算命令を用いることのできる演算処理装置は、目的の処理を完了するために必要なサイクル数を比較的低く抑え得る。基本的に演算処理装置は、１命令の実行に１サイクル以上を必要とするため、同じ目的を達成するための命令数が少なければ命令数が多い場合よりも目的達成に必要なサイクル数を抑え得る。
【００３３】
図１は、ｘｅｘｅｃ命令を含むアセンブラプログラムの一部を例示する図である。
主プロセッサは、このプログラム、実際は機械語に変換された後のプログラムコード、を解釈して実行することができる。
行Ｌ１１は、レジスタｒ１の内容を用いてコプロセッサにＯＰ０により識別される演算処理を実行させて、その演算結果をレジスタｒ０に格納することを指示するｘｅｘｅｃ命令である。また、行Ｌ１２及び行Ｌ１３は各々１サイクルの期間を費やす命令である。
【００３４】
コプロセッサによるＯＰ０で識別される演算処理の実行に３サイクル必要であることを想定すると、このプログラム例における行Ｌ１３に後続する命令においては、レジスタｒ０には先行するｘｅｘｅｃ命令の実行結果が格納されているものとして、レジスタｒ０の内容を用いることができる。
以下、実施の形態１に係る演算処理装置について詳しく説明する。
【００３５】
＜コプロセッサ演算命令フォーマット＞
まず、上述した主プロセッサの命令セットに属する１命令であるコプロセッサ演算命令（ｘｅｘｅｃ命令）のフォーマットについて説明する。
図２は、コプロセッサ演算命令（ｘｅｘｅｃ命令）のフォーマットを示す図である。
同図に示すように、ｘｅｘｅｃ命令は、命令長が１６ビットであり、命令識別コードフィールド２１と、オペランドを指定するための、コプロセッサ用命令コードフィールド２２、デスティネーションレジスタ指定フィールド２３及びソースレジスタ指定フィールド２４とから構成される。
【００３６】
ここで、命令識別コードフィールド２１は、主プロセッサが解読、実行可能な命令群においてｘｅｘｅｃ命令であることを識別するための６ビットの命令識別コードを設定するフィールドであり、そのコード値は、例えば１０００１０ｂ等と、予め定められている。
コプロセッサ用命令コードフィールド２２は、オペランドＯＰｎに対応し、コプロセッサに実行させるべき演算処理の種別を識別するための２ビットのコードを設定するフィールドである。このビット長は、ここでは、コプロセッサが４種類以下の演算処理が可能であることを想定して定めている。
【００３７】
デスティネーションレジスタ指定フィールド２３は、オペランドｄｓｔＲｎに対応し、主プロセッサにおけるレジスタ群の１つを特定するための４ビットのデータを設定するフィールドであり、コプロセッサから伝達される演算結果であるデスティネーションデータを格納すべきレジスタを指定するために用いられる。
また、ソースレジスタ指定フィールド２４は、オペランドｓｒｃＲｎに対応し、主プロセッサにおけるレジスタ群の１つを特定するための４ビットのデータを設定するフィールドであり、コプロセッサでの演算処理に用いられるべきソースデータが格納されているレジスタを指定するために用いられる。
【００３８】
＜演算処理装置の構成＞
図３は、実施の形態１に係る演算処理装置の構成を示すブロック図である。
同図に示すように、演算処理装置１００は、主プロセッサ３０００と、コプロセッサ４０００と、コプロセッサ演算命令を含む命令列を格納する命令メモリ５０００と、主プロセッサによるデータアクセスの対象となるデータメモリ６０００とを備える。
【００３９】
ここで、主プロセッサ３０００は、従来のプロセッサを部分的に変形したものであり、命令解釈制御回路３１００と、算術演算や論理演算を行うための回路群である演算器３２００と、演算器３２００との間でデータ転送を行えるように構成されたレジスタ群であるレジスタバンク３５００とを有する。この主プロセッサ３０００は、コプロセッサ４０００に演算を実行させている間に別の演算を行うことができる。
【００４０】
命令解釈制御回路３１００は、命令メモリ５０００に格納されている命令列から逐次命令を読み出して解釈し、その解釈対象の命令に応じて、レジスタバンク３５００及びデータメモリ６０００へのアクセスに係る制御つまりデータ転送制御や、演算器３２００に、命令で指定された演算を実行させる制御や、コプロセッサ４０００の制御や、命令メモリ５０００における命令の読出しに係る制御等を行う機能を有する。なお、コプロセッサ４０００の制御は、命令解釈制御回路３１００が上述のコプロセッサ演算命令を解釈した場合に、そのコプロセッサ演算命令に含まれる演算処理の種別の指定をコプロセッサ４０００に伝達すること等により行われる。また、レジスタバンク３５００の構成及びそのデータ転送に係る動作ついては後に詳しく説明する。
【００４１】
また、コプロセッサ４０００は、従来のコプロセッサを部分的に変形したものであり、論理制御回路４１００と、特定の演算処理を行う回路である演算器４２００と、演算器４２００との間でデータ転送を行えるように構成されたレジスタ群であるレジスタバンク４５００とを有する。なお、コプロセッサ４０００は、主プロセッサ３０００により指定された演算種別の演算処理を１つずつ逐次実行することができる。また、主プロセッサ３０００とコプロセッサ４０００の動作周波数は同じである。
【００４２】
論理制御回路４１００は、主プロセッサ３０００から伝達される演算処理の種別の指定を受けてこれを解釈しその結果に応じて、レジスタバンク４５００へのデータ転送制御や、演算器４２００に、特定の演算処理を実行させる制御や、主プロセッサへの演算処理完了の通知等を行う機能を有する。また、論理制御回路４１００内には各演算種別の演算処理実行に要するサイクル数を示すデータが記憶されており、演算器による演算処理の実行中に経過するサイクルの数をカウントして、その記憶しているサイクル数を示すデータと照合することにより、演算の終了タイミングを検知する機構を有している。
【００４３】
演算器４２００は、例えば、ＭＰＥＧ方式でのエンコード処理を構成するＭＥ処理に用いられる差分絶対値演算及びその和の並列計算を、比較的高速に行えるようなもの等、特定用途に特化した演算機能を有する。
なお、図３においては、制御信号の伝送路（以下、「制御信号線」という。）を細い矢印線で表しており、命令を含むデータの伝送用のバス（以下、「データ伝送路」という。）を太い矢印線で表している。
【００４４】
制御信号線３０１０は、命令メモリ５０００を制御するために命令解釈制御回路３１００から送出される信号を伝送し、この制御信号に対応して命令メモリ５０００からは命令がデータ伝送路５０１０を介して命令解釈制御回路３１００へと送出される。
制御信号線３０２０は演算器３２００を制御するために、制御信号線３０３０はレジスタバンク３５００を制御するために、制御信号線３０５０はデータメモリ６０００を制御するために、そして制御信号線３０４０はコプロセッサに演算処理の種別等を伝達するために、それぞれ命令解釈制御回路３１００から送出される信号を伝送する。
【００４５】
また、演算器３２００とレジスタバンク３５００との間ではデータ伝送路３０６０及びデータ伝送路３０６５を介してデータが転送され、レジスタバンク３５００とデータメモリ６０００との間ではデータ伝送路３０８０及びデータ伝送路３０８５を介してデータが伝送され、演算器４２００とレジスタバンク４５００との間ではデータ伝送路４０６０及びデータ伝送路４０６５を介してデータが伝送され、主プロセッサ３０００のレジスタバンク３５００とコプロセッサ４０００のレジスタバンク４５００との間ではデータ伝送路３０７０及びデータ伝送路３０７５を介してデータが伝送される。
【００４６】
図４は、レジスタバンク３５００の構成を詳細に示す構成図である。
レジスタバンク３５００は、レジスタ３６００（Ｒ０）、レジスタ３６０１（Ｒ１）〜レジスタ３６１５（Ｒ１５）と、レジスタへデータを書き込むためにデータ伝送路及びレジスタの選択を行うセレクタ群つまりセレクタ３６５０、セレクタ３６５１〜セレクタ３６６５及びセレクタ３６７０と、どのレジスタから出力されたデータをデータ伝送路に供給するかの選択を行うセレクタ３６８０とを有する。
【００４７】
これらのレジスタ群及びセレクタ群は、命令解釈制御回路３１００から制御信号線３０３０を介して与えられる制御信号に応じて動作するように構成されている。
従って、命令解釈制御回路３１００は、命令の解釈結果に応じて、あるデータをあるレジスタに書き込むべき場合において、適切に制御信号を与えてセレクタ３６７０、セレクタ３６５０、セレクタ３６５１〜セレクタ３６６５を切り替えることにより、データメモリ６０００からデータ伝送路３０８０上に出力されたデータと、演算器３２００からデータ伝送路３０６０上に出力されたデータと、コプロセッサ４０００からデータ伝送路３０７０上に出力されたデータとのいずれかを、書き込むべきレジスタに供給し、そのレジスタに制御信号を与えて、データをレジスタに記憶させる。また、命令解釈制御回路３１００は、命令の解釈結果に応じて、あるレジスタからデータをデータ伝送路に供給させるべき場合には、そのレジスタに制御信号を与えてデータを出力させるとともに、適切に制御信号をセレクタ３６８０に与えることにより、演算器３２００に繋がるデータ伝送路３０６５と、データメモリ６０００に繋がるデータ伝送路３０８５と、コプロセッサ４０００に繋がるデータ伝送路３０７５とにそのレジスタから出力されたデータが現れるように制御する。
【００４８】
＜一般の演算命令に係る動作＞
上述した構成を備える演算処理装置１００においては、コプロセッサ演算命令以外の演算命令は、主プロセッサ３０００により、主に演算器３２００を用いて実行される。この場合における主プロセッサ３０００の動作は一般的なプロセッサと同様である。
例えば、命令解釈制御回路３１００が命令メモリ５０００から、内部レジスタＲ０の内容に基づき、ある演算を実行して、その結果を内部レジスタＲ１に格納するような演算命令を、読み出して解釈した場合においては、セレクタ３６８０を制御してレジスタＲ０の内容であるデータをデータ伝送路３０６５等に出力させておき、演算器３２００を制御してその出力されたデータに基づいてその演算を行わせて演算結果をデータ伝送路３０６０に出力させ、セレクタ３６７０及びセレクタ３６５１とレジスタＲ１とを制御して、データ伝送路３０６０上のデータをレジスタＲ１に書き込ませる。
【００４９】
なお、演算に用いるデータがレジスタから読み出されて演算が行われてその結果がレジスタに書き込まれるまでの処理時間は、例えば数サイクルであり、演算処理内容によってサイクル数は異なる。
上述の演算例についての処理タイミングとしては、レジスタＲ０から演算器へのデータ転送が行われる期間Ｔ１と、それに続く、演算器での演算が行われる期間Ｔ２と、その後の演算結果がレジスタＲ１に書き込まれる期間Ｔ３とを含むことになる。例えば期間Ｔ１を含む１つのサイクルに後続する１又は複数のサイクルにまたがって期間Ｔ２が含まれ、その後の１つのサイクルに期間Ｔ３が含まれる。２つのレジスタを入力とする演算について考えると、例えば１つのサイクルの間に、一方のレジスタから演算器へのデータ転送が行われる期間Ｔ１と他方のレジスタから演算器へのデータ転送が行われる期間Ｔ１’とが重複せずに含まれる。
【００５０】
＜コプロセッサ演算命令に係る動作＞
以下、上述した構成を備える演算処理装置１００が、コプロセッサ演算命令（ｘｅｘｅｃ命令）を実行する場合の各部の動作を説明する。
主プロセッサ３０００の命令解釈制御回路３１００は、命令メモリ５０００から読み出した命令を解釈し、その命令が命令識別コードによりｘｅｘｅｃ命令であると判定した場合には、その命令のオペランドを指定する各フィールド（図２参照）の内容に基づいて１サイクル内に次の２つ処理を行う。
【００５１】
まず、命令解釈制御回路３１００は、１つの処理として、コプロセッサ用命令コードフィールドの内容つまり演算種別、及びデスティネーションレジスタ指定フィールドの内容つまり演算結果格納用レジスタの指定を、制御信号線３０４０を介してコプロセッサ４０００の論理制御回路４１００に伝達する。
また、命令解釈制御回路３１００は、他の１つの処理として、ソースレジスタ指定フィールドの内容により指定された１つのレジスタからデータ伝送路３０７５上にデータを出力させるようにするための各制御信号を、制御信号線３０３０を介してそのレジスタ及びセレクタ３６８０に与える。
【００５２】
これらの処理に呼応して、コプロセッサ４０００においては、論理制御回路４１００が、受信した演算種別に応じてレジスタバンク４５００及び演算器４２００を制御して、データ伝送路３０７５上に与えられたソースデータに基づいての演算処理を実行させる。この演算処理に要するサイクル数は、例えば３サイクルであり、演算種別によってサイクル数は異なる。
【００５３】
更に論理制御回路４１００は、受信していた演算結果格納用レジスタの指定を保持しておき、演算処理が終了する際に、つまり記憶している各演算処理実行に要するサイクル数を示すデータに基づき特定されるその演算処理の終了タイミングに合わせて、その演算結果格納用レジスタの指定を含む演算終了の旨の信号を、制御信号線４０４０を介して主プロセッサ３０００の命令解釈制御回路３１００に伝達する。なお、演算終了時点では、演算結果であるデータは演算器４２００によりデータ伝送路３０７０上に出力されている。演算結果の主プロセッサ３０００への返却はこのデータ伝送路３０７０によって行われる。
【００５４】
そして、命令解釈制御回路３１００は、論理制御回路４１００から、演算結果格納用レジスタの指定を含む演算終了の旨の信号を受信すると、その信号により演算結果格納用レジスタとして指定されている１つのレジスタにデータ伝送路３０７０上のデータを書き込ませるための各制御信号を、制御信号線３０３０を介してそのレジスタ及びセレクタ３６５０〜セレクタ３６６５に与える。この結果として、何サイクルか前に解釈したｘｅｘｅｃ命令においてデスティネーションレジスタ指定フィールドの内容により指定されていたレジスタに、コプロセッサ４０００の演算結果が格納されることになる。
【００５５】
なお、命令解釈制御回路３１００は、ｘｅｘｅｃ命令に対応してのコプロセッサ４０００の演算結果をあるレジスタに書き込ませるデータ転送期間と、そのｘｅｘｅｃ命令に後続する何らかの一般の演算命令に対応しての内部演算器による演算結果を別のレジスタに書き込ませるデータ転送期間とを、重複せずに１つのサイクル内に含ませるよう制御する。
【００５６】
＜動作タイミング＞
以下、コプロセッサ演算命令の実行に関連する各処理の実行タイミングについて詳細に説明する。
ここでは、(1)主プロセッサ３０００は、命令メモリ５０００内に格納されたプログラムを構成する各命令を逐次読み出して解釈し実行している際に、外部から割込信号を受けるとそのプログラムに係る命令の実行を一時的に中断して割込対応の処理を行った後に元のプログラムの実行を再開するものであり、コプロセッサ４０００は主プロセッサ３０００が割込対応処理を行っている間は、演算処理を一時的に停止するという同期制御を行うものであり、(2)コプロセッサの演算器４２００は、パイプライン構成になっておらず、前の演算結果を主プロセッサ３０００内のレジスタに書き込むまで次のコプロセッサ演算命令を受け付けないものであって１つの演算処理の実行に２サイクル要するものとして、説明する。
【００５７】
図５は、コプロセッサ演算命令に係る各処理についてのタイミングチャートである。このタイミングチャートにおいて制御信号については上方か下方かの２段階で示しており、上方が処理契機となる信号がアクティブである状態を表している。
サイクルＣ１において、命令データ取得処理１１１が実行される。即ち、命令解釈制御回路３１００が制御信号線３０１０を介して制御信号を送出することにより、命令メモリ５０００から命令を取得する。
【００５８】
サイクルＣ２において、命令デコード処理１１２が実行される。即ち、命令解釈制御回路３１００が、取得した命令を解釈し、ｘｅｘｅｃ命令のオペランドで指定される各レジスタを特定する。
サイクルＣ３において、コプロセッサへのデータ受け渡し処理１１３、及びコプロセッサへの制御受け渡し処理１１４が実行される。即ち、制御信号線３０３０を介しての命令解釈制御回路３１００による制御により、ソースレジスタ指定フィールドで指定されたレジスタが、データをデータ伝送路３０７５上に出力してコプロセッサ４０００にデータを受け渡し、命令解釈制御回路３１００が演算種別と演算結果格納用レジスタの指定とを制御信号線３０４０に出力してコプロセッサ４０００に受け渡す。
【００５９】
サイクルＣ４及びサイクルＣ５において、コプロセッサ演算処理１１５が実行される。即ち、論理制御回路４１００は、制御信号線３０４０を介して取得した演算種別に応じて、サイクルＣ４において制御信号線４０２０を介して制御信号を伝達して演算器４２００に、データ伝送路３０７５上のデータを用いた演算を開始させ、サイクルＣ５において、既に取得して保持している演算結果格納用のレジスタの指定を含む演算終了の旨を示す信号を、制御信号線４０４０を介して主プロセッサ３０００へと送出する。なお、サイクルＣ５においては、演算器４２００は、演算を完了してその演算結果のデータをデータ伝送路３０７０上に出力する。
【００６０】
サイクルＣ６において、主プロセッサへのデータ受け渡し処理１１６が実行される。即ち、命令解釈制御回路３１００は、受信した演算終了の旨を示す信号に含まれる演算結果格納用のレジスタの指定に基づいて、制御信号線３０３０を介して制御信号をレジスタバンク３５００に伝えることにより、そのレジスタにデータ伝送路３０７０上のデータを書き込ませる。
【００６１】
なお、主プロセッサ３０００は、コプロセッサ演算命令に係る処理の実行開始後は、その実行と並行して、そのコプロセッサ演算命令に後続する命令に係る処理を行うものであり、図５のタイミングチャート上には示していないが、例えば、サイクルＣ２において、上述したｘｅｘｅｃ命令に後続する一般の演算命令Ａを命令メモリ５０００から取得し、サイクルＣ３でその演算命令Ａの解釈を行い、サイクルＣ４で演算命令Ａに係る演算対象データのレジスタからの演算器３２００への転送を行い、サイクルＣ５で演算器３２００により演算命令Ａに応じた演算を行い、サイクルＣ６でその演算結果をレジスタに転送し、また演算命令Ａに後続する演算命令ＢをＣ３において命令メモリ５０００から取得し、サイクルＣ４でその演算命令Ｂの解釈を行い、サイクルＣ５で演算命令Ｂに係る演算対象データのレジスタからの演算器３２００への転送を行い、サイクルＣ６で演算器３２００により演算命令Ｂに応じた演算を行い、サイクルＣ７でその演算結果をレジスタに転送する。
＜変形例１＞
以下、上述した演算処理装置１００の変形例１について説明する。変形例１に対して上述の元の例を、基本例と呼ぶことにする。
【００６２】
上述した基本例に係る演算処理装置１００においては、コプロセッサ４０００は、主プロセッサ３０００により指定された演算種別の演算処理を１つずつ逐次実行するものであったが、変形例１に係る演算処理装置は、コプロセッサが各演算処理をパイプライン方式で並列実行する点で基本例に係る演算処理装置１００と異なる。なお、変形例１に係る演算処理装置の各部については、説明上の必要に応じて、上述した基本例に係る演算処理装置１００における対応する各部と同じ符号を用いて説明する。
【００６３】
この変形例１に係る演算処理装置におけるコプロセッサ演算命令（ｘｅｘｅｃ命令）の実行に関連する各処理の実行タイミングについて説明する。
なお、(1)主プロセッサが割込対応処理を行っている間は、コプロセッサは演算処理を一時的に停止するという同期制御を行うものであり、(2)コプロセッサの演算器は、パイプライン構成であり、前の演算結果を主プロセッサ内のレジスタに書き込む前であっても次のコプロセッサ演算命令を受け付け、演算処理をパイプラインステージ数が２であるパイプライン方式で実行し、１つの演算処理の実行に２サイクル要するものとして、説明する。
【００６４】
図６は、変形例１におけるコプロセッサ演算命令に係る各処理についてのタイミングチャートである。
ここでは、いずれもコプロセッサ演算命令であるｎ番目の命令とｎ＋１番目の命令とに着目して説明する。
サイクルＣ１において、ｎ番目のコプロセッサ演算命令について命令データ取得処理１１１が実行される。
【００６５】
サイクルＣ２において、ｎ＋１番目のコプロセッサ演算命令について命令データ取得処理１１１が実行されるとともに、ｎ番目のコプロセッサ演算命令について命令デコード処理１１２が実行される。即ち、命令解釈制御回路が制御信号線３０１０を介して制御信号を送出することにより、命令メモリからｎ＋１番目のコプロセッサ演算命令を取得するとともに、その命令解釈制御回路は、サイクルＣ１において取得していたｎ番目のコプロセッサ演算命令を解釈する。
【００６６】
以後のサイクルにおいても同様に、各サイクル内で複数のコプロセッサ演算命令それぞれに対応して別個の処理が施される。なお、図６や、これ以後に用いる図７等において、図５と同一の符号を付して示した各処理の内容は、基本例について図５に即して上述した内容と基本的に同じであり、相違点がある場合にはその説明を行う。
サイクルＣ３において、ｎ番目のコプロセッサ演算命令に対応してコプロセッサへのデータ受け渡し処理１１３及びコプロセッサへの制御受け渡し処理１１４が実行されるとともに、ｎ＋１番目のコプロセッサ演算命令に対応して命令デコード処理１１２が実行される。
【００６７】
サイクルＣ４において、ｎ番目のコプロセッサ演算命令に対応して、２段階に分割されたコプロセッサ演算処理の前半処理１１５ａが実行されるとともに、ｎ＋１番目のコプロセッサ演算命令に対応してコプロセッサへのデータ受け渡し処理１１３及びコプロセッサへの制御受け渡し処理１１４が実行される。コプロセッサ演算処理の前半処理１１５ａにおいては、論理制御回路は、前半処理１１５ａの対象となるコプロセッサ演算命令に対応して既に取得している演算結果格納用のレジスタの指定の保持をし続け、既に取得している演算種別に応じて制御信号線４０２０を介して制御信号を伝達して演算器４２００に、データ伝送路３０７５上のデータを用いた演算を開始させる。なお、論理制御回路は内部に少なくともパイプラインのステージ数分だけの数の、演算結果格納用のレジスタの指定を保持するための記憶領域を有し、この記憶領域の集合は、例えば、格納した順に値を取り出せるＦＩＦＯ（First In First Out）バッファで実現される。
【００６８】
サイクルＣ５において、ｎ番目のコプロセッサ演算命令に対応して、２段階に分割されたコプロセッサ演算処理の後半処理１１５ｂが実行されるとともに、ｎ＋１番目のコプロセッサ演算命令に対応して前半処理１１５ａが実行される。なお、コプロセッサ演算処理の後半処理１１５ｂにおいては、演算器４２００は、前半処理１１５ａの結果を引き継いで更なる演算を最後まで行って演算結果のデータをデータ伝送路３０７０上に出力し、また、論理制御回路は、ｎ番目のコプロセッサ演算命令に対応して、例えばＦＩＦＯバッファに既に保持している演算結果格納用のレジスタの指定を含む演算終了の旨を示す信号を、制御信号線４０４０を介して主プロセッサへと送出する。
【００６９】
サイクルＣ６において、ｎ番目のコプロセッサ演算命令に対応して主プロセッサへのデータ受け渡し処理１１６が実行されるとともに、ｎ＋１番目のコプロセッサ演算命令に対応して後半処理１１５ｂが実行される。なお、サイクルＣ６においては、主プロセッサの命令解釈制御回路の制御下で、ｎ番目のコプロセッサ演算命令のデスティネーションレジスタ指定フィールドで示されたレジスタにデータ伝送路３０７０上のデータが書き込まれた後に、コプロセッサ側の演算器４２００によるｎ＋１番目のコプロセッサ演算命令に対応してなされる演算結果がデータ伝送路３０７０上に出力されるように、各動作タイミングが定められている。
【００７０】
サイクルＣ７において、ｎ＋１番目のコプロセッサ演算命令に対応して主プロセッサへのデータ受け渡し処理１１６が実行される。
＜変形例２＞
以下、基本例に係る演算処理装置１００の変形例２について説明する。
基本例に係る演算処理装置１００においては、コプロセッサ４０００は、主プロセッサ３０００が割込対応処理を行っている間は演算処理を一時的に停止するという同期制御を行うものであったが、変形例２に係る演算処理装置は、主プロセッサが割込対応処理を行っている間もコプロセッサが演算処理を継続する点で基本例に係る演算処理装置１００と異なる。なお、変形例２に係る演算処理装置の各部については、説明上の必要に応じて、上述した基本例に係る演算処理装置１００における対応する各部と同じ符号を用いて説明する。
【００７１】
この変形例２に係る演算処理装置では、基本例に係る演算処理装置１００と同様に、論理制御回路が、受信していた演算結果格納用レジスタの指定を保持しておき、演算器に演算を行わせて演算結果をデータ伝送路３０７０上に出力させ、また、演算処理が終了する際に、その演算結果格納用レジスタの指定を含む演算終了の旨の信号を、制御信号線４０４０を介して主プロセッサの命令解釈制御回路に伝達する。この後の処理が変形例２に係る演算処理装置に独特であり、演算終了の旨の信号を受けた命令解釈制御回路が、その演算結果の受け取り準備ができた段階で受け取り可能の旨を示す信号を、制御信号線３０４０を介して論理制御回路に伝達し、論理制御回路側ではこの受け取り可能の旨を示す信号を受け取ってない間は、演算終了の旨の信号をサイクル毎に繰り返し送出し、データ伝送路３０７０にデータを出力するような新たな演算を実行させないようにして、そのデータ伝送路３０７０上のデータを維持する。
【００７２】
以下、変形例２に係る演算処理装置におけるコプロセッサ演算命令（ｘｅｘｅｃ命令）の実行に関連する各処理の実行タイミングについて説明する。
なお、コプロセッサの演算器は、パイプライン構成になっておらず、前の演算結果を主プロセッサ内のレジスタに書き込むまで次のコプロセッサ演算命令を受け付けないものであって１つの演算処理の実行に２サイクル要するものとして、説明する。
【００７３】
図７は、変形例２におけるコプロセッサ演算命令に係る各処理についてのタイミングチャートである。
サイクルＣ１〜Ｃ３までは、図５に示した基本例に係る演算処理装置１００と同様の動作を行う。
サイクルＣ４及びサイクルＣ５において、コプロセッサ演算処理１１５が実行される。即ち、論理制御回路は、制御信号線３０４０を介して取得した演算種別に応じて、サイクルＣ４において制御信号線４０２０を介して制御信号を伝達して演算器４２００に、データ伝送路３０７５上のデータを用いた演算を開始させ、サイクルＣ５において、既に取得して保持している演算結果格納用のレジスタの指定を含む演算終了の旨を示す信号を、制御信号線４０４０を介して主プロセッサへと送出し、演算器４２００に、演算を完了した後の演算結果のデータをデータ伝送路３０７０上に出力させ、制御信号線３０４０を介して、受け取り可能の旨を示す信号が送られてくるのを待つ。
【００７４】
図７では、主プロセッサが割込対応処理等をしておらず特段の遅滞なく受け取り可能の旨を示す信号を発した例を示している。
この例の場合には、論理制御回路は、サイクルＣ５の間に受け取り可能の旨の信号を受信したので、演算器４２００にはサイクルＣ６において演算結果のデータをデータ伝送路３０７０に出力させる制御は行わない。
【００７５】
サイクルＣ６において、主プロセッサへのデータ受け渡し処理１１６が実行される。即ち、命令解釈制御回路は、受信した演算終了の旨を示す信号に含まれる演算結果格納用のレジスタの指定に基づいて、制御信号線３０３０を介して制御信号をレジスタバンク３５００に伝えることにより、そのレジスタにデータ伝送路３０７０上のデータを書き込ませる。
【００７６】
図８は、変形例２におけるコプロセッサ演算命令に係る各処理についてのタイミングチャートであり、受け取り可能の旨を示す信号が遅れて発された場合の例を示す。
同図の例は、主プロセッサ側でコプロセッサ演算命令を解釈して、コプロセッサに演算を依頼した後、割込対応処理等を行ってその終了前に、依頼に応じたコプロセッサによる演算が完了した場合の例である。
【００７７】
サイクルＣ１〜Ｃ４までは、図７の例と同様の動作を行う。
サイクルＣ５において、既に取得して保持している演算結果格納用のレジスタの指定を含む演算終了の旨を示す信号を、制御信号線４０４０を介して主プロセッサへと送出し、演算器４２００に、演算を完了した後の演算結果のデータをデータ伝送路３０７０上に出力させ、制御信号線３０４０を介して、受け取り可能の旨を示す信号が送られてくるのを待つ。
【００７８】
サイクルＣ５において、論理制御回路は、受け取り可能の旨の信号を受信していないので、演算器４２００にはサイクルＣ６において演算結果のデータをデータ伝送路３０７０に出力させ、再び、演算結果格納用のレジスタの指定を含む演算終了の旨を示す信号を、制御信号線４０４０を介して主プロセッサへと送出する。そして、サイクルＣ６において、論理制御回路は、受け取り可能の旨の信号を受信したので、演算器４２００にはサイクルＣ７において演算結果のデータをデータ伝送路３０７０に出力させる制御は行わない。
【００７９】
サイクルＣ７において、主プロセッサへのデータ受け渡し処理１１６が実行される。即ち、命令解釈制御回路は、受信した演算終了の旨を示す信号に含まれる演算結果格納用のレジスタの指定に基づいて、制御信号線３０３０を介して制御信号をレジスタバンク３５００に伝えることにより、そのレジスタにデータ伝送路３０７０上のデータを書き込ませる。
＜変形例３＞
以下、基本例に係る演算処理装置１００の変形例３について説明する。
【００８０】
この変形例３に係る演算処理装置は、上述した変形例１と同様にコプロセッサがパイプライン方式で各演算処理を実行するために必要な全ての構成を含み、かつ、上述した変形例２と同様に、主プロセッサが割込対応処理を行っている間もコプロセッサが演算処理を継続するものである。なお、変形例３に係る演算処理装置の各部については、説明上の必要に応じて、上述した基本例に係る演算処理装置１００における対応する各部と同じ符号を用いて説明する。
【００８１】
この変形例３に係る演算処理装置では、変形例２においてと同様に、演算終了の旨の信号を受けた命令解釈制御回路が、その演算結果の受け取り準備ができた段階で受け取り可能の旨を示す信号を、制御信号線３０４０を介して論理制御回路に伝達し、論理制御回路側ではこの受け取り可能の旨を示す信号を受け取ってない間は、演算終了の旨の信号をサイクル毎に繰り返し送出し、データ伝送路３０７０にデータを出力するような新たな演算を実行させないようにして、そのデータ伝送路３０７０上のデータを維持する構成を備える。
【００８２】
以下、変形例３に係る演算処理装置におけるコプロセッサ演算命令（ｘｅｘｅｃ命令）の実行に関連する各処理の実行タイミングについて説明する。
なお、コプロセッサの演算器は、パイプライン構成であり、前の演算結果を主プロセッサ内のレジスタに書き込む前であっても次のコプロセッサ演算命令を受け付け、演算処理をパイプラインステージ数が２であるパイプライン方式で実行し、１つの演算処理の実行に２サイクル要するものとして、説明する。
【００８３】
図９及び図１０は、変形例３におけるコプロセッサ演算命令に係る各処理についてのタイミングチャート例であり、図１０では、受け取り可能の旨を示す信号が図９の例より遅れて発された場合の例を示す。
図９の例及び図１０の例は両方とも、サイクルＣ１〜Ｃ４までは、図６に即して変形例１について説明した動作と同様の動作を行う。
【００８４】
双方の例はサイクルＣ５において、ｎ番目のコプロセッサ演算命令に対応して、２段階に分割されたコプロセッサ演算処理の後半処理１１５ｂが実行されるとともに、ｎ＋１番目のコプロセッサ演算命令に対応して前半処理１１５ａが実行される。なお、コプロセッサ演算処理の後半処理１１５ｂにおいては、演算器４２００は、前半処理１１５ａの結果を引き継いで更なる演算を最後まで行って演算結果のデータをデータ伝送路３０７０上に出力し、また、論理制御回路は、ｎ番目のコプロセッサ演算命令に対応して、例えばＦＩＦＯバッファに既に保持している演算結果格納用のレジスタの指定を含む演算終了の旨を示す信号を、制御信号線４０４０を介して主プロセッサへと送出し、制御信号線３０４０を介して、受け取り可能の旨を示す信号が送られてくるのを待つ。
【００８５】
図９の例においては、サイクルＣ５において、ｎ番目のコプロセッサ演算命令に対応しての、受け取り可能の旨の信号が発されているので、サイクルＣ６においては、論理制御回路は、そのｎ番目のコプロセッサ演算命令に対応する演算終了の旨の信号の送出を繰り返さず、ｎ＋１番目のコプロセッサ演算命令に対応する演算終了の旨の信号の送出を行うとともに演算器４２００にｎ＋１番目のコプロセッサ演算命令に対応するコプロセッサ演算処理の後半処理１１５ｂを行わせる。
【００８６】
一方、図１０の例においては、サイクルＣ５において、ｎ番目のコプロセッサ演算命令に対応しての、受け取り可能の旨の信号が発されていないので、サイクルＣ６においては、論理制御回路は、そのｎ番目のコプロセッサ演算命令に対応する演算終了の旨の信号の送出を繰り返し、そのｎ番目のコプロセッサ演算命令に対応する演算器４２００による演算結果のデータ伝送路３０７０上への出力を繰り返させ、かつ、ｎ＋１番目のコプロセッサ演算命令に対応するコプロセッサ演算処理の後半処理１１５ｂの開始を抑止する。そして、サイクルＣ６において受け取り可能の旨の信号が発されているので、サイクルＣ７においては、論理制御回路は、ｎ＋１番目のコプロセッサ演算命令に対応して、例えばＦＩＦＯバッファに既に保持している演算結果格納用のレジスタの指定を含む演算終了の旨の信号の送出を行い、受け取り可能の旨を示す信号が送られてくるのを待つ。
【００８７】
このように、受け取り可能の旨を示す信号の伝達に係る各種処理を行うことで、変形例３に係る演算処理装置においても、主プロセッサとコプロセッサは適切に連携動作することができる。
＜変形例４＞
以下、基本例に係る演算処理装置１００の変形例４について説明する。
【００８８】
この変形例４に係る演算処理装置は、上述した変形例２に係る演算処理装置と同様の機能構成を有し、コプロセッサの動作周波数が主プロセッサの２倍である点でのみ異なる。
即ち、変形例４に係る演算処理装置のコプロセッサの演算器は、パイプライン構成になっておらず、前の演算結果を主プロセッサ内のレジスタに書き込むまで次のコプロセッサ演算命令を受け付けないものである。
【００８９】
図１１は、変形例４におけるコプロセッサ演算命令に係る各処理についてのタイミングチャートである。同図ではコプロセッサにおける１つの演算処理の実行に１サイクル要する場合を例示している。図７と対比すると、コプロセッサ演算処理１１５に要する時間が異なる程度であるため、詳細な説明は省略する。
この変形例４においても、変形例２と同様に受け取り可能の旨を示す信号の伝達に係る各種処理を行うことにより、主プロセッサとコプロセッサは適切に連係動作することができる。
＜変形例５＞
以下、基本例に係る演算処理装置１００の変形例５について説明する。
【００９０】
この変形例５に係る演算処理装置は、上述した変形例３に係る演算処理装置と同様の機能構成を有し、コプロセッサの動作周波数が主プロセッサの２倍である点でのみ異なる。
即ち、変形例５に係る演算処理装置のコプロセッサの演算器は、パイプライン構成であり、前の演算結果を主プロセッサ内のレジスタに書き込む前であっても次のコプロセッサ演算命令を受け付け、演算処理をパイプラインステージ数が２であるパイプライン方式で実行する。
【００９１】
図１２は、変形例５におけるコプロセッサ演算命令に係る各処理についてのタイミングチャートである。同図ではコプロセッサにおける１つの演算処理の実行に１サイクル要する場合を例示している。図９と対比すると、コプロセッサ演算処理の前半処理１１５ａ及び後半処理１１５ｂに要する時間が異なる程度であるため、詳細な説明は省略する。
この変形例５においても、変形例３と同様に、ＦＩＦＯバッファ等に演算結果格納用のレジスタの指定を保持し、また、受け取り可能の旨を示す信号の伝達に係る各種処理を行うことにより、主プロセッサとコプロセッサは適切に連係動作することができる。
＜変形例６＞
以下、基本例に係る演算処理装置１００の変形例６について説明する。
【００９２】
この変形例６に係る演算処理装置は、上述した変形例２に係る演算処理装置と同様の機能構成を有し、コプロセッサの動作周波数が主プロセッサの１／２倍である点で異なる。
この動作周波数の違いに対応するため、変形例６に係る演算処理装置の主プロセッサは、更に、コプロセッサ演算命令のデスティネーションレジスタ指定フィールドの内容を記憶するためのバッファを有しており、命令解釈制御回路はコプロセッサ演算命令を解釈する際にそのデスティネーションレジスタ指定フィールドの内容である演算結果格納用のレジスタの指定をバッファに格納し、それ以後にバッファから読み出せるそのレジスタの指定と、コプロセッサから演算終了の旨の信号に含まれて伝えられるレジスタの指定とが一致するまではその指定されているレジスタを入力として用いるような演算命令の実行を抑止する機能を有する。
【００９３】
つまり、主プロセッサの動作周波数よりコプロセッサの動作周波数が低い場合には、コプロセッサ演算命令に基づいて、コプロセッサに演算を依頼してその演算結果を主プロセッサがレジスタに書き込むよりも先に、そのコプロセッサ演算命令に後続してその演算結果を用いるような一般の演算命令を実行してしまわないように、特別な制御を行う必要があり、そのために、変形例６に係る演算処理装置においては、主プロセッサに、デスティネーションレジスタ指定フィールドの内容を保持して、それにより指定されるレジスタにコプロセッサ演算命令の処理結果が格納されてから、そのレジスタを入力として用いる後続の演算命令を実行させるべく、そのような後続の演算命令の実行を一旦停止させる機能が設けられている。
【００９４】
以下、変形例６に係る演算処理装置におけるコプロセッサ演算命令（ｘｅｘｅｃ命令）とこれに後続する一般の演算命令の実行に関連する各処理について説明する。
なお、コプロセッサの演算器は、パイプライン構成になっておらず、前の演算結果を主プロセッサ内のレジスタに書き込むまで次のコプロセッサ演算命令を受け付けないものである。
【００９５】
図１３は、変形例６におけるコプロセッサ演算命令に係る各処理についてのタイミングチャートである。ここでは、コプロセッサにおいて１つの演算処理の実行に４サイクル要する場合を例示している。
サイクルＣ１〜Ｃ３までは、図７に示した変形例２に係る演算処理装置１００と同様の動作を行う。但し、命令解釈制御回路は、コプロセッサ演算命令のデスティネーションレジスタ指定フィールドの内容をバッファに保持する。
【００９６】
サイクルＣ４〜Ｃ７において、コプロセッサ演算処理１１５が実行される。コプロセッサは２つ分のサイクルを１つの単位として動作を行う。まず、サイクルＣ４及びサイクルＣ５において、論理制御回路は、制御信号線３０４０を介して取得した演算種別に応じて、サイクルＣ４において制御信号線４０２０を介して制御信号を伝達して演算器４２００に、データ伝送路３０７５上のデータを用いた演算を開始させ、サイクルＣ６及びサイクルＣ７において、既に取得して保持している演算結果格納用のレジスタの指定を含む演算終了の旨を示す信号を、制御信号線４０４０を介して主プロセッサへと送出し、演算器４２００に、演算を完了した後の演算結果のデータをデータ伝送路３０７０上に出力させ、制御信号線３０４０を介して、受け取り可能の旨を示す信号が送られてくるのを待つ。
【００９７】
主プロセッサは、演算終了の旨を示す信号を受信すると、制御信号線３０４０を介して、受け取り可能の旨の信号をコプロセッサに伝達する。なお、主プロセッサは、動作周波数の低いコプロセッサがその受け取り可能の旨の信号を認識可能となるように、１サイクル分以上の期間に渡りその受け取り可能の旨の信号を伝達する。
サイクルＣ６及びサイクルＣ７の期間において、受け取り可能の旨を示す信号を受信すると論理制御回路は、次のサイクルでの演算終了の旨の信号の伝達は行わない。
【００９８】
なお、主プロセッサは、サイクルＣ２では、図１３には示していないが、コプロセッサ演算命令を解釈するとともに、その命令に後続する演算命令を読出すための命令データ取得処理１１１を行うことができ、その後続する演算命令についてはサイクルＣ３で命令デコード処理１１２を行う。しかし、その演算命令が演算の入力用の指定したレジスタが、先行するコプロセッサ演算命令で指定された演算結果格納用のレジスタと一致していて、かつ、まだそのレジスタへのコプロセッサによる演算結果の格納が行われていない場合には、その格納が行われるまで、その後続する演算命令についての演算器３２００による演算の開始を遅らせる。
【００９９】
サイクルＣ８において、主プロセッサへのデータ受け渡し処理１１６が実行される。即ち、命令解釈制御回路は、受信した演算終了の旨を示す信号に含まれる演算結果格納用のレジスタの指定に基づいて、制御信号線３０３０を介して制御信号をレジスタバンク３５００に伝えることにより、そのレジスタにデータ伝送路３０７０上のデータを書き込ませ、その後に上述したバッファに保持しているレジスタの指定を削除する。このバッファにレジスタの指定が含まれていない状態になると、命令解釈制御回路は、もしそのレジスタを入力とするために待たせていた演算命令があれば、その演算命令の演算器３２００による演算を開始させる。
＜実施の形態２＞
以下、本発明の実施の形態２に係る演算処理装置について説明する。
【０１００】
実施の形態２に係る演算処理装置においては、上述した実施の形態１に係る演算処理装置の変形例１、３、５それぞれ同様に装置内部のコプロセッサが演算をパイプライン方式で実行する。実施の形態２に係る演算処理装置においては、コプロセッサ演算命令（ｘｅｘｅｃ命令）のオペランドの取り扱いが異なることから、実施の形態１に係る演算処理装置と若干の装置構成上の差異がある。
【０１０１】
まず、ｘｅｘｅｃ命令について、ニーモニック表記で表すと実施の形態１と同じく次のようになる。
ｘｅｘｅｃ  ＯＰｎ，ｄｓｔＲｎ，ｓｒｃＲｎ
ここで、コプロセッサ演算命令つまりｘｅｘｅｃ命令は、ＯＰｎ、ｄｓｔＲｎ及びｓｒｃＲｎという３つのオペランドの指定を必要とする命令である。このＯＰｎはコプロセッサにおける演算処理の種別の指定であり、ｓｒｃＲｎはコプロセッサの演算に用いられるソースデータを格納している主プロセッサ側のレジスタの番号の指定であることまでは、実施の形態１と同様であるが、ｄｓｔＲｎはコプロセッサによるその演算結果ではなく、コプロセッサのパイプラインステージ数に対応するサイクルだけ先行するｘｅｘｅｃ命令に対応し、そのサイクルだけ先行してコプロセッサが依頼を受けた演算の結果を、格納するための主プロセッサ側のレジスタ番号の指定である。
【０１０２】
このコプロセッサ演算命令を取得し解釈すると、主プロセッサは、ｓｒｃＲｎで指定されたレジスタの内容であるソースデータと、演算処理の種別とをコプロセッサに伝達することにより、コプロセッサに演算を依頼し、また、コプロセッサに先行して依頼した演算の結果を受け取ってｄｓｔＲｎで指定されたレジスタに格納する。
なお、コプロセッサ演算命令（ｘｅｘｅｃ命令）のフォーマットについてもそのデータ構成は、図２を用いて実施の形態１で示したものと同じである。
【０１０３】
実施の形態２に係る演算処理装置の構成及び動作は、実施の形態１で説明した演算処理装置の構成及び動作と基本的に同様であるので（図３及び図４参照）、ここでは異なる点に重点を置いて説明する。
主プロセッサの命令解釈制御回路は、命令メモリから読み出した命令を解釈し、その命令が命令識別コードによりｘｅｘｅｃ命令であると判定した場合には、その命令のオペランドを指定する各フィールド（図２参照）の内容に基づいて１サイクル内に次の３つ処理を行う。
【０１０４】
まず、命令解釈制御回路は、１つ目の処理として、コプロセッサ用命令コードフィールドの内容つまり演算種別を、制御信号線３０４０を介してコプロセッサの論理制御回路に伝達する。この際にデスティネーションレジスタ指定フィールドの内容は伝達しない。従って論理制御回路もそのデスティネーションレジスタ指定フィールドの内容を保持する構成を有しない。
【０１０５】
また、命令解釈制御回路は、２つ目の処理として、ソースレジスタ指定フィールドの内容により指定された１つのレジスタからデータ伝送路３０７５上にデータを出力させるようにするための各制御信号を、制御信号線３０３０を介してレジスタバンク３５００に与える。
コプロセッサの論理制御回路は、主プロセッサから伝達される演算処理の種別の指定に応じて、レジスタバンク４５００へのデータ転送制御や、演算器４２００に、特定の演算処理を実行させる制御を行うが、演算処理が終了した場合であっても主プロセッサへの演算終了の旨の信号の通知は行わない。従って制御信号線４０４０は省かれる。なお、演算器４２００は演算処理が終了すると演算結果であるデータをデータ伝送路３０７０上に出力する。
【０１０６】
また、命令解釈制御回路は、３つ目の処理として、そのｘｅｘｅｃ命令についてのデスティネーションレジスタ指定フィールドの内容により指定された１つのレジスタに、データ伝送路３０７０上のデータを書き込ませるための各制御信号を、制御信号線３０３０を介してそのレジスタ及びセレクタ３６５０〜セレクタ３６６５に与える。この結果として、そのｘｅｘｅｃ命令より数サイクル前に解釈したｘｅｘｅｃ命令に対応するコプロセッサによる演算結果が、主プロセッサのレジスタ内に書き込まれることになる。
【０１０７】
なお、命令解釈制御回路は、１サイクル内で１つのレジスタへの書込みを行えば足りるため、特に、ｘｅｘｅｃ命令に対応してのコプロセッサの演算結果をあるレジスタに書き込ませるデータ転送期間と、他の一般の演算命令に対応しての内部演算器による演算結果を別のレジスタに書き込ませるデータ転送期間とを調整する必要はない。
また、命令解釈制御回路は、実施の形態１のいくつかの変形例で示したような制御信号線３０４０を介しての受け取り可能の旨の信号の送信を行わない。従って、コプロセッサ側においても受け取り可能の旨の信号を待つような制御は行わない。
【０１０８】
このような実施の形態２に係る演算処理装置の処理方式によれば、命令メモリに格納されたプログラムが、コプロセッサ演算命令の多数連続してなる部分を含む場合において、主プロセッサ側にもコプロセッサ側にも特に各命令のデスティネーションレジスタ指定フィールドの内容を複数保持するための機構を有さなくても、適切に処理を実行することができるようになる。
【０１０９】
但し、プログラム中で、あるコプロセッサ演算命令のオペランドで指定したデスティネーションデータを格納すべきレジスタには、そのコプロセッサ演算命令に先行するコプロセッサ演算命令が存在して、かつ、その先行するコプロセッサ演算命令に対応したコプロセッサによる演算結果がデータ伝送路３０７０上に出力されている場合でなければ、有効な値は格納されていないので、例えば、プログラム作成者がプログラムを直接記述する場合には、そのことを意識してコプロセッサ演算の実行に要するサイクル数を把握した上でプログラムを記述する必要がある。
＜実施の形態３＞
以下、本発明の実施の形態３に係るオブジェクトコード生成装置について説明する。
【０１１０】
実施の形態３に係るオブジェクトコード生成装置は、コンピュータとソフトウェアとにより実現される、いわゆるコンパイラであり、実施の形態１で示したような演算処理装置により実行される命令列からなるプログラムであるオブジェクトコードを、高級言語で記述されたソースコードに基づいて生成する命令列生成装置である。
図１４は、実施の形態３に係るオブジェクトコード生成装置の構成を示すブロック図である。なお、同図には、ソースコード７００１及びオブジェクトコード７００２も付記している。
【０１１１】
同図に示すように、オブジェクトコード生成装置７０００は、機能面に着目すれば、ソースコード取得部７０１０、命令コード記憶部７０２０及びオブジェクトコード生成部７０３０を備えている。
ここで、ソースコード取得部７０１０は、例えばハードディスク装置等に記録されているソースコード７００１を、メモリに読み込んで参照する機能を有する。
【０１１２】
命令コード記憶部７０２０は、オブジェクトコードの実行環境となる演算処理装置における主プロセッサの命令セットに含まれる全命令コードに係る情報を記憶しており、更にコプロセッサ演算命令に対応して、演算種別毎つまりコプロセッサ用命令コード毎に、コプロセッサが演算実行に要するサイクル数を示すサイクル情報を記憶している。なお、全命令コードに係る情報の中には、図２に示したフォーマットのコプロセッサ演算命令を生成するために必要な情報も含まれ、高級言語においてそのコプロセッサ演算命令を指定するための関数の定義情報も含まれる。
【０１１３】
オブジェクトコード生成部７０３０は、ソースコード取得部７０１０を介してソースコードを参照して、一般のコンパイラと同様に、命令コードに係る情報に基づいて、ソースコード中の各文を、命令列に変換する。但し、一般のコンパイラとは異なる処理として、上述したサイクル情報を参照して、コプロセッサ演算命令を解釈した後から、コプロセッサ演算命令のオペランドで指定したデスティネーションデータを格納するためのレジスタにコプロセッサによる演算結果が反映されるまでのサイクル数を特定し、その間の期間でそのレジスタが他の命令の入力用として用いられないように、変換後の命令列の順序を調整する処理を行う。
【０１１４】
図１５は、ソースコードの例を示す図である。ここでは、Ｃ言語の例を示している。
行Ｌ５１は、ｄａｔａ０からｄａｔａ５までの変数の宣言であり、行Ｌ５２は、ｄａｔａ３を引数としてｆｕｎｃｔｉｏｎＸ０１というコプロセッサ演算用として予め定められている関数を呼び出してその演算結果をｄａｔａ０に設定する旨を示す文である。
また、行Ｌ５３は、ｄａｔａ０とｄａｔａ３との和をｄａｔａ４に設定する旨を示す文であり、行Ｌ５４は、ｄａｔａ５とｄａｔａ１との和をｄａｔａ５に設定する旨を示す文であり、行Ｌ５５は、ｄａｔａ５とｄａｔａ２との和をｄａｔａ５に設定する旨を示す文である。
【０１１５】
図１６は、図１５に例示するソースコードに基づいて生成されるオブジェクトコードの例を示す図である。なお、説明の便宜上、オブジェクトコードは、ニーモニック表記で表している。ここで、ａｄｄ命令は、第２番目のオペランドで指定されたレジスタの内容と第３番目のオペランドで指定されたレジスタの内容とを加算してその結果を第１番目のオペランドで指定されたレジスタに格納する命令であるものとする。
【０１１６】
この例では、オブジェクトコード生成装置７０００が、変数ｄａｔａ０〜ｄａｔａ５をそれぞれレジスタＲ０〜Ｒ５に割り付けた例であり、オブジェクトコード生成装置７０００は、ソースコードの行Ｌ５２のｆｕｎｃｔｉｏｎＸ０１を、コプロセッサ用命令コードがＯＰ０１であるコプロセッサ演算命令に変換して、行Ｌ２１を生成する。行Ｌ２１のｘｅｘｅｃ命令は、コプロセッサにおける演算処理の種別としてＯＰ０１を指定し、コプロセッサの演算に用いられるソースデータを格納している主プロセッサ側のレジスタとしてレジスタＲ３を指定し、コプロセッサによるその演算結果を格納するための主プロセッサ側のレジスタとしてレジスタＲ０を指定した命令である。
【０１１７】
即ち、オブジェクトコード生成装置７０００は、ソースコード中にこのｆｕｎｃｔｉｏｎＸ０１関数を発見すると、コプロセッサ用命令コードがＯＰ０１であるｘｅｘｅｃ命令に置き換える。この関数の引数である変数に割り付けられたレジスタが、ソースデータを格納している主プロセッサ側のレジスタを指定するオペランドに変換され、関数の戻り値である変数に割り付けられたレジスタが、コプロセッサによる演算結果を格納するための主プロセッサ側のレジスタを指定するオペランドに変換される。
【０１１８】
ここでは、コプロセッサ用命令コードがＯＰ０１であれば、演算に必要なサイクル数は３であるものとする（図１４参照）。このため、ソースコードの行Ｌ５３に対応する命令として、行Ｌ２１の次に、「ａｄｄ  Ｒ４，Ｒ０，Ｒ３」というａｄｄ命令が生成されるはずであるが、その３というサイクル数分だけ後にならないとコプロセッサ演算命令の演算結果がレジスタＲ０には格納されていないので、そのａｄｄ命令は行Ｌ２４の位置に生成される。その代わりに、図１５の行Ｌ５４と行Ｌ５５の各文に対応する各命令が、行Ｌ２２と行Ｌ２３の位置に生成される。
【０１１９】
従って、このオブジェクトコード生成装置７０００によれば、ソースコードを記述するプログラム作成者は、特にコプロセッサ演算命令に対応してコプロセッサが演算を完了するまでに要するサイクル数を意識しなくても、適切なオブジェクトコードを得ることができるようになる。なお、図１５の例では、結局、行Ｌ５４の文と行Ｌ５５の文とを行Ｌ５３の文より先に実行することになったが、データの依存関係等によっては、このような文の順番の入れ替えが不可能となる場合もある。その場合には、オブジェクトコード生成装置７０００は、必要数のｎｏｐ命令を、コプロセッサ演算命令の後であってそのコプロセッサ演算命令の演算結果を用いて実行されるべき他の演算命令の前に、挿入することにより、コプロセッサ演算命令に対応する演算結果が格納されていないレジスタを入力とする演算命令が含まれないようにしたオブジェクトコードを生成する。
＜補足＞
以上、本発明に係る演算処理装置及びオブジェクトコード生成装置の実施の形態について説明したが、本発明は、上述の実施の形態そのものに限定されることはない。即ち、各実施の形態で示した演算処理装置又はオブジェクトコード生成装置は、以下に示すように部分的に変形してもよい。
（１）実施の形態１では、主プロセッサがコプロセッサ演算命令のデスティネーションレジスタ指定フィールドの内容をコプロセッサ側に伝達しておき、コプロセッサ側でその内容を保持して演算終了時点で演算終了の旨の通知にその内容を含めて主プロセッサに伝達することとしたが、主プロセッサが、コプロセッサ演算命令のデスティネーションレジスタ指定フィールドの内容を伝達せず自ら記憶保持しておき、そのコプロセッサ演算命令に対応する演算結果がコプロセッサから返却される際に演算終了の旨の信号を受けると、返却された演算結果を、自ら記憶保持していた内容で指定されるレジスタに格納することとしてもよい。このデスティネーションレジスタ指定フィールドの内容は例えばＦＩＦＯバッファに記憶しておくとよい。
【０１２０】
また更に、コプロセッサ側から演算終了の旨の信号の伝達を行わない方式にしてもよく、この場合には、主プロセッサの命令解釈制御回路は、コプロセッサ演算命令に対応する演算結果がコプロセッサから返却されるまでのタイミングを演算種別に応じて予め記憶しておいて、サイクル数をカウントすることにより、返却された演算結果を取得するタイミングを検知して、その演算結果を、自ら記憶保持していた内容で指定されるレジスタに格納することとしてもよい。そのカウントに係る制御の仕方としては、コプロセッサ演算命令解釈時に演算種別に応じて適切なカウント値を設定しておき、１サイクル経過の度に１つカウンタ値を減算し、カウンタ値が例えば０になったときに、データ伝送路３０７０上のデータをレジスタに書き込むように制御することとしてもよい。
【０１２１】
なお、コプロセッサ演算命令を解釈した後に、何サイクルでコプロセッサによる演算結果がデータ伝送路３０７０上に現れるかを、コプロセッサ演算命令のコプロセッサ命令用コードフィールドの内容となる演算種別と対応させて予め命令解釈制御回路に記憶させておくために設計段階で考慮すべき事項は、主プロセッサ内のレジスタのデータがコプロセッサの演算器４２００に到達するまでのサイクル数と、演算種別毎にコプロセッサの演算器４２００にて行われる演算に要するサイクル数と、コプロセッサの演算器４２００から演算結果が主プロセッサのレジスタバンクにまで到達するサイクル数とである。
（２）実施の形態１の変形例において、コプロセッサの動作周波数が主プロセッサの動作周波数の２倍である場合について示したが、２倍に限られることはなく例えば４倍等であってもよいし、１／２倍である場合について示したが、１／２倍に限られることはなく例えば１／４倍等であってもよい。
（３）実施の形態１、２に係る各演算処理装置では、命令解釈制御回路が、コプロセッサ演算命令のコプロセッサ用命令コードフィールドの内容である演算種別をコプロセッサの論理制御回路に伝達することとし、その解釈はコプロセッサの論理制御回路が行うこととしたが、解釈の分担はこれに限定されることはなく、例えば、命令解釈制御回路がコプロセッサ用命令コードフィールドの内容を解釈することによって演算を特定してその旨を示す信号を論理制御回路に伝達して、論理制御回路はその指定された信号で特定される演算を演算器４２００に実行させることとしてもよい。
（４）実施の形態１〜３で示したコプロセッサ演算命令は、ソースデータを格納するレジスタ及びデスティネーションデータを格納するレジスタはそれぞれ１つずつしか指定できないものとしたが、これらを複数指定できるようにしても良い。この場合には、演算処理装置における主プロセッサからコプロセッサへのデータ伝送路とコプロセッサから主プロセッサへのデータ伝送路とをそれぞれ複数設けて、それに応じてデータ転送の制御を行うとよい。
（５）実施の形態１で図５〜図１３を用いて説明したコプロセッサ演算命令に係る各処理、例えば命令データ取得処理や命令デコード処理やコプロセッサへのデータ受け渡し処理等は、必ずしもそれぞれ１サイクルで実行しなければならないものではなく、例えば命令データ取得処理と命令デコード処理とを１サイクルで実行しても差し支えない。
（６）実施の形態１、２に係る各演算処理装置において、コプロセッサは、命令メモリ５０００やデータメモリ６０００内のデータを直接アクセスしていないが、専用のバスや命令を設けアクセス可能となるように構成してもよい。
（７）実施の形態１、２に係る各演算処理装置では、コプロセッサ演算命令で指定するソースデータを格納するレジスタとデスティネーションデータを格納するレジスタとはいずれも主プロセッサ側のレジスタとしたが、演算処理装置がコプロセッサを複数有することとし、あるコプロセッサＡに演算を行わせるためのコプロセッサ演算命令において指定するソースデータ及びデスティネーションデータを格納するレジスタとして、別のコプロセッサＢのレジスタを指定可能にしてもよい。この場合には、コプロセッサ演算命令に対応して主プロセッサの命令解釈制御回路が行ったレジスタバンク３５００への制御内容を、そのまま、コプロセッサＢのレジスタバンクへの制御内容として適用するとよい。また、そのコプロセッサＢのレジスタバンクへの制御は、命令解釈制御回路からの指示を受けてコプロセッサＢにおける論理制御回路が実行することとしてもよい。
（８）実施の形態１のいくつかの変形例において、主プロセッサが、コプロセッサの演算結果の受け取り準備ができたときに、受け取り可能の旨の信号を送出することとしたが、この受け取り可能の信号の代わりに、コプロセッサの演算結果をレジスタに書き込んだ直後に書込完了の旨の信号を送出することとし、コプロセッサ側においては、書込完了の旨の信号を受信するまでは演算結果のデータ伝送路３０７０上への出力を継続するようにしてもよい。
（９）実施の形態１、２で示した主プロセッサとコプロセッサとを含む演算処理装置は、半導体集積回路として１つの半導体チップ上に構成されていてもよく、その中には、更に命令メモリが含まれていてもよく、更にデータメモリが含まれていてもよい。
（１０）実施の形態３では、オブジェクトコード生成装置は、Ｃ言語等の高級言語で記述されたソースコードに基づいて、オブジェクトコードを生成するいわゆるコンパイラであることとしたが、オブジェクトコード生成装置は例えばいわゆるアセンブラやアセンブラオプティマイザ等であってもよく、ソースコードは、例えば、実施の形態１で示した演算処理装置の命令セットに対応した命令列からなるコードであってもよく、オブジェクトコード生成装置がそのコードの順序を変更して、コプロセッサ演算命令に対応する演算結果が格納されていないレジスタを入力とする演算命令が含まれないようにしたオブジェクトコード、つまりコプロセッサ演算命令の演算結果を用いる演算命令をそのコプロセッサ演算命令の演算結果がレジスタに格納されるはずのサイクル数だけそのコプロセッサ演算命令より後にずらして配置してなるオブジェクトコードを、生成するようにしてもよい。
【０１２２】
なお、実施の形態２で示した演算処理装置が実行可能なプログラムであってコプロセッサ演算命令を含むものを生成する方法としても、プログラム作成者が直接的にプログラムを記述する他に、実施の形態３で示したオブジェクトコード生成装置からコプロセッサ演算命令に関連して命令順序を変更する機能を省略したものによって、生成することとしてもよい。
（１１）実施の形態３で示したオブジェクトコード生成装置の命令コード記憶部７０２０に記憶されている情報のうち、サイクル情報を他のコプロセッサに対応した内容のものに切り替えられるようにしてもよい。これにより、このオブジェクトコード生成装置は、演算処理装置におけるコプロセッサを他のものに切り替えた場合に対応したオブジェクトコードの生成を行うことができるようになる。
（１２）実施の形態３で示したオブジェクトコード生成装置が、コプロセッサ演算命令を含むオブジェクトコードを生成する場合においては、そのコプロセッサ演算命令で指定するソースデータを格納するレジスタとデスティネーションデータを格納するレジスタとはいずれも主プロセッサ側のレジスタであることとしたが、主プロセッサ側のレジスタに限られることはなく、複数のコプロセッサを有する演算処理装置を対象にしたオブジェクトコードを生成するために、あるコプロセッサＡに演算を行わせるための演算のソースデータ及びデスティネーションデータを格納するレジスタとして、別のコプロセッサＢのレジスタを指定したコプロセッサ演算命令を出力することとしてもよい。
（１３）実施の形態３で示したオブジェクトコード生成装置において実行される、命令コード記憶部に記憶された情報とソースコードとに基づいてオブジェクトコードを生成する処理を、定義しているコンピュータプログラムを、記録媒体に記録し又は各種通信路等を介して、流通させ頒布することもできる。このような記録媒体には、フラッシュメモリ、ＩＣカード、光ディスク、フレキシブルディスク、ＲＯＭ等がある。流通、頒布されたコンピュータプログラムはコンピュータに読み出され得るメモリ等に格納されることにより利用に供され、そのコンピュータはそのコンピュータプログラムを実行して実施の形態３で示したオブジェクトコード生成装置の各機能を実現するものとなる。
（１４）実施の形態１、２で示したコプロセッサは、演算器４２００内に複数の要素演算器と選択器を含み、要素演算器は加算、減算、乗算等の演算を行い、コプロセッサの命令やレジスタの設定により、動的に演算の種類を変更できるように構成してもよい。また、要素演算器同士は互いに接続され、主プロセッサ又はコプロセッサ内のレジスタ及び他の要素演算器の演算結果を、選択器を介して、要素演算器に入力可能にし、コプロセッサの命令やレジスタの設定により、その入力先を動的に変更できるようにしてもよい。
（１５）実施の形態１、２で示した演算処理装置は、複数のコプロセッサで構成されていてもよく、コプロセッサの演算器４２００へ入力されるソースデータとして、主プロセッサのレジスタの内容が用いられることに限られず、自コプロセッサ又は他コプロセッサのレジスタの内容が用いられるようにしてもよく、コプロセッサの命令やレジスタの設定により、その入力先となるソースデータの格納場所を動的に変更できるようにしてもよい。
【０１２３】
また、コプロセッサの演算器４２００は加算、減算、乗算等の演算を行い、コプロセッサの命令やレジスタの設定により、演算器４２００の演算を動的に変更できるようにしてもよい。更に、コプロセッサの論理制御回路４１００は、特殊命令やレジスタの設定により、コプロセッサ演算命令のフォーマット等を動的に変更できるようにしてもよい。つまり、命令コード、入力先、出力先、演算等のビット割付のマッピングを動的に変更できるように構成してもよい。
【産業上の利用可能性】
【０１２４】
本発明に係る演算処理装置は、各種コンピュータ、各種家電機器等のプログラム実行可能な機器に搭載され利用されるものである。
【図面の簡単な説明】
【０１２５】
【図１】ｘｅｘｅｃ命令を含むアセンブラプログラムの一部を例示する図である。
【図２】コプロセッサ演算命令（ｘｅｘｅｃ命令）のフォーマットを示す図である。
【図３】実施の形態１に係る演算処理装置の構成を示すブロック図である。
【図４】レジスタバンク３５００の構成を詳細に示す構成図である。
【図５】コプロセッサ演算命令に係る各処理についてのタイミングチャートである。
【図６】変形例１におけるコプロセッサ演算命令に係る各処理についてのタイミングチャートである。
【図７】変形例２におけるコプロセッサ演算命令に係る各処理についてのタイミングチャートである。
【図８】変形例２におけるコプロセッサ演算命令に係る各処理についてのタイミングチャートであり、受け取り可能の旨を示す信号が遅れて発された場合の例を示す。
【図９】変形例３におけるコプロセッサ演算命令に係る各処理についてのタイミングチャートである。
【図１０】変形例３におけるコプロセッサ演算命令に係る各処理についてのタイミングチャートであり、受け取り可能の旨を示す信号が遅れて発された場合の例を示す。
【図１１】変形例４におけるコプロセッサ演算命令に係る各処理についてのタイミングチャートである。
【図１２】変形例５におけるコプロセッサ演算命令に係る各処理についてのタイミングチャートである。
【図１３】変形例６におけるコプロセッサ演算命令に係る各処理についてのタイミングチャートである。
【図１４】実施の形態３に係るオブジェクトコード生成装置の構成を示すブロック図である。
【図１５】ソースコードの例を示す図である。
【図１６】図１５に例示するソースコードに基づいて生成されるオブジェクトコードの例を示す図である。
【図１７】コプロセッサに演算を行わせるプログラムの例を示す図である。
【符号の説明】
【０１２６】
２１  命令識別コードフィールド
２２  コプロセッサ用命令コードフィールド
２３  デスティネーションレジスタ指定フィールド
２４  ソースレジスタ指定フィールド
１００  演算処理装置
３０００  主プロセッサ
３０１０、３０２０、３０３０、３０４０、３０５０、４０２０、４０４０  制御信号線
３０６０、３０６５、３０７０、３０７５、３０８０、３０８５、４０６０、４０６５、５０１０  データ伝送路
３１００  命令解釈制御回路
３２００  演算器
３５００、４５００  レジスタバンク
３６５０、３６５１、３６６５、３６７０、３６８０  セレクタ
４０００  コプロセッサ
４１００  論理制御回路
４２００  演算器
５０００  命令メモリ
６０００  データメモリ
７０００  オブジェクトコード生成装置
７０１０  ソースコード取得部
７０２０  命令コード記憶部
７０３０  オブジェクトコード生成部
【図１】
2006048661.tif 000003
【図２】
2006048661.tif 000004
【図３】
2006048661.tif 000005
【図４】
2006048661.tif 000006
【図５】
2006048661.tif 000007
【図６】
2006048661.tif 000008
【図７】
2006048661.tif 000009
【図８】
2006048661.tif 000010
【図９】
2006048661.tif 000011
【図１０】
2006048661.tif 000012
【図１１】
2006048661.tif 000013
【図１２】
2006048661.tif 000014
【図１３】
2006048661.tif 000015
【図１４】
2006048661.tif 000016
【図１５】
2006048661.tif 000017
【図１６】
2006048661.tif 000018
【図１７】
2006048661.tif 000019