(57)【要約】  【課題】  プロセッサとコプロセッサの処理におけるバスラインへの過負荷とコプロセッサの設計の複雑さを回避して、様々な機能を有するコプロセッサの設計や追加を容易にする。  【解決手段】  このプロセッサ・コプロセッサシステムは、第１のレジスタファイルを有し、プログラム命令列を実行するプロセッサ１０と、第２のレジスタファイル及び演算器を有し、第２のレジスタファイルに格納されたデータに対して所定の演算を行うと共に、演算結果を第２のレジスタファイルに格納するコプロセッサ２０とを含み、プロセッサ１０が、当該プロセッサ単独で実行される命令の他に、コプロセッサと協調して、第２のレジスタファイルをデータのソース及びデスティネーションとして演算器において演算を行う演算命令と、データの転送を行うための第１〜第４の転送命令とを実行する。【選択図】  図３
2007052664.tif 000002
【特許請求の範囲】
【請求項１】
データ及び／又はアドレスを格納する第１のレジスタファイルを有し、プログラム命令列を実行するプロセッサと、
データを格納する第２のレジスタファイル及び所定の演算を行う演算器を有し、前記第２のレジスタファイルに格納されたデータに対して所定の演算を行うと共に、演算結果を前記第２のレジスタファイルに格納するコプロセッサと、
を含み、前記プロセッサが、当該プロセッサ単独で実行される命令の他に、コプロセッサと協調して実行する命令として、
前記第２のレジスタファイルをソースレジスタ及びデスティネーションレジスタとして前記演算器において演算を行うための演算命令群と、
前記第１のレジスタファイルをソースレジスタとし前記第２のレジスタファイルをデスティネーションレジスタとしてデータの転送を行うための第１の転送命令群と、
前記第２のレジスタファイルをソースレジスタとし前記第１のレジスタをデスティネーションレジスタとしてデータの転送を行うための第２の転送命令群と、
前記第１のレジスタファイルを用いた間接メモリアドレッシングによって前記第２のレジスタファイルをデスティネーションレジスタとしてメモリからデータをロードするための第３の転送命令群と、
前記第１のレジスタファイルを用いた間接メモリアドレッシングによって前記第２のレジスタファイルをソースレジスタとしてメモリにデータをストアするための第４の転送命令群と、
を具備するプロセッサ・コプロセッサシステム。
【請求項２】
前記第１のレジスタファイルが、整数データ又はアドレスを格納するための整数レジスタであり、
前記コプロセッサが、前記プロセッサから入力される演算コマンドに従って浮動小数点演算を行う、
請求項１記載のプロセッサ・コプロセッサシステム。
【請求項３】
前記プロセッサが、動作開始を要求するための第１の信号と、デコードされたコマンドと、演算のために必要なデータがあれば該データとを前記コプロセッサに出力し、
前記コプロセッサが、動作の終了を報告するための第２の信号を出力し、また、出力すべきデータがある場合には、該データを前記第２の信号に同期して前記プロセッサに出力する、
請求項１又は２記載のプロセッサ・コプロセッサシステム。
【請求項４】
前記第１のレジスタファイルが３２ビット長のデータを格納するレジスタであり、
前記第２のレジスタファイルが６４ビット長のデータを格納するレジスタであり、
前記プロセッサが、前記コプロセッサとの間のデータ転送のために、６４ビット長のデータの上位３２ビットの転送命令と下位３２ビットの転送命令とを具備する、
請求項１〜３のいずれか１項記載のプロセッサ・コプロセッサシステム。
【請求項５】
前記コプロセッサにおける動作速度が、前記プロセッサにおける動作速度の整数倍である、請求項１〜４のいずれか１項記載のプロセッサ・コプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子計算機における演算処理の高速化と高機能化を図るために、汎用性のあるプロセッサと応用に特化したコプロセッサとを接続して構成されるプロセッサ・コプロセッサシステムに関する。
【背景技術】
【０００２】
電子計算機を用いた演算システムにおいて、プロセッサとコプロセッサとを接続して処理を行わせることにより、演算処理の高速化と高機能化を図ることが行われている。ここで、コプロセッサとは、プロセッサの機能を強化するために設けられ、特定の分野に特化された補助プロセッサのことをいう。代表的なコプロセッサとしては、浮動小数点演算を専門に処理する浮動小数点演算装置（ＦＰＵ：Floating point operation Processing Unit）や、仮想アドレスを管理するアドレス変換ユニット等が該当する。
【０００３】
従来のプロセッサ・コプロセッサシステムにおいては、コプロセッサが、命令やデータの入出力のためにバスラインを共用し、バスラインの動作を監視してコプロセッサとして必要な演算処理を実行する。このようなプロセッサ・コプロセッサシステムにおいては、バスラインを常に監視する必要があるのと、バスラインの負荷が重くなるという問題があった。また、プロセッサの仕様がコプロセッサの仕様と一体的に規定されているので、プロセッサの完成後に、新規機能を有するコプロセッサを追加することは容易ではない。
【０００４】
関連する技術として、下記の特許文献１には、メインＣＰＵとサブ処理装置の演算を効率良く行うことのできる階層並列処理型の中央処理装置が開示されている。この中央処理装置は、シーケンシャルに記述された命令列を実行する機能を有するメインＣＰＵ部と、メインＣＰＵ部からアクセス可能な主記憶装置等のメインソースと、メインＣＰＵ部からのマクロ命令の指示によりそれ以前に指令されたマクロ命令の実行結果をメインＣＰＵ部の対応するバスサイクルに呼応して出力する１台以上のサブ処理装置とから構成される。
【０００５】
メインＣＰＵ部と各サブ処理装置とは、データバス、コントロールバス、及び、命令バスを介して接続され、通常は、メインＣＰＵの管理下で各サブ処理装置が動作する。特許文献１によれば、命令バスが、アドレスバスの一部分を共用することによって代用されている。また、サブ処理装置は、例えば、浮動小数点数値処理を実行するＦＰＵのように、メインＣＰＵ部の処理機能の一部を代行するコプロセッサである。しかしながら、プロセッサとコプロセッサとがバスラインを共用しているので、バスラインの競合に関する問題は解決されていない。
【特許文献１】特開平６−１３１１８１号公報（第２−５頁、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
そこで、上記の点に鑑み、本発明は、プロセッサとコプロセッサの処理におけるバスラインの過負荷を回避して、また、コプロセッサがバスを監視する必要をなくして、様々な機能を有するコプロセッサの設計や追加を容易にすることを目的とする。
【課題を解決するための手段】
【０００７】
以上の課題を解決するため、本発明の１つの観点に係るプロセッサ・コプロセッサシステムは、データ及び／又はアドレスを格納する第１のレジスタファイルを有し、プログラム命令列を実行するプロセッサと、データを格納する第２のレジスタファイル及び所定の演算を行う演算器を有し、第２のレジスタファイルに格納されたデータに対して所定の演算を行うと共に、演算結果を第２のレジスタファイルに格納するコプロセッサとを含み、プロセッサが、当該プロセッサ単独で実行される命令の他に、コプロセッサと協調して実行する命令として、第２のレジスタファイルをソースレジスタ及びデスティネーションレジスタとして演算器において演算を行うための演算命令群と、第１のレジスタファイルをソースレジスタとし第２のレジスタファイルをデスティネーションレジスタとしてデータの転送を行うための第１の転送命令群と、第２のレジスタファイルをソースレジスタとし第１のレジスタをデスティネーションレジスタとしてデータの転送を行うための第２の転送命令群と、第１のレジスタファイルを用いた間接メモリアドレッシングによって第２のレジスタファイルをデスティネーションレジスタとしてメモリからデータをロードするための第３の転送命令群と、第１のレジスタファイルを用いた間接メモリアドレッシングによって第２のレジスタファイルをソースレジスタとしてメモリにデータをストアするための第４の転送命令群とを具備する。
【０００８】
ここで、第１のレジスタファイルが、整数データ又はアドレスを格納するための整数レジスタであり、コプロセッサが、プロセッサから入力される演算コマンドに従って浮動小数点演算を行うようにしても良い。
また、プロセッサが、動作開始を要求するための第１の信号と、デコードされたコマンドと、演算のために必要なデータがあれば該データとをコプロセッサに出力し、コプロセッサが、動作の終了を報告するための第２の信号を出力し、また、出力すべきデータがある場合には、該データを第２の信号に同期してプロセッサに出力するようにしても良い。
【０００９】
さらに、第１のレジスタファイルが３２ビット長のデータを格納するレジスタであり、第２のレジスタファイルが６４ビット長のデータを格納するレジスタであり、プロセッサが、コプロセッサとの間のデータ転送のために、６４ビット長のデータの上位３２ビットの転送命令と下位３２ビットの転送命令とを具備するようにしても良い。
以上において、コプロセッサにおける動作速度が、プロセッサにおける動作速度の整数倍であることが望ましい。
【発明の効果】
【００１０】
本発明によれば、コプロセッサの機能に関する一般的な命令がプロセッサにおいて定義されており、プログラム命令列をプロセッサがデコードし、コプロセッサ命令であるときには、コプロセッサにコマンドを出力し、コプロセッサがコマンドに従って演算処理や転送処理を行うことにより、プロセッサとコプロセッサの処理におけるバスラインの過負荷を回避して、また、コプロセッサがバスを監視する必要をなくして、様々な機能を有するコプロセッサの設計や追加を容易にすることができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明を実施するための最良の形態について、図面を参照しながら詳しく説明する。なお、同一の構成要素には同一の参照番号を付して、説明を省略する。
図１は、本発明の一実施形態に係るプロセッサ・コプロセッサシステムを演算システムの中に応用した専用計算機システムを示すブロック図である。この専用計算機システムは、複数の演算システム１００と、複数のメモリ２００と、通信制御部３００と、ＰＣ（パーソナルコンピュータ）４００とによって構成される。
【００１２】
複数ある演算システム１００は、分子の電子状態を第一原理に基づいて求める際の膨大な二電子積分計算を並列に実行する。各々の演算システム１００には、プログラムや演算に用いられるデータや演算結果を一時的に格納するメモリ２００が接続されている。また、複数の演算システム１００は、並列的に通信を行う通信制御部３００を介して、ＰＣ４００に接続されている。通信制御部３００は、図示されてないがトリー構造をしており、ＰＣ４００をルートとして、末端には数十個の演算システム１００を持つことができる。ＰＣ４００は、二電子積分計算を各演算システムに割り振るとともに、その結果を統合して、第一原理により分子の電子状態を求める。
【００１３】
図２は、図１に示す演算システム１００の構成を示すブロック図である。演算システム１００が行う二電子積分計算は、漸化計算と初期積分とからなり、それぞれ専用のハードウェアである漸化計算エンジン（ＲＣ）１４０と初期積分エンジン（ＩＩＣ）１１０とによって実行される。初期積分エンジン１１０は、倍精度の浮動小数点の四則演算の他に、指数関数及び誤差関数を用いる重要な演算を行う。指数関数を用いる演算、及び、誤差関数を用いる演算は、専用のハードウェアとして設けられた演算器において行われる。
【００１４】
初期積分エンジン１１０は、本発明の実施形態に係るプロセッサ・コプロセッサシステムである。プロセッサが実行するプログラムはＩＩＣ内部プログラムメモリ１３０に格納される。誤差関数演算に必要な誤差関数テーブルメモリ１２０は、初期積分エンジン１１０内のコプロセッサ内の誤差関数演算器に接続されている。通信インタフェース１６０は、外部の通信制御部３００に接続されている。外部メモリインタフェース１８０は、外部のメモリ２００に接続される。漸化計算エンジン１４０は、漸化計算を行う。そのプログラムは、ＲＣ内部プログラムメモリ１５０と外部のメモリ２００に格納される。
【００１５】
図３は、本発明の一実施形態に係るプロセッサ・コプロセッサシステムである初期積分エンジン１１０の構成を示すブロック図である。初期積分エンジン１１０は、プロセッサ１０と、コプロセッサ２０とを含んでいる。
【００１６】
プロセッサ１０は、整数レジスタファイル１１を有している。整数レジスタファイル１１は、データを格納すると共に、メモリ空間からデータをロードしたりメモリ空間にデータをストアしたりする際に、間接アドレッシングのために用いられるアドレスを格納する。
【００１７】
プロセッサ１０は、一般的な３２ビットＲＩＳＣプロセッサであり、レジスタファイル１１をオペランドとする算術演算命令、論理演算命令、転送命令、ロードストア命令、制御命令を実行する。図４〜図７に、その命令コードマップを示す。命令は、１６ビット固定長である。命令コードマップは、命令コードの上位８ビットによって作成されており、主要な命令のコード割付を示している。命令コードの上位３ビットが（０００）から（１１０）の場合、即ち、図４〜図７の７０１で示したエリアにマップされた命令は、プロセッサ単独で実行される固定的な命令である。一方、命令コードの上位３ビットが（１１１）の場合、即ち、図４〜図７の７０２で示したエリアにマップされた命令は、プロセッサがコプロセッサと協調して実行する命令（コプロセッサ命令と呼ぶ）である。このコプロセッサ命令の内で、図４〜図６の７０３で示したエリアには、コプロセッサに関わるデータ転送命令が割り当てられている。プロセッサ１０は、コプロセッサの演算命令及びデータ転送命令をデコードすると、コマンドをコプロセッサ２０に対して発行する。以下において、このコマンドのことを「コプロセッサコマンド」ともいう。
【００１８】
再び図３を参照すると、コプロセッサ２０は、レジスタファイル２１、浮動小数点加減算器２２、浮動小数点乗算器２３、浮動小数点除算・平方根演算器２４、指数関数演算器２５、誤差関数演算器２６、及び、制御回路２７を有している。これらの演算器２１〜２６は、内部バスライン３０を介して互いに接続されている。レジスタファイル２１は、６４ビット１６ワードのデータエリアと制御データのエリアとを有しており、データエリアは、コプロセッサの演算命令のオペランドを記憶する。レジスタファイル２１は、データ用に１６ワードを備えることにより、メモリとの間でデータを転送することなく、コプロセッサ２０において複雑な計算をすることが可能となる。
【００１９】
コプロセッサ２０は、プロセッサ１０が命令列からコプロセッサ演算命令及びコプロセッサ転送命令をフェッチ・デコードすると、対応するコマンドを受け取り、そのコマンドに従って、レジスタ２１に格納されたデータに基づいて浮動小数点演算を行うと共に、演算結果をレジスタ２１に格納する。なお、コプロセッサ２０内における演算器は、目的に応じて変更することが可能である。演算器の選択を含むコプロセッサの設計の段階で、一般的にコプロセッサ演算命令として割り当てられた命令（図４〜図７の７０２のエリアの上半分の命令）、例えば、fop1、fop2、・・・に、具体的な意味が与えられる。
【００２０】
プロセッサ１０とコプロセッサ２０とは、５種類の接続線を介して接続されている。プロセッサ１０からコプロセッサ２０に動作開始を要求する際には、１ビットのリクエスト信号（ｒｅｑ）が出力される。コマンドは、３２ビットのコマンド信号線（ｃｍｄ）上に出力される。コマンド数は、オペランドの指定ビットも含めて多くないので、３２ビット全てが使われてはいない。プロセッサ１０からコプロセッサ２０に演算のために必要なデータを渡す際には、６４ビットのデータ信号線（ｄｔ１）上に出力される。なお、コマンド信号線（ｃｍｄ）は、メモリアドレスを伝送するためにも共用され、データ信号線（ｄｔ１）は、メモリデータを伝送するためにも共用される。
【００２１】
一方、コプロセッサ２０からプロセッサ１０に動作終了を知らせる際には、１ビットのアクノレッジ信号（ａｃｋ）が出力される。コプロセッサ２０からプロセッサ１０に演算結果のデータを出力する際には、６４ビットのデータ信号線（ｄｔ２）上に送信される。その場合には、アクノレッジ信号（ａｃｋ）が、データ（ｄｔ２）に同期してプロセッサ１０に出力される。
【００２２】
さらに、プロセッサ１０及びコプロセッサ２０には、外部からクロック信号ＣＬＫ及びクロックイネーブル信号ＣＬＫeｎが入力される。クロック信号ＣＬＫ及びクロックイネーブル信号ＣＬＫeｎは、プロセッサ１０の動作速度を決定する。クロックイネーブル信号ＣＬＫeｎは、それがハイの時のクロック信号ＣＬＫの立ち上がりエッジが有効なクロックエッジであることを表している。
【００２３】
一方、クロック信号ＣＬＫは、コプロセッサ２０の動作速度を決定する。コプロセッサ２０においては、クロックイネーブル信号ＣＬＫeｎの状態に関わらず、クロック信号ＣＬＫの立ち上がりエッジが有効なクロックエッジとなる。これにより、プロセッサ１０は、クロック信号ＣＬＫの整数分の１の周波数で動作し、コプロセッサ２０は、クロック信号ＣＬＫの周波数で動作する。クロックイネーブル信号ＣＬＫeｎは、プロセッサ１０との間で信号の受け渡しを行うために、コプロセッサ２０においても必要である。
【００２４】
浮動小数点演算は、レイテンシーが大きく、多数の処理クロック数を必要とする。そこで、本実施形態においては、プロセッサ１０において用いられるクロック信号ＣＬＫの周波数の整数分の１（本実施形態においては２分の１）の周波数を有するクロックイネーブル信号ＣＬＫeｎを用いることにより、コプロセッサ２０における処理能力を相対的に高めている。
【００２５】
既に説明したように、プロセッサ１０においては、コプロセッサ２０の機能に関する演算命令及び転送命令が定義されている。演算命令としては、ｆｏｐ１〜ｆｏｐ１２が定義可能となっている。これらの演算命令は、コプロセッサ２０の演算機能の設計に合わせて定義される。
【００２６】
本実施形態においては、図８に示すように、ｆｏｐ１として加算命令「ｆａｄｄ」が定義され、ｆｏｐ２として減算命令「ｆｓｕｂ」が定義され、ｆｏｐ３として乗算命令「ｆｍuｌ」が定義され、ｆｏｐ４として除算命令「ｆｄｉｖ」が定義され、ｆｏｐ５として絶対値を取る命令「ｆａｂｓ」が定義され、ｆｏｐ６として負数を求める命令「ｆｎｅｇ」が定義され、ｆｏｐ７として指数関数「ｆｅｘｐ」が定義され、ｆｏｐ８として誤差関数「ｆｅｒｆ」が定義され、ｆｏｐ９として平方根の逆数を求める命令「ｆｓｑｒｉｎｖ」が定義され、ｆｏｐ１０として逆数を求める命令「ｆｉｎｖ」が定義され、ｆｏｐ１１として比較を行う命令「ｆｃｍｐ」が定義されている。
【００２７】
これらのコプロセッサ演算命令には、命令本体に対して、データのソース（供給元）及びデスティネーション（出力先）を示すために、レジスタ又はメモリを指定するオペランドを付加する必要がある。オペランドとして、コプロセッサ２０のレジスタファイル２１に含まれているエントリをデスティネーションとする場合には「%fd」が用いられ、レジスタファイル２１に含まれているエントリをソースとする場合には「%fs」が用いられる。
【００２８】
次に、コプロセッサ転送命令としては、図９に示すように、ｍｖｌ命令とｍｖｈ命令とｌｄ命令が定義されている。ｍｖｌ命令とｍｖｈ命令は、プロセッサのレジスタファイルとコプロセッサのレジスタファイル間においてデータを移動させるための命令である。６４ビット長のデータの下位３２ビットを移動する場合には、命令「mvl」が用いられ、６４ビット長のデータの上位３２ビットを移動する場合には、命令「mvh」が用いられる。
【００２９】
また、ｌｄ命令とは、メモリに格納されているデータをコプロセッサ２０のレジスタファイル２１にロードしたり、コプロセッサ２０のレジスタファイル２１に格納されているデータをメモリにストアするための命令である。このようにデータをロード又はストアするために、命令「ld.l」が用いられる。ここで、命令「ld.l」における「.l」は、６４ビットデータの転送であることを表している。また、コプロセッサのレジスタファイル２１の中でデータを移動する命令も、「ld.l」で表される。ロード／ストアであるかレジスタファイル２１内の転送であるかは、オペランドの記述で区別される。
【００３０】
コプロセッサ転送命令において、オペランドとしては、プロセッサ１０の整数レジスタファイル１１をデスティネーションとする場合には「%rd」が用いられ、整数レジスタファイル１１をソースとする場合は「%rs」が用いられる。また、コプロセッサ２０のレジスタファイル２１に含まれているデータ格納エリアをデスティネーションとする場合には「%fd」が用いられ、レジスタファイル２１に含まれているデータ格納エリアをソースとする場合には「%fs」が用いられる。
【００３１】
さらに、レジスタファイル２１に含まれている制御データエリアをデスティネーションとする場合には「%fcd」が用いられ、レジスタファイル２１に含まれている制御データエリアをソースとする場合には「%fcs」が用いられる。また、ロードとストアの場合には、メモリのアドレスを指定するために、プロセッサの整数レジスタによる間接アドレッシングを表す「[%rb]」というオペランドが用いられる。
【００３２】
また、プロセッサ１０において定義されたコプロセッサ演算命令及びコプロセッサ転送命令を実現するために、これらの命令に対応するコプロセッサコマンドが定められている。コプロセッサコマンドには、それぞれ第１〜第３のオペランドが定められている。ただし、転送命令に対応するコプロセッサコマンドにおいては、第１及び第２のオペランドは使用されていない（図９において、「 - 」で表される）。
【００３３】
例えば、コプロセッサ２０のレジスタをソースに指定し、プロセッサ１０の整数レジスタをデスティネーションに指定するデータの転送命令（オペランドを含む）は、「mvl  %rd,%fs」（下位３２ビット）と「mvh  %rd,%fs」（上位３２ビット）であり、対応するコプロセッサコマンド（オペランドを含む）は、「rd - - fs」である。
【００３４】
同様に、プロセッサ１０の整数レジスタをソースに指定し、コプロセッサ２０のレジスタをデスティネーションに指定するデータの転送命令は、「mvl  %fd,%rs」（下位３２ビット）と「mvh  %fd,%rs」（上位３２ビット）であり、対応するコプロセッサコマンドは、「wv_l - - fd」（下位３２ビット）と「wv_h - - fd」（上位３２ビット）である。
【００３５】
また、コプロセッサ２０のレジスタファイル２１に含まれている制御用レジスタをソースとし、プロセッサ１０の整数レジスタをデスティネーションとするデータの転送命令は、「mvl  %rd,%fcs」（下位３２ビット）と「mvh  %rd,%fcs」（上位３２ビット）であり、対応するコプロセッサコマンドは、「rdc - - fｃs」である。
【００３６】
同様に、プロセッサ１０の整数レジスタをソースとし、コプロセッサ２０のレジスタファイル２１に含まれている制御用レジスタをデスティネーションとするデータの転送命令は、「mvl  %fcd,%rs」（下位３２ビット）と「mvh  %fcd,%rs」（上位３２ビット）であり、対応するコプロセッサコマンドは、「wrc_l - - fcd」（下位３２ビット）と「wrc_h - - fcd」（上位３２ビット）である。
【００３７】
さらに、メモリをデスティネーションとし、コプロセッサ２０のレジスタファイル２１のデータをストアする命令は、「ld.l  [%rb],%fs」であり、対応するコプロセッサコマンドは、「rd - - fs」である。同様に、コプロセッサ２０のレジスタファイル２１をデスティネーションとし、メモリをソースとするロード命令は、「ld.l  %fd,[%rb]」であり、対応するコプロセッサコマンドは、「wr - - fd」である。
【００３８】
次に、図２、図３、及び、図１０を参照しながら、プロセッサ・コプロセッサシステム１１０の動作について説明する。
図１０は、プロセッサ・コプロセッサシステム１１０の動作を説明するためのタイミングチャートである。プロセッサ１０は、バス４０を介してＩＩＣ内部プログラムメモリ１３０から命令列を読み出し実行する。その命令列の中にコプロセッサ演算命令及びコプロセッサ転送命令があると、自身の必要な動作をすると共に、コマンドをコプロセッサ２０に対して発行する。
【００３９】
図１０において、コプロセッサ２０は、クロック信号ＣＬＫに同期して動作する。一方、プロセッサ１０は、クロック信号ＣＬＫに同期して動作するが、有効なクロックエッジは、クロックイネーブル信号ＣＬＫeｎがハイレベルの時のＣＬＫの立ち上がりエッジである。プロセッサ１０は、クロック信号ＣＬＫの有効な立ち上がりエッジに同期して、動作開始を要求するための第１の信号（ｒｅｑ）と共に、３２ビットのコマンド（ｃｍｄ）と、必要な場合には、演算に用いられる６４ビットのデータ（ｄｔ１）とを、コプロセッサ２０に出力する。
【００４０】
コプロセッサ２０は、第１の信号（ｒｅｑ）に応答して、入力されたコマンド（ｃｍｄ）とデータ（ｄｔ１）とに基づいて演算処理又は転送処理を行い、要求された処理を行うための動作が終了すると、クロック信号ＣＬＫの有効な立ち上がりエッジでプロセッサが読み取れるように、動作終了を報告するための第２の信号（ａｃｋ）をプロセッサ１０に出力する。また、コプロセッサ２０は、６４ビットのデータ（ｄｔ２）をプロセッサ１０に出力する必要がある場合には、データ（ｄｔ２）を第２の信号（ａｃｋ）に同期してプロセッサ１０に出力する。これにより、プロセッサ１０は、データ（ｄｔ２）を受け取るためのタイミングを認識することができる。
【００４１】
このプロセッサ・コプロセッサシステムは、コプロセッサ２０の機能に関する命令（コプロセッサ命令）がプロセッサ１０において一般的な意味で定義されており、命令をプロセッサ１０がデコードし、コプロセッサ２０が渡されたコマンドに従って演算処理や転送処理を行うことを特徴としている。これにより、バス４０における複雑なプロコトルを知らなくても良いので、コプロセッサの設計が容易になる。また、プロセッサにおける命令の定義を変更することなく、コプロセッサ内における演算器と各コマンドに対する動作を目的に応じて変更することにより、様々な機能を有するコプロセッサを後から追加することも可能である。
【００４２】
さらに、プロセッサ１０において使用されるクロック信号の周波数の整数倍の周波数を有するクロック信号をコプロセッサ２０において使用することにより、プロセッサ１０とコプロセッサ２０との間で同期を取りながら、コプロセッサ２０における浮動小数点計算等の複雑な演算処理によるレイテンシーの問題を解消している。
【図面の簡単な説明】
【００４３】
【図１】本発明の一実施形態に係るプロセッサ・コプロセッサシステムを演算システムの中に応用した専用計算機システムを示すブロック図。
【図２】図１における演算システム１００の構成を示すブロック図。
【図３】本発明の一実施形態に係るプロセッサ・コプロセッサシステムを応用した初期積分エンジン１１０の構成を示すブロック図。
【図４】本発明の一実施形態におけるプロセッサ１０の命令コードマップ（その１）。
【図５】本発明の一実施形態におけるプロセッサ１０の命令コードマップ（その２）。
【図６】本発明の一実施形態におけるプロセッサ１０の命令コードマップ（その３）。
【図７】本発明の一実施形態におけるプロセッサ１０の命令コードマップ（その４）。
【図８】本発明の一実施形態におけるコプロセッサ演算命令のコマンドとの対応を示す図。
【図９】本発明の一実施形態におけるコプロセッサ転送命令のコマンドとの対応を示す図。
【図１０】図３に示すプロセッサ・コプロセッサシステムの動作を説明するためのタイミングチャート。
【符号の説明】
【００４４】
１０  プロセッサ、  １１  整数レジスタファイル、  ２０  コプロセッサ、  ２１  レジスタファイル、  ２２  加減算器、  ２３  乗算器、  ２４  除算・平方根演算器、  ２５  指数関数演算器、  ２６  誤差関数演算器、  ２７  制御回路、  ３０  内部バスライン、  ４０  バス、  １００  演算システム、  １１０  初期積分エンジン、  １２０  誤差関数テーブルメモリ、  １３０  ＩＩＣ内部プログラムメモリ、  １４０  漸化計算エンジン、  １５０  ＲＣ内部プログラムメモリ、  １６０  通信インタフェース、  １７０  内部データメモリ、  １８０  外部メモリインタフェース、  ２００  メモリ、  ３００  通信制御部、  ４００  ＰＣ、  ７０１  プロセッサの固定的命令エリア、  ７０２  コプロセッサ命令エリア、  ７０３  コプロセッサ転送命令エリア
【図１】
2007052664.tif 000003
【図２】
2007052664.tif 000004
【図３】
2007052664.tif 000005
【図４】
2007052664.tif 000006
【図５】
2007052664.tif 000007
【図６】
2007052664.tif 000008
【図７】
2007052664.tif 000009
【図８】
2007052664.tif 000010
【図９】
2007052664.tif 000011
【図１０】
2007052664.tif 000012