(57)【要約】【課題】ハードウェア規模の増大を最小限にしながら、高速な演算処理を行う集積回路装置を提供すること。【解決手段】集積回路装置は、コプロセッサから出力される第１、第２のレジスタデータを前記ＣＰＵに供給するための第１、第２のレジスタデータ供給線を含み、前記ＣＰＵは、複数のレジスタを含むレジスタファイルと、前記第１のレジスタデータ供給線を介して供給される前記第１のレジスタデータと前記ＣＰＵの内部のデータを受け、そのいずれかのデータを前記レジスタファイルに供給する第１のレジスタデータ選択回路と、を含み、前記コプロセッサから出力される前記第２のレジスタデータは、前記第２のレジスタデータ供給線を介して前記レジスタファイルに供給されることを特徴とする。【選択図】図５
2007128560.tif 000002
【特許請求の範囲】
【請求項１】
命令コードに基づいて所与の処理を実行するＣＰＵを含む集積回路装置であって、
コプロセッサから出力される第１、第２のレジスタデータを前記ＣＰＵに供給するための第１、第２のレジスタデータ供給線を含み、
前記ＣＰＵは、
複数のレジスタを含むレジスタファイルと、
前記第１のレジスタデータ供給線を介して供給される前記第１のレジスタデータと前記ＣＰＵの内部のデータを受け、そのいずれかのデータを前記レジスタファイルに供給する第１のレジスタデータ選択回路と、
を含み、
前記コプロセッサから出力される前記第２のレジスタデータは、前記第２のレジスタデータ供給線を介して前記レジスタファイルに供給されることを特徴とする集積回路装置。
【請求項２】
請求項１において、
前記コプロセッサから前記第１のレジスタデータ選択回路に第１のレジスタデータ選択信号を供給するための第１のレジスタデータ選択信号供給線をさらに含み、
前記第１のレジスタデータ選択回路は、前記第１のレジスタデータ選択信号に基づいて、前記第１のレジスタデータ及び前記ＣＰＵの内部のデータのうちのいずれかのデータを前記レジスタファイルに供給することを特徴とする集積回路装置。
【請求項３】
請求項２において、
前記レジスタファイルの前記複数のレジスタのうち、前記コプロセッサが指定するレジスタを示すコプロセッサ指定レジスタ番号を、前記コプロセッサから前記レジスタファイルに供給するためのレジスタ番号供給線をさらに含み、
前記第１のレジスタデータ選択信号は前記レジスタファイルに供給され、
前記レジスタファイルは、
前記コプロセッサから供給された前記コプロセッサ指定レジスタ番号と、前記ＣＰＵの内部で指定される内部指定レジスタ番号とを受け、前記第１のレジスタデータ選択信号に基づいて前記コプロセッサ指定レジスタ番号及び前記内部指定レジスタ番号のいずれかを選択出力するレジスタ番号選択回路を含み、
前記レジスタ番号選択回路から選択出力されたレジスタ番号に基づいて前記複数のレジスタの少なくとも一つが書き込み可能な状態に設定されることを特徴とする集積回路装置。
【請求項４】
請求項１乃至３のいずれかにおいて、
前記ＣＰＵは、
前記第２のレジスタデータ供給線を介して供給される第２のレジスタデータを第１の入力とし、前記第１のレジスタデータ選択回路から供給されるデータを第２の入力とし、前記第１、第２の入力のいずれかを前記複数のレジスタの少なくとも一つに供給する第２のレジスタデータ選択回路を含むことを特徴とする集積回路装置。
【請求項５】
請求項４において、
前記コプロセッサから前記第２のレジスタデータ選択回路に第２のレジスタデータ選択信号を供給するための第２のレジスタデータ選択信号供給線をさらに含み、
前記第２のレジスタデータ選択回路は、前記第２のレジスタデータ選択信号に基づいて、前記第２のレジスタデータ選択回路の前記第１、第２の入力のいずれかを前記複数のレジスタの少なくとも一つに供給することを特徴とする集積回路装置。
【請求項６】
請求項１乃至５のいずれかにおいて、
前記ＣＰＵは、前記命令コードに基づく演算処理を行うＡＬＵを含み、
前記ＣＰＵは、
前記ＡＬＵの演算処理結果に基づく第１のフラグデータを前記コプロセッサに供給するための第１のフラグデータ供給線と、
前記コプロセッサの演算処理結果に基づく第２のフラグデータを前記ＡＬＵに供給するための第２のフラグデータ供給線と、
を含み、
前記ＡＬＵは、
前記第１又は第２のフラグデータを格納するフラグレジスタと、
前記第１及び第２のフラグデータ供給線から前記第１及び第２のフラグデータを受け、前記第１及び第２のフラグデータのいずれかを前記フラグレジスタに供給するフラグデータ選択回路と、
を含むことを特徴とする集積回路装置。
【請求項７】
請求項６において、
前記ＣＰＵは、
フラグデータ選択信号を前記コプロセッサから前記ＡＬＵに供給するためのフラグデータ選択信号供給線をさらに含み、
前記ＡＬＵの前記フラグデータ選択回路は、前記フラグデータ選択信号供給線を介して供給される前記フラグデータ選択信号に基づいて、前記第１及び第２のフラグデータのいずれかを前記フラグレジスタに選択出力することを特徴とする集積回路装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路装置に関する。
【背景技術】
【０００２】
近年の半導体技術の向上に伴って、様々な電子機器の需要が拡大されてきている。そのような電子機器には、様々な制御を処理するためのＣＰＵ（Central-Processing-Unit）が内蔵される場合が多々ある。このようなプロセッサが内蔵された電子機器に対して、より高度な処理能力を持たせる場合、ＣＰＵとは別に、特定の処理に特化されたコプロセッサを設ける方法が知られている。この場合、ＣＰＵが苦手とする処理をコプロセッサに処理させることで、全体の処理を高速に行うことができる。
【０００３】
ところが、ＣＰＵとコプロセッサとを接続するバスの制限により、コプロセッサの処理結果が複数ある場合や、処理結果のデータ量が大きい場合に、ＣＰＵはコプロセッサから処理結果等を一度に受け取ることができなかった。このため、ＣＰＵは、コプロセッサから情報を複数回に分けて受け取る必要があり、処理能力の向上の妨げとなっていた。また、処理能力をさらに向上させるためには、動作クロックを引き上げるか、ハードウェア規模を拡大して処理能力を上げる必要があったが、これらの方法は低消費電力化やコスト削減に対する妨げとなっていた。
【特許文献１】特開２０００−２８４９６２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、ハードウェア規模の増大を最小限にしながら、高速な演算処理を行う集積回路装置を提供することにある。
【課題を解決するための手段】
【０００５】
（１）本発明は、
命令コードに基づいて所与の処理を実行するＣＰＵを含む集積回路装置であって、
コプロセッサから出力される第１、第２のレジスタデータを前記ＣＰＵに供給するための第１、第２のレジスタデータ供給線を含み、
前記ＣＰＵは、
複数のレジスタを含むレジスタファイルと、
前記第１のレジスタデータ供給線を介して供給される前記第１のレジスタデータと前記ＣＰＵの内部のデータを受け、そのいずれかのデータを前記レジスタファイルに供給する第１のレジスタデータ選択回路と、
を含み、
前記コプロセッサから出力される前記第２のレジスタデータは、前記第２のレジスタデータ供給線を介して前記レジスタファイルに供給されることを特徴とする。
【０００６】
（２）本発明の集積回路装置は、
前記コプロセッサから前記第１のレジスタデータ選択回路に第１のレジスタデータ選択信号を供給するための第１のレジスタデータ選択信号供給線をさらに含み、
前記第１のレジスタデータ選択回路は、前記第１のレジスタデータ選択信号に基づいて、前記第１のレジスタデータ及び前記ＣＰＵの内部のデータのうちのいずれかのデータを前記レジスタファイルに供給することを特徴とする。
【０００７】
（３）本発明の集積回路装置は、
前記レジスタファイルの前記複数のレジスタのうち、前記コプロセッサが指定するレジスタを示すコプロセッサ指定レジスタ番号を、前記コプロセッサから前記レジスタファイルに供給するためのレジスタ番号供給線をさらに含み、
前記第１のレジスタデータ選択信号は前記レジスタファイルに供給され、
前記レジスタファイルは、
前記コプロセッサから供給された前記コプロセッサ指定レジスタ番号と、前記ＣＰＵの内部で指定される内部指定レジスタ番号とを受け、前記第１のレジスタデータ選択信号に基づいて前記コプロセッサ指定レジスタ番号及び前記内部指定レジスタ番号のいずれかを選択出力するレジスタ番号選択回路を含み、
前記レジスタ番号選択回路から選択出力されたレジスタ番号に基づいて前記複数のレジスタの少なくとも一つが書き込み可能な状態に設定されることを特徴とする。
【０００８】
（４）本発明の集積回路装置は、
前記ＣＰＵは、
前記第２のレジスタデータ供給線を介して供給される第２のレジスタデータを第１の入力とし、前記第１のレジスタデータ選択回路から供給されるデータを第２の入力とし、前記第１、第２の入力のいずれかを前記複数のレジスタの少なくとも一つに供給する第２のレジスタデータ選択回路を含むことを特徴とする。
【０００９】
（５）本発明の集積回路装置は、
前記コプロセッサから前記第２のレジスタデータ選択回路に第２のレジスタデータ選択信号を供給するための第２のレジスタデータ選択信号供給線をさらに含み、
前記第２のレジスタデータ選択回路は、前記第２のレジスタデータ選択信号に基づいて、前記第２のレジスタデータ選択回路の前記第１、第２の入力のいずれかを前記複数のレジスタの少なくとも一つに供給することを特徴とする。
【００１０】
（６）本発明の集積回路装置は、
前記ＣＰＵは、前記命令コードに基づく演算処理を行うＡＬＵを含み、
前記ＣＰＵは、
前記ＡＬＵの演算処理結果に基づく第１のフラグデータを前記コプロセッサに供給するための第１のフラグデータ供給線と、
前記コプロセッサの演算処理結果に基づく第２のフラグデータを前記ＡＬＵに供給するための第２のフラグデータ供給線と、
を含み、
前記ＡＬＵは、
前記第１又は第２のフラグデータを格納するフラグレジスタと、
前記第１及び第２のフラグデータ供給線から前記第１及び第２のフラグデータを受け、前記第１及び第２のフラグデータのいずれかを前記フラグレジスタに供給するフラグデータ選択回路と、
を含むことを特徴とする。
【００１１】
（７）本発明の集積回路装置は、
前記ＣＰＵは、
フラグデータ選択信号を前記コプロセッサから前記ＡＬＵに供給するためのフラグデータ選択信号供給線をさらに含み、
前記ＡＬＵの前記フラグデータ選択回路は、前記フラグデータ選択信号供給線を介して供給される前記フラグデータ選択信号に基づいて、前記第１及び第２のフラグデータのいずれかを前記フラグレジスタに選択出力することを特徴とする。
【発明を実施するための最良の形態】
【００１２】
本実施の形態は、命令コードに基づいて所与の処理を実行するＣＰＵを含む集積回路装置であって、メモリから前記ＣＰＵに命令コードを供給するための命令コードバスと、コプロセッサから出力される命令コードを前記ＣＰＵに供給するための命令コード供給線と、を含み、前記ＣＰＵは、命令コードをフェッチするフェッチ部と、前記命令コードバスを介して入力される命令コードと、前記命令コード供給線を介して供給される命令コードとを受け、そのいずれかの命令コードを前記フェッチ部に供給する命令コード選択回路と、を含む集積回路装置に関する。
【００１３】
これにより、コプロセッサの演算処理結果に基づいた命令コードを例えばＣＰＵの動作クロックの１クロックでＣＰＵに供給することができる。さらに、ＣＰＵのフェッチ部にコプロセッサが生成した命令コードをフェッチさせることができる。また、飽和処理等の処理を高速にＣＰＵに処理させることもできる。
【００１４】
また、本実施の形態は、前記コプロセッサから前記命令コード選択回路に命令コード選択信号を供給するための命令コード選択信号供給線をさらに含み、前記命令コード選択回路は、前記命令コード選択信号に基づいて、前記命令コードバスを介して入力される命令コード及び前記命令コード供給線を介して供給される命令コードのうちのいずれかの命令コードを前記フェッチ部に供給するようにしてもよい。
【００１５】
これにより、コプロセッサ側で、ＣＰＵのフェッチ部にフェッチされる命令コードをコ
プロセッサから供給された命令コード及び命令コードバスから供給された命令コードのいずれかに選択制御することができる。
【００１６】
また、本実施の形態は、命令コードに基づいて所与の処理を実行するＣＰＵを含む集積回路装置であって、命令アドレスをメモリに供給するための命令アドレスバスと、コプロセッサから出力される命令アドレスを前記ＣＰＵに供給するための命令アドレス供給線と、を含み、前記ＣＰＵは、前記命令コードをフェッチするフェッチ部と、前記命令アドレス供給線を介して供給される命令アドレスと前記フェッチ部から供給される命令アドレスを受け、そのいずれかの命令アドレスを前記命令アドレスバスに供給する命令アドレス選択回路と、を含む集積回路装置に関する。
【００１７】
これにより、コプロセッサの演算処理結果に基づいた命令アドレスを例えばＣＰＵの動作クロックの１クロックでＣＰＵに供給することができる。さらに、ＣＰＵのフェッチ部にコプロセッサが生成した命令アドレスに対応する命令コードをフェッチさせることができる。
【００１８】
また、本実施の形態は、前記命令アドレスを生成するためのカウント値を出力するプログラムカウンタと、前記カウント値を前記コプロセッサに供給するためのカウント値供給線と、をさらに含み、前記プログラムカウンタから出力される前記カウント値は、前記カウント値供給線を介して前記コプロセッサに供給され、前記フェッチ部は、前記プログラムカウンタから出力される前記カウント値に基づいて前記命令アドレスを生成し、生成された前記命令アドレスを前記命令アドレス選択回路に供給するようにしてもよい。
【００１９】
これにより、コプロセッサは、ＣＰＵから供給されるカウント値に基づいて命令アドレスを生成することができ、例えばループ処理などの複雑な処理を高速にＣＰＵに処理させることができる。
【００２０】
また、本実施の形態は、前記コプロセッサから前記命令アドレス選択回路に命令アドレス選択信号を供給するための命令アドレス選択信号供給線をさらに含み、前記命令アドレス選択回路は、前記命令アドレス選択信号に基づいて、前記命令アドレス供給線を介して供給される命令アドレス及び前記フェッチ部から供給される命令アドレスうちのいずれかの命令アドレスを前記命令アドレスバスに供給するようにしてもよい。
【００２１】
これにより、コプロセッサ側で、命令アドレスバスに供給される命令アドレスをコプロセッサから供給された命令アドレス及びフェッチ部から供給された命令アドレスのいずれかに選択制御することができる。
【００２２】
また、本実施の形態は、前記メモリから前記ＣＰＵに命令コードを供給するための命令コードバスと、前記コプロセッサから出力される命令コードを前記ＣＰＵに供給するための命令コード供給線と、をさらに含み、前記ＣＰＵは、前記命令コード供給線を介して供給される前記命令コードと前記命令コードバスを介して入力される前記命令コードを受け、そのいずれかの命令コードを前記フェッチ部に供給する命令コード選択回路を含むようにしてもよい。
【００２３】
また、本実施の形態は、命令コードに基づいて所与の処理を実行するＣＰＵを含む集積回路装置であって、コプロセッサから出力される第１、第２のレジスタデータを前記ＣＰＵに供給するための第１、第２のレジスタデータ供給線を含み、前記ＣＰＵは、複数のレジスタを含むレジスタファイルと、前記第１のレジスタデータ供給線を介して供給される前記第１のレジスタデータと前記ＣＰＵの内部のデータを受け、そのいずれかのデータを前記レジスタファイルに供給する第１のレジスタデータ選択回路と、を含み、前記コプロセッサから出力される前記第２のレジスタデータは、前記第２のレジスタデータ供給線を介して前記レジスタファイルに供給される集積回路装置に関する。
【００２４】
これにより、コプロセッサの複数のレジスタデータをＣＰＵの動作クロックの例えば１クロックでＣＰＵのレジスタファイルに供給することができる。
【００２５】
また、本実施の形態は、前記コプロセッサから前記第１のレジスタデータ選択回路に第１のレジスタデータ選択信号を供給するための第１のレジスタデータ選択信号供給線をさらに含み、前記第１のレジスタデータ選択回路は、前記第１のレジスタデータ選択信号に基づいて、前記第１のレジスタデータ及び前記ＣＰＵの内部のデータのうちのいずれかのデータを前記レジスタファイルに供給するようにしてもよい。
【００２６】
これにより、コプロセッサ側で、レジスタファイルに供給されるデータをコプロセッサから供給された第１のレジスタデータ及びＣＰＵの内部のデータのうちのいずれかに選択制御することができる。
【００２７】
また、本実施の形態は、前記レジスタファイルの前記複数のレジスタのうち、前記コプロセッサが指定するレジスタを示すコプロセッサ指定レジスタ番号を、前記コプロセッサから前記レジスタファイルに供給するためのレジスタ番号供給線をさらに含み、前記第１のレジスタデータ選択信号は前記レジスタファイルに供給され、前記レジスタファイルは、前記コプロセッサから供給された前記コプロセッサ指定レジスタ番号と、前記ＣＰＵの内部で指定される内部指定レジスタ番号とを受け、前記第１のレジスタデータ選択信号に基づいて前記コプロセッサ指定レジスタ番号及び前記内部指定レジスタ番号のいずれかを選択出力するレジスタ番号選択回路を含み、前記レジスタ番号選択回路から選択出力されたレジスタ番号に基づいて前記複数のレジスタの少なくとも一つが書き込み可能な状態に設定されるようにしてもよい。
【００２８】
これにより、コプロセッサ側で、レジスタファイルに供給されるデータを格納するレジスタの番号を、コプロセッサから供給されたコプロセッサ指定レジスタ番号及びＣＰＵの内部指定番号のうちのいずれかに選択制御することができる。
【００２９】
また、本実施の形態では、前記ＣＰＵは、前記第２のレジスタデータ供給線を介して供給される第２のレジスタデータを第１の入力とし、前記第１のレジスタデータ選択回路から供給されるデータを第２の入力とし、前記第１、第２の入力のいずれかを前記複数のレジスタの少なくとも一つに供給する第２のレジスタデータ選択回路を含むようにしてもよい。
【００３０】
これにより、コプロセッサから供給された第２のレジスタデータ及び第１のレジスタデータ選択回路から供給されるデータのうちのいずれかを選択してレジスタファイルに供給することができる。
【００３１】
また、本実施の形態は、前記コプロセッサから前記第２のレジスタデータ選択回路に第２のレジスタデータ選択信号を供給するための第２のレジスタデータ選択信号供給線をさらに含み、前記第２のレジスタデータ選択回路は、前記第２のレジスタデータ選択信号に基づいて、前記第２のレジスタデータ選択回路の前記第１、第２の入力のいずれかを前記複数のレジスタの少なくとも一つに供給するようにしてもよい。
【００３２】
これにより、コプロセッサ側で、レジスタファイルに供給されるデータをコプロセッサから供給された第２のレジスタデータ及び第１のレジスタデータ選択回路から供給されるデータのうちのいずれかに選択制御することができる。
【００３３】
また、本実施の形態は、命令コードに基づいて所与の処理を実行するＣＰＵを含む集積回路装置であって、コプロセッサから出力されるデータアドレスを前記ＣＰＵに供給するためのデータアドレス供給線を含み、前記ＣＰＵは、データアドレスバスを介してメモリにデータアドレスを供給し、ライトデータバスを介してライトデータを供給することで、前記メモリへデータの書き込みを行うロードストア部と、前記データアドレス供給線を介して供給されるデータアドレスと前記ロードストア部から出力されるデータアドレスを受け、そのいずれかのデータアドレスを前記データアドレスバスに供給するデータアドレス選択回路と、を含む集積回路装置に関する。
【００３４】
これにより、コプロセッサで生成されたデータアドレスをＣＰＵの動作クロックの例えば１クロックでデータアドレスバスに供給することができる。
【００３５】
また、本実施の形態は、前記コプロセッサから前記データアドレス選択回路にデータアドレス選択信号を供給するためのデータアドレス選択信号供給線をさらに含み、前記データアドレス選択回路は、前記データアドレス選択信号に基づいて、前記データアドレス供給線を介して供給されるデータアドレス及び前記ロードストア部から出力されるデータアドレスのうちのいずれかのデータアドレスを前記データアドレスバスに供給するようにしてもよい。
【００３６】
これにより、コプロセッサ側で、データアドレスバスに供給されるデータアドレスを、コプロセッサから供給されたデータアドレス及びロードストア部から供給されるデータアドレスのうちのいずれかに選択制御することができる。
【００３７】
また、本実施の形態は、命令コードに基づいて所与の処理を実行するＣＰＵを含む集積回路装置であって、前記コプロセッサから出力されるライトデータを前記ＣＰＵに供給するためのライトデータ供給線を含み、前記ＣＰＵは、データアドレスバスを介してメモリにデータアドレスを供給し、ライトデータバスを介してライトデータを供給することで、前記メモリへデータの書き込みを行うロードストア部と、前記ライトデータ供給線を介して供給されるライトデータと前記ロードストア部から出力されるライトデータを受け、そのいずれかのライトデータを前記ライトデータバスに供給するライトデータ選択回路と、を含む集積回路装置に関する。
【００３８】
これにより、コプロセッサで生成されたライトデータをＣＰＵの動作クロックの例えば１クロックでライトデータバスに供給することができる。
【００３９】
また、本実施の形態は、前記コプロセッサから前記ライトデータ選択回路にライトデータ選択信号を供給するためのライトデータ選択信号供給線をさらに含み、前記ライトデータ選択回路は、前記ライトデータ選択信号に基づいて、前記ライトデータ供給線を介して供給されるライトデータ及び前記ロードストア部から出力されるライトデータのうちのいずれかのライトデータを前記ライトデータバスに供給するようにしてもよい。
【００４０】
これにより、コプロセッサ側で、ライトデータバスに供給されるライトデータを、コプロセッサから供給されたライトデータ及びロードストア部から供給されるライトデータのうちのいずれかに選択制御することができる。
【００４１】
また、本実施の形態は、命令コードに基づいて所与の処理を実行するＣＰＵを含む集積回路装置であって、前記コプロセッサから出力されるリードデータを前記ＣＰＵに供給するためのリードデータ供給線を含み、前記ＣＰＵは、データアドレスバスを介してメモリにデータアドレスを供給し、リードデータバスを介してリードデータを受け取ることで、前記メモリからデータの読み出しを行うロードストア部と、前記リードデータ供給線を介して供給される前記リードデータと前記リードデータバスから供給されるリードデータを受け、そのいずれかのリードデータを前記ロードストア部に供給するリードデータ選択回路と、を含む集積回路装置に関する。
【００４２】
これにより、コプロセッサで生成されたリードデータをＣＰＵの動作クロックの例えば１クロックでロードストア部に供給することができる。
【００４３】
また、本実施の形態は、前記コプロセッサからリードデータ選択回路にリードデータ選択信号を供給するためのリードデータ選択信号供給線をさらに含み、前記リードデータ選択回路は、前記リードデータ選択信号に基づいて、前記コプロセッサリードデータ及び前記ＣＰＵリードデータのうちのいずれかのリードデータを前記ロードストア部に供給するようにしてもよい。
【００４４】
これにより、コプロセッサ側で、ロードストア部に供給されるリードデータを、コプロセッサから供給されたリードデータ及びリードデータバスから供給されるリードデータのうちのいずれかに選択制御することができる。また、コプロセッサ側で、データアドレスバスに供給されるデータアドレスを、コプロセッサから供給されたデータアドレス及びロードストア部から供給されるデータアドレスのうちのいずれかに選択制御することができる。
【００４５】
また、本実施の形態では、前記ＣＰＵは、前記命令コードに基づく演算処理を行うＡＬＵを含み、前記ＣＰＵは、前記ＡＬＵの演算処理結果に基づく第１のフラグデータを前記コプロセッサに供給するための第１のフラグデータ供給線と、前記コプロセッサの演算処理結果に基づく第２のフラグデータを前記ＡＬＵに供給するための第２のフラグデータ供給線と、を含み、前記ＡＬＵは、前記第１又は第２のフラグデータを格納するフラグレジスタと、前記第１及び第２のフラグデータ供給線から前記第１及び第２のフラグデータを受け、前記第１及び第２のフラグデータのいずれかを前記フラグレジスタに供給するフラグデータ選択回路と、を含むようにしてもよい。
【００４６】
これにより、コプロセッサは、ＣＰＵから供給される第１のフラグデータに基づいた処理を行うことができる。また、ＣＰＵはコプロセッサの処理結果に基づく第２のフラグデータに基づいた処理を行うことができる。また、集積回路装置は、第１のフラグデータに基づいた飽和処理を高速に行うことができる。
【００４７】
また、本実施の形態では、前記ＣＰＵは、フラグデータ選択信号を前記コプロセッサから前記ＡＬＵに供給するためのフラグデータ選択信号供給線をさらに含み、前記ＡＬＵの前記フラグデータ選択回路は、前記フラグデータ選択信号供給線を介して供給される前記フラグデータ選択信号に基づいて、前記第１及び第２のフラグデータのいずれかを前記フラグレジスタに選択出力するようにしてもよい。
【００４８】
これにより、コプロセッサ側で、フラグレジスタに供給されるフラグデータを、コプロセッサから供給された第２のフラグデータ及びＡＬＵから供給される第１のフラグデータのうちのいずれかに選択制御することができる。
【００４９】
以下、本発明の一実施形態について、図面を参照して説明する。なお、以下に説明する実施の形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また以下で説明される構成のすべてが本発明の必須構成要件であるとは限らない。なお、以下の図において同符号のものは同様の意味を表す。
【００５０】
１．集積回路装置
図１は、本実施形態に係る集積回路装置１０００の構成例である。集積回路装置１０００はＣＰＵ（Central-Processing-Unit）１０と、メモリ２０と、コプロセッサ３０を含
むが、これに限定されない。例えば、集積回路装置１０００はメモリ２０やコプロセッサ３０を省略する構成でもよい。ＣＰＵ１０は、コプロセッサ３０と種々の情報をやりとりする。メモリ２０には例えば、ＣＰＵ１０が処理する命令コード２２やデータ２４が格納されている。
【００５１】
メモリ２０は、例えば命令アドレスバス５０を介してＣＰＵ１０側から命令アドレスを受け、その命令アドレスに従って、メモリ２０に格納されている命令コードを例えば命令データバス６０を介してＣＰＵ１０に出力する。また、メモリ２０は、例えばデータアドレスバス７０を介してＣＰＵ１０側からデータアドレスを受け、そのデータアドレスに従って、メモリ２０に格納されているデータ２４を例えばデータバス８０を介してＣＰＵ１０に出力する。なお、データアドレスバス７０を介して命令アドレスをメモリ２０に供給するようにしてもよいし、データバス８０を介して命令コードをＣＰＵ１０に供給するようにしてもよい。ＣＰＵ１０は、上記のようにメモリ２０から取得した情報に基づいて様々な処理を行うことができる。また、メモリ２０は、ＣＰＵ１０側から例えばデータバス８０を介して出力されるデータを格納することも可能である。
【００５２】
一方、コプロセッサ３０は、ＣＰＵ１０の苦手な演算などを高速に処理できる演算処理部３２を含む。即ち、ＣＰＵ１０は、処理内容に応じてコプロセッサ３０を用いることにより、効率的な処理を行うことができる。
【００５３】
図２は、本実施形態に係るＣＰＵ１０の構成例である。なお、図２ではＣＰＵ１０の構成の説明の簡略化のため、ＣＰＵ１０とコプロセッサ３０との接続が一部省略されている。ＣＰＵ１０は、命令フェッチを行うフェッチ部１００と、直値（即値ともいう）を生成する直値生成部２００と、複数のレジスタを含むレジスタファイル３００とを含む。さらに、ＣＰＵ１０は、演算処理を行うＡＬＵ（Arithmetic-and-Logic-Unit）４００と、データのリード又はライトを行うロードストア部５００と、フェッチ部１００がフェッチした命令をデコード制御するデコード制御部６００とを含む。
【００５４】
フェッチ部１００は、例えばメモリ２０に格納されている命令コード２２をフェッチするが、これに限定されない。また、フェッチ部１００はカウント値ＰＣを出力するプログラムカウンタ１１０を含み、命令フェッチを行う場合、プログラムカウンタ１１０から出力されるカウント値に基づく命令アドレスを例えばメモリ２０に出力する。フェッチ部１００は、命令フェッチを行う場合、例えばプログラムカウンタ１１０から出力される値を命令アドレスとして命令アドレスバス５０を介してメモリ２０に出力するが、これに限定されない。フェッチ部１００は、命令フェッチを行う際に、例えばカウント値を命令アドレスとして出力した後にプログラムカウンタ１１０のカウント値をインクリメントするようにしてもよいし、プログラムカウンタ１１０のカウント値がインクリメントされた値を命令アドレスとして出力するようにしてもよい。
【００５５】
また、フェッチ部１００は、フェッチした命令コード２２をデコード制御部６００に出力する。また、図２には省略されているが、フェッチ部１００のプログラムカウンタ１１０にはカウント値供給線ＰＣＣ（例えば図３参照）の一端が接続されている。プログラムカウンタ１１０は、このカウント値供給線ＰＣＣを介してコプロセッサ３０と接続することができる。この場合、フェッチ部１００のプログラムカウンタ１１０は、カウント値供給線ＰＣＣを介して、カウント値ＰＣをコプロセッサ３０に供給することができる。なお、フェッチ部１００は、例えばデコード制御部６００からの制御信号ＣＳ１に基づいて次の命令フェッチを行う。
【００５６】
直値生成部２００は、命令コード２２に直値が含まれている場合、デコード制御部６００から出力される制御信号ＣＳ２に基づいて例えば３２ビットの直値データを生成する。直値生成部２００によって生成された直値データは、マルチプレクサ（ＭＵＸ）Ｍ１を介してＡＬＵ４００及びロードストア部５００に供給される。
【００５７】
レジスタファイル３００は、複数のレジスタを含み、例えば１６個のレジスタＲ０〜Ｒ１５を含む。各レジスタＲ０〜Ｒ１５は例えば３２ビットのレジスタであるが、これに限定されない。レジスタファイル３００は、例えばデコード制御部６００から出力される制御信号ＣＳ３に基づいて、各レジスタＲ０〜Ｒ１５から任意のレジスタを選択し、そのレジスタに格納されている値を出力することができる。
【００５８】
レジスタファイル３００の出力ＲＱ１は例えばマルチプレクサＭ１に接続され、出力ＲＱ１から出力される値はマルチプレクサＭ１を介してＡＬＵ４００及びロードストア部５００に供給される。
【００５９】
また、レジスタファイル３００の出力ＲＱ２は、例えばＡＬＵ４００及びロードストア部５００に接続される。出力ＲＱ２からは、制御信号ＣＳ３に基づいて選択されたレジスタに格納されている値が出力される。また、レジスタファイル３００の各レジスタＲ０〜Ｒ１５のうち、少なくとも一つを固定レジスタに設定することができる。
【００６０】
ＡＬＵ４００は、例えば第１のＡＬＵ入力ＡＩＮ１及び第２のＡＬＵ入力ＡＩＮ２を含み、第１のＡＬＵ入力ＡＩＮ１には例えば第２のレジスタ選択回路３２０の出力ＲＱ２から出力される値が入力され、第２のＡＬＵ入力ＡＩＮ２には例えばマルチプレクサＭ１の出力が入力される。ＡＬＵ４００は、各入力ＡＩＮ１、ＡＩＮ２に入力された値に対して、例えばデコード制御部６００から出力される制御信号ＣＳ４に基づく演算処理を行い、その結果をＡＬＵ出力ＡＱから出力する。ＡＬＵ出力ＡＱは例えばマルチプレクサＭ２に接続される。
【００６１】
また、ＡＬＵ４００はフラグレジスタ４１０を含み、フラグレジスタ４１０には例えばキャリーフラグＣ（以下、Ｃフラグとも言う）、オーバーフローフラグＶ、ゼロフラグＺ及びネガティブフラグＮのフラグデータが格納される。また図２には省略されているが、フラグレジスタ４１０の出力には、例えばフラグレジスタ供給線ＦＬＣ１（広義には、第１のフラグレジスタ供給線）の一端が接続されている（図３参照）。ＡＬＵ４００のフラグレジスタ４１０は、このフラグデータ供給線ＦＬＣ１を介してコプロセッサ３０と接続することができる。この場合、フラグレジスタ４１０に格納されている各フラグデータＣ、Ｖ、Ｚ、Ｎをコプロセッサ３０に供給することができる。
【００６２】
ロードストア部５００は、マルチプレクサＭ１から出力された値やレジスタファイル３００の出力ＲＱ２から出力された値を受け、デコード制御部６００から出力される制御信号ＣＳ５に基づいてメモリ２０に格納（ライト）する。また、ロードストア部５００は、制御信号ＣＳ５に基づいてメモリ２０からデータの読み出し（リード）を行い、読み出したデータをロードデータ出力ＬＤＤから例えばマルチプレクサＭ２に出力する。
【００６３】
デコード制御部６００は、フェッチ部１００から例えば命令コード２２を受け、命令コード２２をデコードし、その結果に基づく制御信号を生成して各制御信号ＣＳ１〜ＣＳ５を出力する。また、デコード制御部６００は、各マルチプレクサＭ１、Ｍ２を制御する信号（図示せず）を生成することもできる。
【００６４】
また、コプロセッサ３０の演算結果は例えば第１のレジスタデータ供給線ＲＤＣ１を介してＣＰＵ１０に供給されるが、これに限定されない。また、コプロセッサ３０は、命令コード入力線ＩＲＣを介して例えばフェッチ部１００から命令コード２２を供給されるが、これに限定されない。
【００６５】
なお、上記の構成はＣＰＵ１０の構成の一例であり、ＣＰＵ１０は上記の構成に限定されることはない。
【００６６】
２．各部との接続関係
図３は、ＣＰＵ１０とコプロセッサ３０の接続関係を説明する図である。
【００６７】
集積回路装置１０００は、コプロセッサ３０側で生成した命令アドレスＣＩＡをＣＰＵ１０に供給するための命令アドレス供給線ＣＩＡＣと、コプロセッサ３０側で生成した命令コードＩＲ２をＣＰＵ１０に供給するための命令コード供給線ＣＩＣＣを含む。また、集積回路装置１０００は、コプロセッサ３０から供給された命令アドレスＣＩＡをＣＰＵ１０に供給するための命令アドレス選択信号供給線ＣＳＣ１１と、コプロセッサ３０から供給された命令コードＩＲ２をＣＰＵ１０に供給するための命令アドレス選択信号供給線ＣＳＣ１２を含む。
【００６８】
また、集積回路装置１０００は、コプロセッサ３０の第１、第２のレジスタデータＲＤＴ１、ＲＤＴ２をＣＰＵ１０に供給するための第１、第２のレジスタデータ供給線ＲＤＣ１、ＲＤＣ２を含む。また、集積回路装置１０００は、第１のレジスタデータ選択信号ＣＳ３１をＣＰＵ１０に供給するための第１のレジスタデータ選択信号供給線ＣＳＣ３１と、第２のレジスタデータ選択信号ＣＳ３２をＣＰＵ１０に供給するための第２のレジスタデータ選択信号供給線ＣＳＣ３２含む。
【００６９】
なお、第１のレジスタデータ選択信号ＣＳ３１は、例えば、コプロセッサ３０の第１のレジスタデータＲＤＴ１及びＣＰＵ１０の内部のデータのいずれかを選択するための信号であり、例えば、第２のレジスタデータ選択信号ＣＳ３２は、コプロセッサ３０の第２のレジスタデータＲＤＴ２及びＣＰＵ１０の内部のデータのいずれかを選択するための信号である。
【００７０】
また、集積回路装置１０００は、コプロセッサ３０が指定するレジスタ番号ＲＮＭ（広義にはコプロセッサ指定レジスタ番号）をＣＰＵ１０に供給するためのレジスタ番号供給線ＲＮＣを含む。レジスタ番号ＲＮＭは、例えば第１のレジスタデータＲＤＴ１の格納先のレジスタ番号を示す。
【００７１】
また、集積回路装置１０００は、コプロセッサ３０側の演算処理結果に基づくフラグデータＦＬＤ２（広義には第２のフラグデータ）をＣＰＵ１０に供給するための第２のフラグデータ供給線ＦＬＣ２を含む。また、集積回路装置１０００は、ＣＰＵ１０のＡＬＵ４００側の演算処理結果に基づくフラグデータＦＬＤ１及びコプロセッサ３０側の演算処理結果に基づくフラグデータＦＬＤ２のいずれかを選択するためのフラグデータ選択信号ＣＳ４１をＣＰＵ１０に供給するためのフラグデータ選択信号供給線ＣＳＣ４１を含む。
【００７２】
また、集積回路装置１０００は、含む。また、集積回路装置１０００は、コプロセッサ３０側で生成したデータアドレスＤＴＡＤをＣＰＵ１０に供給するためのデータアドレス供給線ＤＡＣを含む。また、集積回路装置１０００は、コプロセッサ３０側で生成したライトデータＷＤＡ１をＣＰＵ１０に供給するためのライトデータ供給線ＷＤＡＣ、コプロセッサ３０側で生成したリードデータＲＤＡ１をＣＰＵ１０に供給するためのリードデータ供給線ＲＤＡＣを含む。
【００７３】
また、集積回路装置１０００は、コプロセッサ３０から供給されたデータアドレスＤＴＡＤ及びＣＰＵ１０内部で生成されたデータアドレスＣＤＡＤのいずれかを選択するためのデータアドレス選択信号ＣＳ５１をＣＰＵ１０に供給するためのデータアドレス選択信号供給線ＣＳＣ５１を含む。また、集積回路装置１０００は、コプロセッサ３０から供給されたライトデータＷＤＡ１及びＣＰＵ１０内部で生成されたライトデータＷＤＡ２のいずれかを選択するためのライトデータ選択信号ＣＳ５２をＣＰＵ１０に供給するためのライトデータ選択信号供給線ＣＳＣ５２を含む。また、集積回路装置１０００は、コプロセッサ３０から供給されたリードデータＲＤＡ１及び例えばデータバス８０を介して供給されるリードデータＲＤＡ２のいずれかを選択するためのリードデータ選択信号ＣＳ５３をＣＰＵ１０に供給するためのリードデータ選択信号供給線ＣＳＣ５３を含む。
【００７４】
また、命令コード入力線ＩＲＣの一端がフェッチ部１００に接続され、命令コード入力線ＩＲＣの他端がコプロセッサ３０に接続された場合、コプロセッサ３０は、フェッチ部１００から出力される命令コード２２（ＩＲ１）を受けることができる。これにより、ＣＰＵ１０の動作クロックの１クロックで、コプロセッサ３０はフェッチ部１００から出力される命令コード２２を取得することができる。なお、命令コード２２は３２ビットで構成されるがこれに限定されない。
【００７５】
また、カウント値供給線ＰＣＣの他端がコプロセッサ３０に接続された場合、コプロセッサ３０は、プログラムカウンタ１１０から出力されるカウント値を受けることができる。これにより、ＣＰＵ１０の動作クロックの１クロックで、コプロセッサ３０はプログラムカウンタ１１０から出力されるカウント値を取得することができる。
【００７６】
図４は、ＣＰＵ１０のフェッチ部１００とコプロセッサ３０との接続を示すブロック図である。
【００７７】
ＣＰＵ１０は、フェッチ部１００と、命令コード選択回路ＭＵＸ＿ＩＲＣと、命令アドレス選択回路ＭＵＸ＿ＡＤＤとを含むが、これに限定されない。命令コード選択回路ＭＵＸ＿ＩＲＣ又は、命令アドレス選択回路ＭＵＸ＿ＡＤＤが省略されてもよい。フェッチ部１００は、プログラムカウンタ１１０と、命令コードレジスタ１２０と、演算器１３０とを含むが、これに限定されない。演算器１３０は、加算器でもよいし減算器でもよい。
【００７８】
ＣＰＵ１０及びコプロセッサ３０はクロックＣＬＫに同期して動作するが、これに限定されない。
【００７９】
ＣＰＵ１０側では、フェッチ部１００のプログラムカウンタ１１０からカウント値ＰＣが出力される。演算器１３０は、出力されたカウント値ＰＣを受け、カウント値ＰＣに対して例えば４の値を加算し、その結果を出力する。命令アドレス選択回路ＭＵＸ＿ＡＤＤの入力の一方には、演算器１３０から出力された値が入力され、命令アドレス選択回路ＭＵＸ＿ＡＤＤの入力の他方には、コプロセッサ３０から命令アドレス供給線ＣＩＡＣを介して命令アドレスＣＩＡが入力される。
【００８０】
命令アドレス選択回路ＭＵＸ＿ＡＤＤは、コプロセッサ３０から命令アドレス選択信号供給線ＣＳＣ１１を介して供給される命令アドレス選択信号ＣＳ１１に基づいて、演算器１３０から出力される値及び命令アドレスＣＩＡが入力のいずれかを選択して、命令アドレスバス５０に供給する。即ち、命令アドレスバス５０に対して、コプロセッサ３０から供給された命令アドレスＣＩＡ又はフェッチ部１００から出力された値のどちらかを供給することができる。これにより、コプロセッサ３０側で、ＣＰＵ１０に供給される命令コード２２を変更する制御が可能となる。
【００８１】
さらに、命令アドレス選択回路ＭＵＸ＿ＡＤＤの出力はプログラムカウンタ１１０に入力される。プログラムカウンタ１１０は、命令アドレス選択回路ＭＵＸ＿ＡＤＤから出力される値を、例えばクロックＣＬＫに基づいて格納する。また、プログラムカウンタ１１０から出力されるカウント値ＰＣは、カウント値供給線ＰＣＣを介してコプロセッサ３０に供給される。
【００８２】
命令コード選択回路ＭＵＸ＿ＩＲＣの入力の一方には、命令アドレスバス５０に供給された命令アドレスに基づいた命令コード２２が例えば命令コードバス６０入力される。命令コード選択回路ＭＵＸ＿ＩＲＣの入力の他方には、コプロセッサ３０から命令コード供給線ＣＩＣＣを介して供給される命令コードＩＲ２が入力される。命令コード選択回路ＭＵＸ＿ＩＲＣは、コプロセッサ３０から命令コード選択信号供給線ＣＳＣ１２を介して供給される命令コード選択信号ＣＳ１２に基づいて、命令コード２２及び命令コードＩＲ２のいずれかを選択し、フェッチ部１００の命令コードレジスタ１２０に供給する。
【００８３】
即ち、コプロセッサ３０側で生成した命令コードＩＲ２をフェッチ部１００の命令コードレジスタ１２０に格納することができる。これにより、コプロセッサ３０側で、ＣＰＵ１０に対する処理を指示することができる。また、命令コードレジスタ１２０に格納されている命令コードは、命令コード入力線ＩＲＣを介してコプロセッサ３０に供給される。
【００８４】
なお、コプロセッサ３０は、命令アドレスＣＩＡ、命令コードＩＲ２、命令アドレス選択信号ＣＳ１１及び命令アドレス選択信号ＣＳ１２を、ＣＰＵ１０の動作クロックの１クロックでＣＰＵ１０に供給することができる。また、命令アドレス選択信号ＣＳ１１や命令アドレス選択信号ＣＳ１２は、ＣＰＵ１０内部で生成されてもよい。
【００８５】
図５は、ＣＰＵ１０のレジスタファイル３００とコプロセッサ３０との接続を示すブロック図である。
【００８６】
ＣＰＵ１０は、レジスタファイル３００と、レジスタデータ選択回路ＭＵＸ＿ＲＧ１（広義には第１のレジスタデータ選択回路）と、レジスタ番号選択回路ＭＵＸ＿ＲＮＭを含むが、これに限定されない。例えばレジスタデータ選択回路ＭＵＸ＿ＲＧ１が省略されてもよい。レジスタファイル３００は、レジスタデータ選択回路ＭＵＸ＿ＲＧ２（広義には第２のレジスタデータ選択回路）と、複数のレジスタＲ０〜Ｒ１５と、レジスタ選択部３１０と、論理回路３２０とを含むが、これに限定されない。例えば、図５では複数のレジスタＲ０〜Ｒ１５が図示されているが、レジスタの数は例えば３２個でもよいし、任意の数に設定してよい。また、例えば、レジスタデータ選択回路ＭＵＸ＿ＲＧ２を省略してもよい。なお、図５のレジスタデータ選択回路ＭＵＸ＿ＲＧ１は、図２のマルチプレクサＭ２に相当する。
【００８７】
レジスタデータ選択回路ＭＵＸ＿ＲＧ１の入力の一方には、コプロセッサ３０から第１のレジスタデータ供給線ＲＤＣ１を介して第１のレジスタデータＲＤＴ１が入力される。レジスタデータ選択回路ＭＵＸ＿ＲＧ１の入力の他方には、ＣＰＵ１０の内部データＩＤＴが入力される。なお、ＣＰＵ１０の内部データＩＤＴは、例えば、ＡＬＵ４００の出力データや、ロードストア部５００の出力ＬＤＤから出力されるデータに相当するが、これに限定されない。
【００８８】
また、第１のレジスタデータ選択信号ＣＳ３１が第１のレジスタデータ選択信号供給線ＣＳＣ３１を介してＣＰＵ１０に供給される。レジスタデータ選択回路ＭＵＸ＿ＲＧ１は、この第１のレジスタデータ選択信号ＣＳ３１に基づいて、ＣＰＵ１０の内部データＩＤＴ及びコプロセッサ３０からの第１のレジスタデータＲＤＴ１のいずれかをレジスタファイル３００の複数のレジスタＲ０〜Ｒ１５の少なくとも一つに供給する。また、例えばレジスタＲ１５とレジスタデータ選択回路ＭＵＸ＿ＲＧ１との間には、レジスタデータ選択回路ＭＵＸ＿ＲＧ２が設けられているが、これに限定されない。例えば他のレジスタＲ０〜Ｒ１４のいずれかとレジスタデータ選択回路ＭＵＸ＿ＲＧ１との間にレジスタデータ選択回路ＭＵＸ＿ＲＧ２を設けるようにしてもよいし、複数のレジスタデータ選択回路ＭＵＸ＿ＲＧ２を設けるようにしてもよい。
【００８９】
レジスタデータ選択回路ＭＵＸ＿ＲＧ２は、例えば、レジスタデータ選択回路ＭＵＸ＿ＲＧ１の出力と、コプロセッサ３０から第２のレジスタデータ供給線ＲＤＣ２を介して供給される第２のレジスタデータＲＤＴ２とを受け、そのいずれかを選択して例えばレジスタＲ１５に供給する。なお、レジスタデータ選択回路ＭＵＸ＿ＲＧ２は、コプロセッサ３０から第２のレジスタデータ選択信号供給線ＣＳＣ３２を介して供給される第２のレジスタデータ選択信号ＣＳ３２に基づいて、レジスタデータ選択回路ＭＵＸ＿ＲＧ１の出力及びレジスタデータＲＤＴ２のいずれかを選択する。
【００９０】
なお、レジスタデータ選択信号ＣＳ３１及びＣＳ３２は、ＣＰＵ１０の内部で生成されるようにしてもよい。
【００９１】
また、コプロセッサ３０からレジスタ番号供給線ＲＮＣを介して、コプロセッサ３０が指定するレジスタ番号ＲＮＭ（広義にはコプロセッサ指定レジスタ番号）がＣＰＵ１０に供給される。レジスタ番号ＲＮＭは、レジスタ番号選択回路ＭＵＸ＿ＲＮＭの入力の一方に供給される。レジスタ番号選択回路ＭＵＸ＿ＲＮＭの入力の他方には、ＣＰＵ１０の内部で指定されたレジスタ番号ＩＮＭ（広義には内部指定レジスタ番号）が供給される。レジスタ番号選択回路ＭＵＸ＿ＲＮＭは、例えばレジスタデータ選択信号ＣＳ３１に基づいてレジスタ番号ＲＮＭ及びＩＮＭのいずれかを選択して、レジスタファイル３００のレジスタ選択部３１０に供給する。
【００９２】
レジスタ選択部３１０は、レジスタ番号選択回路ＭＵＸ＿ＲＮＭから出力されるレジスタ番号に基づいて、ライトイネーブル信号線Ｗ０〜Ｗ１５のいずれかを選択し、選択されたライトイネーブル信号線にアクティブな信号（例えばハイレベルの信号）を供給する。図５では、例えばライトイネーブル信号線Ｗ０はレジスタＲ０に対応し、Ｗ１はレジスタＲ１に対応する。同様に、ライトイネーブル信号線Ｗ２〜Ｗ１５はレジスタＲ２〜Ｒ１５に対応する。各レジスタＲ０〜Ｒ１５は、ライトイネーブル信号線Ｗ０〜Ｗ１５に供給される信号がアクティブに設定されると、書き込み可能な状態に設定される。ここで、書き込み可能な状態とは、各レジスタＲ０〜Ｒ１５が、それぞれに供給されたデータを格納することができる状態を示す。
【００９３】
各レジスタＲ０〜Ｒ１５は、レジスタ選択回路ＭＵＸ＿ＲＧ１又はＭＵＸ＿ＲＧ２を介して供給されたレジスタデータを、ライトイネーブル信号線Ｗ０〜Ｗ１５に供給される信号に基づいて格納する。例えば、ライトイネーブル信号線Ｗ０にアクティブな信号が供給された場合、レジスタＲ０はレジスタ選択回路ＭＵＸ＿ＲＧ１を介して供給されたレジスタデータを格納する。
【００９４】
また、例えばレジスタデータ選択回路ＭＵＸ＿ＲＧ２が接続されているレジスタＲ１５には、論理回路３２０が接続されている。論理回路３２０には、ライトイネーブル信号線Ｗ１５及びレジスタデータ選択信号供給線ＣＳＣ３２が接続される。例えばライトイネーブル信号線Ｗ１５にアクティブな信号が供給された場合、レジスタＲ１５は書き込み可能な状態に設定される。これにより、レジスタＲ１５は、レジスタ選択回路ＭＵＸ＿ＲＧ２を介して供給されるレジスタデータを格納する。また、レジスタデータ選択信号供給線ＣＳＣ３２を介して供給されるレジスタデータ選択信号ＣＳ３２がアクティブに設定された場合にも、レジスタＲ１５は書き込み可能な状態に設定される。即ち、レジスタ選択回路
ＭＵＸ＿ＲＧ２が接続されたレジスタＲ１５は、ライトイネーブル信号線Ｗ１５に供給される信号及びレジスタデータ選択信号ＣＳ３２の少なくとも一方がアクティブに設定されると、書き込み可能な状態に設定される。
【００９５】
図６は、ＣＰＵ１０のＡＬＵ４００とコプロセッサ３０との接続を示すブロック図である。ＡＬＵ４００は、フラグレジスタ４１０と、演算処理を行う演算処理部４２０と、フラグデータ選択回路ＭＵＸ＿ＦＬＧを含む。演算処理部４２０の演算結果に基づくフラグデータＦＬＤ１（広義には第１のフラグデータ）はフラグデータ供給線ＦＬＣ１（広義には第１のフラグデータ供給線）を介してコプロセッサ３０に供給される。
【００９６】
また、フラグデータ選択回路ＭＵＸ＿ＦＬＧには、フラグデータＦＬＤ１と、フラグデータ供給線ＦＬＣ２（広義には第２のフラグデータ供給線）を介して供給されるフラグデータＦＬＤ２（広義には第２のフラグデータ）が供給される。フラグデータ選択回路ＭＵＸ＿ＦＬＧは、フラグデータＦＬＤ１及びＦＬＤ２のいずれかを、コプロセッサ３０からフラグデータ選択信号供給線ＣＳＣ４１を介して供給されるフラグデータ選択信号ＣＳ４１に基づいて選択し、フラグレジスタ４１０に供給する。フラグレジスタ４１０は、フラグデータ選択回路ＭＵＸ＿ＦＬＧから出力される値を格納する。
【００９７】
なお、フラグデータ選択信号ＣＳ４１は、ＣＰＵ１０の内部で生成されてもよい。
【００９８】
図７は、ＣＰＵ１０のロードストア部５００とコプロセッサ３０との接続を示すブロック図である。ＣＰＵ１０はロードストア部５００と、データアドレス選択回路ＭＵＸ＿ＤＴと、ライトデータ選択回路ＭＵＸ＿ＷＤと、リードデータ選択回路ＭＵＸ＿ＲＤを含むが、これに限定されない。例えば、ライトデータ選択回路ＭＵＸ＿ＷＤ等が省略されてもよい。
【００９９】
コプロセッサ３０から、データの読み出し又は書き込みを行うためのデータアドレスＤＴＡＤが、データアドレス供給線ＤＡＣを介してＣＰＵ１０に供給される。また、コプロセッサ３０から、ライトデータＷＤＡ１がライトデータ供給線ＷＤＡＣを介してＣＰＵ１０に供給される。また、コプロセッサ３０から、リードデータＲＤＡ１がリードデータ供給線ＲＤＡＣを介してＣＰＵ１０に供給される。
【０１００】
ロードストア部５００は、コプロセッサ３０から供給されたデータアドレスＤＴＡＤと、ＣＰＵ１０の内部で生成されたデータアドレスＣＤＡＤとをデータアドレス選択回路ＭＵＸ＿ＤＴに供給する。また、ロードストア部５００は、コプロセッサ３０から供給されたライトデータＷＤＡ１と、ＣＰＵ１０の内部で生成されたライトデータＷＤＡ２とをライトデータ選択回路ＭＵＸ＿ＷＤに供給する。
【０１０１】
また、コプロセッサ３０から、データアドレス選択信号ＣＳ５１がデータアドレス選択信号供給線ＣＳＣ５１を介してＣＰＵ１０に供給される。また、コプロセッサ３０から、ライトデータ選択信号ＣＳ５２がライトデータ選択信号供給線ＣＳＣ５２を介してＣＰＵ１０に供給される。
【０１０２】
アドレス選択回路ＭＵＸ＿ＤＴは、コプロセッサ３０から供給されるデータアドレス選択信号ＣＳ５１に基づいて、データアドレスＤＴＡＤ及びＣＤＡＤのいずれかを選択してデータアドレスバス７０に供給する。ライトデータ選択回路ＭＵＸ＿ＷＤは、コプロセッサ３０から供給されるライトデータ選択信号ＣＳ５２に基づいて、ライトデータＷＤＡ１及びＷＤＡ２のいずれかを選択して、データバス８０が含むライトデータバス８２に供給する。
【０１０３】
また、コプロセッサ３０からのリードデータＲＤＡ１と、データバス８０が含むリードデータバス８４を介して供給されるリードデータＲＤＡ２が、リードデータ選択回路ＭＵＸ＿ＲＤに供給される。また、コプロセッサ３０から、リードデータ選択信号ＣＳ５２がリードデータ選択信号供給線ＣＳＣ５２を介してＣＰＵ１０に供給される。
【０１０４】
リードデータ選択回路ＭＵＸ＿ＲＤは、コプロセッサ３０から供給されるリードデータ選択信号ＣＳ５３に基づいて、リードデータＲＤＡ１及びＲＤＡ２のいずれかを選択してリードデータバス８２に供給する。
【０１０５】
コプロセッサ３０は、ＣＰＵ１０の動作クロックの１クロックで、データアドレス選択信号ＣＳ５１、ライトデータ選択信号ＣＳ５２及びリードデータ選択信号ＣＳ５３をＣＰＵ１０に供給することができる。また、データアドレス選択信号ＣＳ５１、ライトデータ選択信号ＣＳ５２及びリードデータ選択信号ＣＳ５３は、ＣＰＵ１０内部で生成されてもよい。
【０１０６】
このような構成により、コプロセッサ３０側で、ＣＰＵ１０が行うデータの読み出し又は書き込みに対するアドレスやデータの指定を行うことができる。
【０１０７】
なお、ＣＰＵ１０とコプロセッサ３０は、同じクロックＣＬＫに基づいて動作するが、これに限定されない。また、ＣＰＵ１０は、上述された構成要素のいずれかが省略されてもよい。
【０１０８】
３．命令定義と命令例
３．１．命令定義
図８は、命令コード２２の定義の一例を示す図である。命令コード２２は、例えば、コプロセッサイネーブルビットＣＥＮ、コプロセッサコードＣＣＤ、ＣＰＵオペコードＯＰＣＤを含む。コプロセッサイネーブルビットＣＥＮはコプロセッサ３０のイネーブル又はディセーブルを示し、コプロセッサコードＣＣＤはコプロセッサ３０に対する命令を示し、ＣＰＵオペコードＯＰＣＤはＣＰＵ１０のオペコードを示す。
【０１０９】
命令コード２２は、例えば３２ビット長で構成され、例えばＭＳＢ（例えば第３１ビット）に１ビットのコプロセッサイネーブルビットＣＥＮが設定され、例えば第３０ビット〜第２７ビットに４ビットのコプロセッサコードＣＣＤが設定され、例えば第２６ビット〜第２０ビットに７ビットのＣＰＵオペコードＯＰＣＤが設定される。コプロセッサイネーブルビットＣＥＮが１であればコプロセッサ３０の動作を例えばイネーブルに設定し、反対にコプロセッサイネーブルビットＣＥＮが０であればコプロセッサ３０の動作を例えばディセーブルに設定する。命令コード２２において、残りの第１９ビット〜ＬＳＢ（第０ビット）の２０ビットは、ＣＰＵオペコードＯＰＣＤによって適宜使用される。
【０１１０】
例えば、ＣＰＵオペコードＯＰＣＤに加算命令ａｄｄを設定した場合には、図８に示すように、第１９ビット〜第１６ビットの４ビット及び、第１５ビット〜第１２ビットの４ビットは例えばレジスタアドレスｓｒｃ１、ｓｒｃ２に用いられ、第１１ビット〜第０ビットの１２ビットが直値データｉｍｍ１２に用いられる。
【０１１１】
コプロセッサ３０は、コプロセッサコードＣＣＤに基づいて演算処理を行う。
【０１１２】
なお、上記の命令コード２２の構成例は、一例であり他の命令定義も可能である。
【０１１３】
３．２．ループ処理
次にコプロセッサ３０がループ処理を行う場合の一例を説明する。
【０１１４】
図９は、ループ処理を行うコプロセッサ３０の構成例である。コプロセッサ３０は、演算処理部３２を含む。演算処理部３２はカウント値エンド３２−１、比較器３２−２、制御部３２−３、回数カウンタ３２−４、減算器３２−５及びカウント値スタート３２−６を含むが、これに限定されない。例えば減算器３２−５は、加算器でもよい。また、カウント値エンド３２−１、カウント値スタート３２−６は、例えば所与の値が格納されたレジスタで構成される。例えば、カウント値エンド３２−１には、ループ処理の終了に対応する値が格納され、カウント値スタート３２−６には、ループ処理の開始に対応する値が格納される。
【０１１５】
演算処理部３２は、ＣＰＵ１０側からカウント値ＰＣを受け、比較器３２−２にてカウント値エンド３２−１に格納されている値とカウント値ＰＣとを比較する。比較器３２−２にてカウント値エンド３２−１に格納されている値とカウント値ＰＣが一致したと判定されると、制御部３２−３が回数カウンタ３２−４の出力値に基づいた命令アドレス選択信号ＣＳ１１をＣＰＵ１０側に出力する。具体的には、制御部３２−３は、回数カウンタ３２−４の出力値が０でない場合には、命令アドレス選択信号ＣＳ１１をアクティブ（例えばハイレベル）に設定し、コプロセッサ３０から出力されるカウント値スタート３２−６に格納されている値（命令アドレスＣＩＡ）をＣＰＵ１０側の命令アドレス選択回路ＭＵＸ＿ＡＤＤに選択出力させる信号に設定する。また、減算器３２−５に回数カウンタ３２−４に格納されている値の減算処理を行わせる。
【０１１６】
反対に、制御部３２−３は、回数カウンタ３２−４の出力値が０の場合には、減算器３２−５の減算処理を停止させ、命令アドレス選択信号ＣＳ１１を、ＣＰＵ１０側のフェッチ部１００から出力される命令アドレスを命令アドレス選択回路ＭＵＸ＿ＡＤＤに選択出力させる信号に設定する。
【０１１７】
命令アドレス選択回路ＭＵＸ＿ＡＤＤによって、カウント値スタート３２−６に格納されている値が命令アドレスとして選択されると、プログラムカウンタ１１０にその命令アドレスが格納される。ＣＰＵ１０側では、このプログラムカウンタ１１０に格納された値を例えばインクリメントしながら、それに対応する命令コード２２を順次に処理していく。そして、コプロセッサ３０側からの命令アドレス選択信号ＣＳ１１に基づいて、命令アドレス選択回路ＭＵＸ＿ＡＤＤは、出力する命令アドレスを切り替える。即ち、コプロセッサ３０側で１回のループ処理が終了したと判断した場合、命令アドレス選択回路ＭＵＸ＿ＡＤＤにカウント値スタート３９−６の出力を選択させる。これにより、命令アドレス選択回路ＭＵＸ＿ＡＤＤからカウント値スタート３２−６の値が出力され、プログラムカウンタ１１０にもカウント値スタート３２−６の値が格納される。このようにして、また、ループ処理が開始される。なお、ループ処理の回数は、回数カウンタ３２−４に設定されている値に基づいて行うことができる。
【０１１８】
図１０はループ処理の開始の状態をタイミングチャートである。この例では、ループ処理の開始アドレスとして例えば“１０”の値がカウント値スタート３２−６に格納され、ループ処理の終了アドレスとして例えば“１Ｃ”の値がカウント値エンド３２−１に格納されている。また、この例ではループ処理を例えば１０回行う構成を示し、回数カウンタ３２−４には例えば“９”の値が格納されている。
【０１１９】
Ａ１に示すタイミングで、“１０”の値がカウント値ＰＣとして、プログラムカウンタ１１０からコプロセッサ３０に供給される。この時、フェッチ部１００において、カウント値ＰＣが例えば“４”の値だけインクリメントされ、Ａ２に示すタイミングで命令アドレス選択回路ＭＵＸ＿ＡＤＤに“１４”の値が命令アドレスとしてフェッチ部１００から供給される。また、カウント値スタート３２−６にはループ処理の開始アドレスとして、例えば“１０”が格納されているため、命令アドレス選択回路ＭＵＸ＿ＡＤＤに命令アドレスＣＩＡとして“１０”の値が供給される。この時、命令アドレス選択信号ＣＳ１１はノンアクティブに設定されているため、命令アドレス選択回路ＭＵＸ＿ＡＤＤはフェッチ部１００からの命令アドレスを選択する。従って、命令アドレスバス５０には命アドレスとして“１４”の値が供給される。
【０１２０】
カウント値エンド３２−１に格納されている“１Ｃ”の値とカウント値ＰＣの値が一致するまで、上記の処理が繰り返される。この間、ＣＰＵ１０は、その時の命令アドレスに対応する命令コードに基づく処理を行うことができる。
【０１２１】
Ａ３に示すタイミングでカウント値ＰＣの値が“１Ｃ”になると、Ａ４に示すように比較器３２−２においてカウント値ＰＣとカウント値エンド３２−１に格納されている値とが一致判定される。これに基づいて、制御部３２−３は、回数カウンタ３２−４に格納されている値が“０”でないことから、命令アドレス選択信号ＣＳ１１をＡ５に示すようにアクティブに設定する。従って、命令アドレス選択回路ＭＵＸ＿ＡＤＤは命令アドレスＣＩＡを選択し、カウント値スタート３２−６に格納されている“１０”の値を命令アドレスバス５０に供給する。また、プログラムカウンタ１１０は、命令アドレス選択回路ＭＵＸ＿ＡＤＤから出力される“１０”の値をＡ６に示すタイミングで格納する。
【０１２２】
このようにして、１回のループ処理が完了して、ループ処理の開始アドレスが命令ドレスとして設定され、ループ処理が開始される。
【０１２３】
図１１は、各命令アドレスに対応する命令コードの一例を示す。例えば、コプロセッサ３０のカウント値エンド３２−１、カウント値スタート３２−６をそれぞれ“１Ｃ”の値、“１０”の値に設定することで、図１１に示すような、例えばｏｄｄ命令、ｓｈｉｆｔ命令、ｓｕｂ命令、ｓｈｉｆｔ命令を繰り返し行うループ処理を高速に行うことができる。図１０のＡ６に示すように、ＣＰＵ１０に対する命令アドレスが、ループ処理の終了アドレス“１Ｃ”から次のループ処理の開始アドレス“１０”に設定されるまでの間隔は、ＣＰＵ１０の動作クロックＣＬＫを基準に０クロックである。即ち、本実施形態では、例えば図１１に示すようなループ処理において、ループ処理の終了を判断し、その判断結果に基づいて分岐する処理にクロックＣＬＫを基準とする所定の時間を必要としない。このため、ループ処理を高速に行うことができる。
【０１２４】
図１２はループ処理の開始の状態をタイミングチャートである。Ａ７に示すタイミングでカウント値ＰＣの値が“１Ｃ”になると、Ａ８に示すように比較器３２−２においてカウント値ＰＣとカウント値エンド３２−１に格納されている値とが一致判定される。これに基づいて、制御部３２−３は命令アドレス選択信号ＣＳ１１を設定する。この時、制御部３２−３は、回数カウンタ３２−４に格納されている値が“０”であることから、命令アドレス選択信号ＣＳ１１をＡ９に示すアクティブな信号には設定せず、ノンアクティブの状態に設定する。従って、命令アドレス選択回路ＭＵＸ＿ＡＤＤは命令アドレスＣＩＡを選択せず、フェッチ部１００から供給される命令アドレスを選択する。この時のカウント値ＰＣは“１Ｃ”の値であるため、フェッチ部１００は、命令アドレスとして“４”の値がインクリメントされた“２０”の値を命令アドレス選択回路ＭＵＸ＿ＡＤＤに供給する。これにより、命令アドレス選択回路ＭＵＸ＿ＡＤＤは、フェッチ部１００から供給された“２０”の値を命令アドレスバス５０に供給する。また、プログラムカウンタ１１０は、命令アドレス選択回路ＭＵＸ＿ＡＤＤから出力される“２０”の値をＡ１１に示すタイミングで格納する。
【０１２５】
図１２のＡ１０に示すように、ＣＰＵ１０に対する命令アドレスが、ループ処理の終了アドレス“１Ｃ”から次の命令アドレス“２０”に設定されるまでの間隔は、ＣＰＵ１０の動作クロックＣＬＫを基準に０クロックである。即ち、本実施形態では、例えば図１１に示すようなループ処理において、ループ処理の終了を判断し、その判断結果に基づいて分岐する処理にクロックＣＬＫを基準とする所定の時間を必要としない。このため、ループ処理を高速に行うことができる。
【０１２６】
図１３は、ループ処理を示すフローチャートである。処理ＰＲ１〜ＰＲ３はコプロセッサ３０側の処理を示し、処理ＰＲ４はＣＰＵ１０側の処理を示す。例えば制御部３２−３は、処理ＰＲ１〜ＰＲ３を行うことができる。クロックＣＬＫの例えば立ち上がりエッジに応じてループ処理が開始されると、処理ＰＲ１では、回数カウンタ３２−６の値が“０”の値であるか否かが判断される。回数カウンタ３２−６の値が“０”の値でない場合、後段の処理ＰＲ２が行われる。
【０１２７】
処理ＰＲ２では、カウント値ＰＣとカウント値エンド３２−１に格納されている値との一致判断が行われる。この判断において、カウント値ＰＣとカウント値エンド３２−１に格納されている値とが一致していると判断された場合には、後段の処理ＰＲ３が行われる。
【０１２８】
処理ＰＲ３では、命令アドレス選択信号ＣＳ１１が例えば論理“１”に設定される。論理“１”に設定された命令アドレス選択信号ＣＳ１１は、命令アドレス選択回路ＭＵＸ＿ＡＤＤに命令アドレスＣＩＡを選択させる信号を示す。
【０１２９】
処理ＰＲ４において、ＣＰＵ１０はコプロセッサ３０から供給された命令アドレスＣＩＡを命令アドレスバス５０に供給する。
【０１３０】
このようにして、コプロセッサ３０は、ループ処理の開始、ループ処理の終了アドレス、ループ処理の終了を判断することができる。
【０１３１】
３．３．飽和処理
次にコプロセッサ３０が飽和処理を行う場合の一例を説明する。
【０１３２】
図１４は、飽和処理を行うコプロセッサ３０の構成例である。コプロセッサ３０は、演算処理部３３を含む。演算処理部３３は判断部３３−１を含むが、これに限定されない。
【０１３３】
判断部３３−１は、ＣＰＵ１０から命令コード入力線ＩＲＣを介して入力される命令コードを受ける。また、判断部３３−１は、フラグデータ供給線ＦＬＣ１を介して供給されるフラグデータＦＬＤ１を受ける。フラグデータ供給線ＦＬＣ１を介して供給されるフラグデータＦＬＤ１には、Ｃフラグが含まれる。
【０１３４】
判断部３３−１に供給された命令コードに含まれるコプロセッサコードＣＣＤが演算処理部３３による処理を示す場合には、判断部３３−１は、Ｃフラグが“０”であるか否かを判断する。Ｃフラグが“０”である場合には、ＣＰＵ１０に命令コード選択信号供給線ＣＳＣ１２を介してアクティブに設定された命令コード選択信号ＣＳ１２を供給する。この場合、ＣＰＵ１０の命令コード選択回路ＭＵＸ＿ＩＲＣは、アクティブに設定された命令コード選択信号ＣＳ１２を受け、コプロセッサ３０から供給される命令コードＩＲ２を選択してフェッチ部１００に供給する。
【０１３５】
また、演算処理部３３は、何も処理を行なわないことを示す命令（ｎｏｐ命令）を命令コードＩＲ２として命令コード供給線ＣＩＣＣを介してＣＰＵ１０に供給する。ｎｏｐ命令の命令コードは、例えば“００００００００”に設定される。
【０１３６】
次に、例えば、第１、第２の命令コードで構成されたプログラムが第１、第２の命令コードの順に実行される場合の例を示す。
【０１３７】
第１の命令コードは、コプロセッサコードＣＣＤが演算処理部３３を示すように設定され、ＣＰＵオペコードＯＰＣＤが例えばａｄｄ命令に設定され、レジスタアドレスｓｒｃ１としてレジスタＲ１のアドレスが設定され、直値データｉｍｍ１２として“１２３４５６７８”が設定される。“１２３４５６７８”は任意の値を示す。
【０１３８】
第２の命令コードは、コプロセッサコードＣＣＤが演算処理部３３を示すように設定され、ＣＰＵオペコードＯＰＣＤが例えばｌｄ命令に設定され、レジスタアドレスｓｒｃ１としてレジスタＲ１のアドレスが設定され、直値データｉｍｍ１２として“ＦＦＦＦＦＦＦＦ”が設定される。ここでは、“ＦＦＦＦＦＦＦＦ”は例えば飽和処理を行う際の最大値を示し、この最大値を超えた値に対して飽和処理（丸め処理）を行う。
【０１３９】
ＣＰＵ１０側では、第１の命令コードが実行されると、ａｄｄ命令に基づき、レジスタＲ１に格納されている値と例えば命令コードに含まれる“１２３４５６７８”とを加算する処理がＡＬＵ４００にて行われる。加算結果は例えばレジスタＲ１に格納される。この時の演算結果に基づいてフラグレジスタ４１０のフラグデータが設定される。例えば、この加算処理によって、オーバーフローが発生した場合、Ｃフラグが“１”に設定される。また、第１の命令コードがコプロセッサ３０に命令コード入力線ＩＲＣを介して入力される。
【０１４０】
コプロセッサ３０側では、第１の命令コードがコプロセッサ３０に入力されると、演算処理部３３が処理を開始する。判断部３３−１は、Ｃフラグの値が“０”であるかどうか判断する。Ｃフラグの値が“０”である場合には、ＣＰＵ１０にアクティブな命令コード選択信号ＣＳ１２を供給する。
【０１４１】
この時、命令コード選択回路ＭＵＸ＿ＩＲＣには、命令コードバス６０を介して供給される第２の命令コードと、コプロセッサ３０から供給されるｎｏｐ命令が供給される。命令コード選択回路ＭＵＸ＿ＩＲＣは、アクティブな命令コード選択信号ＣＳ１２に基づいてｎｏｐ命令をフェッチ部１００に供給する。これにより、フェッチ部１００にはｎｏｐ命令がフェッチされ、次の命令ステップとして、ＣＰＵ１０側では何も処理を行なわないというｎｏｐ命令が実行される。
【０１４２】
反対に、Ｃフラグの値が“１”である場合には、ノンアクティブな命令コード選択信号ＣＳ１２がＣＰＵ１０に供給される。これに基づいて、命令コード選択回路ＭＵＸ＿ＩＲＣは、命令コードバス６０を介して供給される第２の命令コードを選択して、フェッチ部１００に供給する。これにより、次の命令ステップとして、第２の命令コードが実行される。即ち、この場合、ｌｄ命令に基づいて、レジスタＲ１には“ＦＦＦＦＦＦＦＦ”が格納される。このようにして、第１の命令コードによる演算結果でオーバーフローを生じさせた場合には、その演算結果を所与の値に設定することができる。また、オーバーフローが発生していない場合には、次の命令コードをキャンセルすることができる。
【０１４３】
図１５は、図１４の飽和処理における命令コードのフェッチを示すタイミングチャートである。図１５では、ＡＬＵ４００の演算結果において、オーバーフローが発生した場合を示す。Ｂ１に示すタイミングで命令コードバス６０に第１の命令コード（ａｄｄ）が供給され、Ｂ２に示すように第１の命令コード（ａｄｄ）がフェッチ部１００によってフェッチされる。
【０１４４】
例えば次のクロックＣＬＫの立ち上がりエッジに応じて、Ｂ３に示すタイミングで命令コードバス６０に第２の命令コード（ｌｄ）が供給されるが、第２の命令コード（ｌｄ）はフェッチされず、Ｂ４に示すようにｎｏｐ命令がフェッチ部１００によってフェッチされる。これは、命令コード選択回路ＭＵＸ＿ＩＲＣによって、コプロセッサ３０からの命令コードＩＲ２が選択されたためである。また、第１の命令コード（ａｄｄ）はＣＰＵ１０で実行されると共に、Ｂ５に示すタイミングでコプロセッサ３０に入力される。
【０１４５】
第１の命令コード（ａｄｄ）が実行されると、ＡＬＵ４００によってフラグデータがフラグレジスタ４１０に格納される。このフラグデータ（例えばＣフラグ）はコプロセッサ３０に供給される。ＡＬＵ４００においてオーバーフローが発生した場合には、Ｂ６に示すようにＣフラグが“０”（例えばローレベル）に設定される。判断部３３−１は、このＣフラグに基づいて、Ｂ７に示すように命令コード選択信号ＣＳ１２をアクティブ（例えばハイレベル）に設定する。この命令コード選択信号ＣＳ１２に基づいて、命令コード選択回路ＭＵＸ＿ＩＲＣはコプロセッサ３０からの命令コードＩＲ２（ｎｏｐ命令）を選択して、フェッチ部１００に供給する。即ち、フェッチ部１００は、Ｂ４に示すようにｎｏｐ命令をフェッチする。
【０１４６】
例えば次のクロックＣＬＫの立ち上がりエッジに応じて、ＣＰＵ１０側ではｎｏｐ命令が実行されると共に、Ｂ８に示すようにｎｏｐ命令がコプロセッサ３０に入力される。
【０１４７】
図１６は、飽和処理を示すフローチャートである。処理ＰＲ１１〜ＰＲ１３はコプロセッサ３０側の処理を示し、処理ＰＲ１４はＣＰＵ１０側の処理を示す。例えば制御部３３−１は、処理ＰＲ１〜ＰＲ３を行うことができる。クロックＣＬＫの例えば立ち上がりエッジに応じて飽和処理が開始されると、処理ＰＲ１１では、ＣＰＵ１０からコプロセッサ３０に入力された命令コードＩＲ１が演算処理部３３による処理を示す命令コードであるかどうかを判断する。例えば命令コードＩＲ１のコプロセッサコードＣＣＤが、演算処理部３３による処理を示すコードである場合には、後段の処理ＰＲ１２が行われる。
【０１４８】
処理ＰＲ１２では、Ｃフラグの値が“０”であるか否かの判断が行われる。この判断において、Ｃフラグの値が“０”であると判断された場合には、後段の処理ＰＲ１３が行われる。
【０１４９】
処理ＰＲ１３では、命令コード選択信号ＣＳ１２が例えば論理“１”に設定される。論理“１”に設定された命令コード選択信号ＣＳ１２は、命令コード選択回路ＭＵＸ＿ＩＲＣに命令コードＩＲ２を選択させる信号を示す。
【０１５０】
処理ＰＲ１４において、ＣＰＵ１０はコプロセッサ３０から供給された命令コードＩＲ２として、ｎｏｐ命令をフェッチする。
【０１５１】
このようにして、コプロセッサ３０は、飽和処理において、例えばオーバーフローの判断とその判断結果に基づく飽和処理を高速に行うことができる。
【０１５２】
３．４．コプロセッサのレジスタデータ
３．４．１．レジスタファイルに供給する処理
図１７は、コプロセッサ３０のレジスタデータＲＤＴ１、ＲＤＴ２をＣＰＵ１０に供給する場合のブロック図を示す。コプロセッサ３０は、演算処理部３４を含む。演算処理部３４は、アキュームレジスタ（ＡＣＣ）３４−１と、デコーダ３４−２を含む。アキュームレジスタ３４−１は、例えば４０ビットのデータを格納することができる。演算処理部３４には、ＣＰＵ１０から命令コード入力線ＩＲＣを介して命令コードＩＲ１が入力される。演算処理部３４は命令コードＩＲ１に基づく処理を行い、例えばその結果をアキュームレジスタ３４−１に格納する。
【０１５３】
アキュームレジスタ３４−１に格納された４０ビットのデータのうち、例えば下位３２ビットのデータ（第３１ビット〜第０ビットのデータ）は第１のレジスタデータＲＤＴ１として、第１のレジスタデータ供給線ＲＤＣ１を介してＣＰＵ１０のレジスタファイル３００に供給される。また、４０ビットのデータのうち、例えば上位８ビットのデータ（第３９ビット〜第３２ビットのデータ）は第２のレジスタデータＲＤＴ２として、第２のレジスタデータ供給線ＲＤＣ２を介してＣＰＵ１０のレジスタファイル３００に供給される。
【０１５４】
また、デコーダ３４−２は、ＣＰＵ１０から入力された命令コードＩＲ１に基づいてレジスタ番号ＲＮＭ、レジスタ選択信号ＣＳ３１、ＣＳ３２をＣＰＵ１０のレジスタファイル３００に供給する。例えば、命令コードＩＲ１に基づいてレジスタ番号ＲＮＭを生成することで、アキュームレジスタ３４−１のレジスタデータＲＤＴ１を複数のレジスタＲ０〜Ｒ１５のうちの任意のレジスタに供給することができる。
【０１５５】
このように構成された演算処理部３４を用いて、大きなデータを高速にＣＰＵ１０に供給することができる。
【０１５６】
また、演算処理部３４によって行われる処理において発生したフラグデータＦＬＤ２（例えばＣフラグ）が、第２のフラグデータ供給線ＦＬＣ２を介してＣＰＵ１０に供給される。これにより、ＣＰＵ１０は、次の命令コードで、フラグレジスタ４１０の値を用いることができる。そのため、コプロセッサ３０で演算処理された結果に対して、高速にオーバーフローに対する処理等を行うことができる。
【０１５７】
また、演算処理部３４は、フラグデータＦＬＤ２をＡＬＵ４００のフラグレジスタ４１０に格納するか否かを制御するフラグデータライト信号ＣＳ４１をＣＰＵ１０に供給することができる。フラグデータＦＬＤ２をフラグレジスタ４１０に格納する場合には、フラグデータライト信号ＣＳ４１がアクティブに設定される。フラグレジスタ４１０は、アクティブに設定されたフラグデータライト信号ＣＳ４１に基づいて、フラグデータＦＬＤ２を格納する。このようにすることで、コプロセッサ３０で生成されたフラグデータＦＬＤ２（例えばＣフラグ）がＣＰＵ１０において不要な場合、コプロセッサ３０側でフラグデータＦＬＤ２をフラグレジスタ４１０に格納しないようにする制御が可能となる。
【０１５８】
図１８は、図１７で示す処理のタイミングチャートである。演算処理部３４では、演算処理部３４による演算結果がアキュームレジスタ３４−１に格納される。その演算結果の例えば下位３２ビットのデータが、Ｃ１に示すタイミングでアキュームレジスタ３４−１の例えば下位３２ビットにレジスタデータＲＤＴ１として格納される。そして、レジスタデータＲＤＴ１は、ＣＰＵ１０のレジスタファイル３００に供給される。
【０１５９】
また、デコーダ３４−２は、命令コードＩＲ１に基づいてＣ２に示すようにレジスタ番号ＲＮＭを生成し、ＣＰＵ１０のレジスタファイル３００に供給する。また、デコーダ３４−２は、命令コードＩＲ１に基づいて、Ｃ３に示すようにアクティブに設定されたレジスタ選択信号ＣＳ３１をレジスタファイルに供給する。
【０１６０】
また、演算処理部３４による演算結果の例えば上位８ビットのデータが、Ｃ４に示すタイミングでアキュームレジスタ３４−１の例えば上位８ビットにレジスタデータＲＤＴ２として格納される。そして、レジスタデータＲＤＴ２は、ＣＰＵ１０のレジスタファイル３００に供給される。
【０１６１】
また、デコーダ３４−２は、命令コードＩＲ１に基づいてＣ５に示すようにアクティブに設定されたレジスタ選択信号ＣＳ３２をレジスタファイルに供給する。
【０１６２】
上記のような処理が行われ、次のクロックＣＬＫの例えば立ち上がりエッジに応じて、Ｃ６に示すようにレジスタファイル３００にレジスタデータＲＤＴ１及びＲＤＴ２が格納される。即ち、本実施形態では、例えばＣＰＵ１０の動作クロックＣＬＫの１クロックで、各レジスタデータＲＤＴ１、ＲＤＴ２やフラグデータＦＬＤ２をＣＰＵ１０に供給することができる。このため、ＣＰＵ１０側では次の命令コードの実行で、各レジスタデータＲＤＴ１、ＲＤＴ２やフラグデータＦＬＤ２を用いることができ、例えば飽和処理などの処理を高速に処理できる。
【０１６３】
３．４．２．ライトデータバスに供給する処理
図１９は、コプロセッサ３０のレジスタデータＲＤＴ１、ＲＤＴ２をライトデータバス８２に供給する場合のブロック図を示す。コプロセッサ３０は、演算処理部３６を含む。演算処理部３６は、アキュームレジスタ（ＡＣＣ）３６−１と、デコーダ３６−２と、アキュームレジスタデータ選択回路３６−３と、データアドレス出力部３６−４と、加算器３６−５を含む。なお、演算処理部３６は、上記の構成要素のいずれかを省略して構成されてもよい。例えば、加算器３６−５は減算器でもよい。また、データアドレス出力部３６−４は、例えばレジスタで構成されてもよい。
【０１６４】
アキュームレジスタ３６−１は、例えば４０ビットのデータを格納することができる。演算処理部３６には、ＣＰＵ１０から命令コード入力線ＩＲＣを介して命令コードＩＲ１が入力される。演算処理部３６は命令コードＩＲ１に基づく処理を行い、例えばその結果をアキュームレジスタ３６−１に格納する。
【０１６５】
また、デコーダ３６−２は、ＣＰＵ１０から入力された命令コードＩＲ１に基づいて、データアドレス選択信号ＣＳ５１と、ライトデータ選択信号ＣＳ５２をＣＰＵ１０のレジスタファイル３００に供給する。また、デコーダ３６−２は、例えばＣＰＵ１０から入力された命令コードＩＲ１に基づいてアキュームレジスタデータ選択信号ＣＳ５４をアキュームレジスタデータ選択回路３６−３に供給する。
【０１６６】
アキュームレジスタ３６−１に格納された４０ビットのデータのうち、例えば下位３２ビットのデータ（第３１ビット〜第０ビットのデータ）と、例えば上位８ビットのデータ（第３９ビット〜第３２ビットのデータ）は、アキュームレジスタデータ選択回路３６−３に供給される。アキュームレジスタデータ選択回路３６−３は、アキュームレジスタデータ選択信号ＣＳ５４に基づいて、下位３２ビットのデータ及び上位８ビットのデータのいずれかを選択して、ライトデータ供給線ＷＤＡＣを介してライトデータＷＤＡ１としてＣＰＵ１０に供給する。
【０１６７】
データアドレス出力部３６−４は、データアドレス供給線ＤＡＣを介してＣＰＵ１０にデータアドレスＤＴＡＤを供給する。データアドレス出力部３６−４は、例えばレジスタで構成され、その出力が加算器３６−５によって加算処理される。加算器３６−５は、例えばデータアドレス出力部３６−４の出力値に対して所与の値（例えば“４”の値）を加算して、その加算結果をデータアドレス出力部３６−４に出力する。
【０１６８】
また、データアドレス出力部３６−４は、加算器３６−５によって加算処理された結果を例えばクロックＣＬＫの立ち上がりエッジに応じて格納する。即ち、データアドレス出力部３６−４から、例えばクロックＣＬＫの立ち上がりエッジに応じて、次々とインクリメントされたデータアドレスＤＴＡＤがＣＰＵ１０のデータアドレス選択回路ＭＵＸ＿ＤＴに供給される。
【０１６９】
図２０は、図１９に示す処理のタイミングチャートである。命令コードＩＲ１がＤ１に示すタイミングでコプロセッサ３０に供給される。また、演算処理部３６では、演算処理部３６による演算結果がアキュームレジスタ３６−１に格納される。その演算結果の例えば下位３２ビットのデータ又は上位８ビットのデータがアキュームレジスタデータ選択回路３６−３によって選択され、Ｄ２に示すようにライトデータＷＤＡ１としてＣＰＵ１０に供給される。
【０１７０】
また、ライトデータバス８２にコプロセッサ３０から供給されたライトデータＷＤＡ１を供給する場合には、デコーダ３６−２から供給されるデータアドレス選択信号ＣＳ５１及びライトデータ選択信号ＣＳ５２はＤ３に示すようにアクティブ（例えばハイレベル）に設定される。
【０１７１】
また、データアドレス出力部３６−４からはＤ４に示すようにデータアドレスＤＴＡＤが出力され、Ｄ５に示すタイミングで例えば“４”の値がインクリメントされたデータアドレスＤＴＡＤが出力される。
【０１７２】
また、ＣＰＵ１０のデータアドレス選択回路ＭＵＸ＿ＤＴはデータアドレス選択信号ＣＳ５１に基づいて、Ｄ６に示すようにデータアドレスＤＴＡＤをデータアドレスバス７０に供給する。なお、この時データアドレスバス７０に供給されるデータアドレスＤＴＡＤは、Ｄ４に示すデータアドレスＤＴＡＤである。
【０１７３】
また、ＣＰＵ１０のライトデータ選択回路ＭＵＸ＿ＷＤはライトデータ選択信号ＣＳ５２に基づいて、Ｄ７に示すようにライトデータＷＤＡ１をライトデータバス８２に供給する。
【０１７４】
このように、Ｄ１に示すように命令コードＩＲ１が入力されてから、Ｄ６やＤ７に示すタイミングでデータアドレスＤＴＡＤ及びライトデータＷＤＡ１をデータアドレスバス７０やライトデータバス８２に供給することができる。即ち、コプロセッサ３０で生成されたデータアドレスＤＴＡＤやライトデータＷＤＡ１を高速にデータアドレスバス７０やライトデータバス８２に供給することができる。
【０１７５】
例えば、メモリ２０の所定のアドレスをインクリメントする毎に、その時のコプロセッサ３０の処理結果を格納するような処理を、高速に処理することができる。
【０１７６】
図２１は、図２０で示す処理に関するフローチャートである。処理ＰＲ２１〜ＰＲ２５はコプロセッサ３０側の処理を示す。クロックＣＬＫの例えば立ち上がりエッジに応じて処理が開始されると、処理ＰＲ２１では、ＣＰＵ１０からコプロセッサ３０に入力された命令コードＩＲ１が演算処理部３６による処理を示す命令コードであるかどうかを判断する。例えば命令コードＩＲ１のコプロセッサコードＣＣＤが、演算処理部３６による処理を示すコードである場合には、後段の処理ＰＲ２２及びＰＲ２３が行われる。
【０１７７】
処理ＰＲ２２では、命令コードＩＲ１に含まれる直値データｉｍｍ１２の値が例えば“１”の値であるか否かの判断が行われる。直値データｉｍｍ１２の値が“１”の値の場合には、後段の処理ＰＲ２４が行われ、直値データｉｍｍ１２の値が“１”以外の値である場合には、後段の処理２５を行う。
【０１７８】
処理ＰＲ２３では、データアドレス出力部３６−４からデータアドレスＤＴＡＤが出力される。また、次のクロックＣＬＫの例えば立ち上がりエッジに応じて、データアドレスＤＴＡＤが所与の値（例えば“４”の値）だけインクリメントされる。
【０１７９】
処理ＰＲ２４では、演算処理部３６は、アキュームレジスタ３６−１に格納されているデータのうち、例えば上位８ビットのデータをＣＰＵ１０に出力する。その出力の際、演算処理部３６は、アキュームレジスタ３６−１に格納されていた上位８ビットのデータを、例えば３２ビットのデータで構成されるライトデータＷＤＡ１の下位８ビットに設定する。また、演算処理部３６は、ライトデータＷＤＡ１の残りの上位２４ビットを“０”の値に設定する。このように設定されたライトデータＷＤＡ１がＣＰＵ１０に供給される。
【０１８０】
処理ＰＲ２５では、演算処理部３６は、アキュームレジスタ３６−１に格納されているデータのうち、例えば下位３２ビットのデータをライトデータＷＤＡ１としてＣＰＵ１０に供給する。
【０１８１】
なお、本実施形態では処理ＰＲ２２によって、アキュームレジスタ３６−１に格納されている上位８ビットのデータ及び下位３２ビットのデータのいずれかを選択して、ＣＰＵ１０に供給することができる。その選択は、例えば直値データｉｍｍ１２に設定されているデータの値に基づいて行うことができる。例えば、直値データｉｍｍ１２に“１”の値が設定されている場合には、アキュームレジスタ３６−１に格納されているデータの上位８ビットのデータを用いるように定義することができる。このようにすることで、命令コードＩＲ１に基づいて、演算処理部３６のデータの一部を選択して、ライトデータバス８２に供給されるライトデータとしてＣＰＵ１０に供給することができる。
【０１８２】
４．比較例との対比
図２２は、本実施形態に係る比較例である集積回路装置２０００のＣＰＵ１１とコプロセッサ３１との接続関係を示す図である。比較例では、フェッチ部１００から出力される例えば３２ビットの命令コード２２（ｃｏｄｅ）が命令コード供給ＩＲＣを介してコプロセッサ３１に供給される。また、レジスタファイル３００の出力ＲＱ２から出力されるレジスタデータｓｒｃ２は、第２のレジスタファイル供給線ＲＦＣ２を介してコプロセッサ３１に供給される。例えば、レジスタファイル３００の複数のレジスタＲ０〜Ｒ１５のうち、いずれか一つのレジスタに格納されている値をコプロセッサ３１に供給することができる。また、コプロセッサ３１は、コプロセッサ用データ入力線ＲＤＣ１を用いてたとえば３２ビットのレジスタデータＲＤＴ１をＣＰＵ１１に供給することができる。
【０１８３】
比較例では、例えばコプロセッサ３１からＣＰＵ１１にデータを供給する場合、例えばレジスタファイル３００を経由する必要がある。この場合、少なくともレジスタファイル３００に格納する処理や格納されたデータを読み出す処理が必要となり、その分処理速度のロスを生じる。また、コプロセッサ３１で生成されたデータの大きさが大きい場合や、そのデータの種類が複数ある場合、複数回に分けて、データをレジスタファイル３００に供給する必要がある。この場合も、処理速度のロスを生じる。
【０１８４】
また、コプロセッサ３１で生成されたデータをライトデータバス８２に供給する場合にもレジスタファイル３００を経由させる必要がある。またコプロセッサ３１で生成されたデータアドレスをデータアドレスバス７０に供給する場合にも、レジスタアドレス３００を経由させる必要がある。これらの場合にも、複数回の命令処理が必要となり、処理速度のロスを生じる。
【０１８５】
これらに対して、本実施形態では、上述のようにコプロセッサ３０から種々のデータ等が各供給線ＩＲＣ、ＰＣＣ、ＣＩＡＣ，ＣＩＣＣ、ＣＳＣ１１、ＣＳＣ１２、ＲＤＣ１、ＣＳＣ３１、ＲＮＣ、ＲＤＣ２、ＣＳＣ３２、ＦＬＣ２、ＣＳＣ４１、ＤＡＣ、ＣＳＣ５１、ＷＤＡＣ、ＣＳＣ５２、ＣＳＣ５３、ＲＤＡＣ等を介してＣＰＵ１０に供給される。これにより、本実施形態では、コプロセッサ３０からＣＰＵ１０に供給したいデータ等を、ＣＰＵ１０の動作クロックの１クロックで、ＣＰＵ１０に供給することができる。即ち、比較例の課題である処理速度のロスを、本実施形態では緩和できる。さらに、本実施形態では、比較例に対してハードウェア構成的にも複雑な論理回路ブロックの追加が少ない。例えば選択回路がいくつか設けられるが、ハードウェア規模の増大を最小限に抑えることができる。そのため、比較例に比べて高速な処理を小さな回路規模で実現することができる。
【０１８６】
また、例えば図９で示すループ処理を比較例で行う場合、分岐を判断する処理やループ処理の終了を判断する処理など複数の処理が頻繁に必要となる。これはＣＰＵ１１の処理速度を低下させる。その速度の低下は、ループ処理のループ回数の増加や、１回のループ処理に行われる命令コードの数の増加に伴い、さらに顕著になる。つまり比較例において、ループ処理を高速に行うためには、ＣＰＵ１１の動作クロックを引き上げるか、専用命令を実行できるハードウェアを別途に設ける必要があった。
【０１８７】
これに対して、本実施形態では、前述のようにループ処理の終了等の判断をコプロセッサ３０が行い、その結果等をＣＰＵ１０にレジスタファイル３００を介さずに供給できる。このため、比較例で必要だった処理時間を大幅に削減することができ、比較例に比べて高速なループ処理を行うことができる。
【０１８８】
また、例えば図１４で示すような飽和処理を比較例で行う場合、Ｃフラグを判断する処理と、その判断結果に基づいてＡＬＵ４００の演算結果を所定の値に変更する処理が必要となる。このとき、比較例では、フラグレジスタ４１０からフラグデータを取得する処理や、ＡＬＵ４００の演算結果を取得する処理がさらに必要となる。このため、複数の処理が必要となり、処理速度のロスを生じる。
【０１８９】
これに対して、本実施形態では、前述のように、ＣＰＵ１０のフラグデータＦＬＤ１に基づいて、コプロセッサ３０は、ＣＰＵ１０のフェッチ部１００にフェッチされる命令コードを切り替えることができる。このため、比較例に比べて高速に飽和処理を行うことができる集積回路装置１０００を、図１４に示すように簡単な回路構成で実現することができる。
【０１９０】
また、例えば図１７で示すようなビット長の長いレジスタデータをＣＰＵに供給する処理を比較例で行う場合、データを複数に分割して、複数回に分けてレジスタファイル３００に供給する必要がある。このため、レジスタデータの供給にＣＰＵ１１の動作クロックを基準とする数クロックの処理時間を要する。
【０１９１】
これに対して、本実施形態では、レジスタデータ供給線ＲＤＣ１の他にレジスタデータ供給線ＲＤＣ２が設けられているため、ＣＰＵ１０の動作クロックＣＬＫの１クロックでレジスタデータＲＤＴ１及びＲＤＴ２をＣＰＵ１０に供給することができる。即ち、コプロセッサ３０の演算処理結果等を比較例に比べて高速にＣＰＵ１０に供給することができる。さらに、コプロセッサ３０の演算処理結果に基づくフラグデータＦＬＤ２も同時にＰＣＵ１０に供給することができ、ＣＰＵ１０は、このフラグデータＦＬＤ２に基づいた処理をすぐに行うことができる。
【０１９２】
また、例えば図１９で示すようなコプロセッサからのライトデータをライトデータバスに供給する処理を比較例で行う場合、レジスタファイル３００を介する必要がある。このため、コプロセッサ３１からのライトデータを一旦、レジスタファイル３００に格納し、格納されたライトデータをライトデータバス８２に供給する。このとき、ＣＰＵ１１側でいくつかの命令を実行するため、その分、処理に要する時間がかかる。
【０１９３】
これに対して、本実施形態では、ライトデータ供給線ＷＤＡＣやデータアドレス供給線ＤＡＣが設けられているため、ＣＰＵ１０の動作クロックＣＬＫの１クロックでライトデータバス８２やデータアドレスバス７０に供給することができる。このため、本実施形態では、例えばライトデータバス８２に対して、比較例に比べて高速にライトデータの供給ができる。また、ライトデータ選択回路ＭＵＸ＿ＷＤやデータアドレス選択回路ＭＵＸ＿ＤＴがＣＰＵ１０側に設けられているため、コプロセッサ３０から供給されるデータアドレス選択信号ＣＳ５１やライトデータ選択信号ＣＳ５２に基づいて、ライトデータやデータアドレスを切り替えることができる。このため、比較例では処理に時間がかかってしまうような処理（例えば図１９の処理）を比較例に比べて高速に処理することができる。
【０１９４】
なお、コプロセッサ３０は、ＣＰＵ１０と同じクロック周波数で動作するが、これに限定されない。
【０１９５】
５．変形例
図２３は、本実施形態にかかる変形例の構成を示す。
【０１９６】
集積回路装置１０００は、直値生成部２００から出力される直値データをコプロセッサ３０に供給するための直値データ供給線ＩＭＣをさらに含んでもよい。また、集積回路装置１０００は、レジスタファイル３００の第１、第２のレジスタ選択回路３１０、３２０（広義には第１〜第ｎのレジスタ選択回路）の出力をコプロセッサ３０に供給するための第１、第２のレジスタファイル供給線ＲＦＣ１、ＲＦＣ２（広義には、第１〜第ｎのレジスタファイル供給線）と、固定レジスタとして設定されたレジスタの出力をコプロセッサ３０に供給するための固定レジスタデータ供給線ＲＦＣ３をさらに含んでもよい。また、集積回路装置１０００は、ＡＬＵ４００の演算処理結果をコプロセッサ３０に供給するためのＡＬＵ出力供給線ＡＬＣをさらに含んでもよい。また、集積回路装置１０００は、ロードストア部５００によって例えばメモリ２０から読み出されたデータをコプロセッサ３０に供給するためのロードデータ供給線ＬＤＣと、デコード制御部６００の制御信号をコプロセッサ３０に供給するための制御信号供給線ＣＳＣをさらに含んでもよい。
【０１９７】
なお、集積回路装置１０００は、上記の構成に限定されない。例えば、ＣＰＵ１０は、直値データ供給線ＩＭＣ、第１、第２のレジスタファイル供給線ＲＦＣ１、ＲＦＣ２、固定レジスタデータ供給線ＲＦＣ３等を省略する構成でもよい。また、コプロセッサ３０は、コプロセッサ用データ入力線ＲＤＣ１を介してコプロセッサの演算処理結果をＣＰＵ１０に出力するが、これに限定されない。
【０１９８】
また、直値生成部２００には、例えば直値データ供給線ＩＭＣの一端が接続されてもよい。直値生成部２００は、この直値データ供給線ＩＭＣを介してコプロセッサ３０と接続することができる。この場合、直値生成部２００は、生成した直値データ（例えば３２ビットの直値データ）を直値データ供給線ＩＭＣを介してコプロセッサ３０に供給することができる。
【０１９９】
また、第１のレジスタ選択回路３１０の出力ＲＱ１には、例えばレジスタファイル供給線ＲＦＣ１の一端が接続されてもよい。レジスタファイル３００の第１のレジスタ選択回路３１０の出力ＲＱ１は第１のレジスタファイル供給線ＲＦＣ１を介してコプロセッサ３０と接続することができる。この場合、レジスタファイル３００は、第１のレジスタ選択回路３１０の出力ＲＱ１から出力される値をコプロセッサ３０に供給することができる。
【０２００】
また、ＡＬＵ出力ＡＱには、例えばＡＬＵ出力供給線ＡＬＣの一端が接続されてもよい。ＡＬＵ４００は、このＡＬＵ出力供給線ＡＬＣを介してコプロセッサ３０と接続することができる。この場合、ＡＬＵ４００の出力（例えば演算処理結果）をコプロセッサ３０に供給することができる。
【０２０１】
また、ロードストア部５００のロードデータ出力ＬＤＤには例えばロードデータ供給線ＬＤＣの一端が接続されてもよい。ロードストア部５００は、このロードデータ供給線ＬＤＣを介してコプロセッサ３０と接続することができる。この場合、ロードストア部５００の出力（例えばメモリから読み出したデータ）をコプロセッサ３０に供給することができる。
【０２０２】
このように構成された本実施形態にかかる変形例では、コプロセッサ３０に供給したいデータ等を、ＣＰＵ１０の動作クロックの１クロックで、コプロセッサ３０に供給することができる。即ち、処理速度のロスを比較例に比べて緩和できる。さらに、変形例では、比較例に対してハードウェア構成的にも複雑な論理回路ブロックの追加を必要としないため、比較例に比べて高速な処理を小さな回路規模で実現することができる。
【０２０３】
また、変形例では、コプロセッサ３０に直値データ供給線ＩＭＣ、第１、第２のレジスタファイル供給線ＲＦＣ１、ＲＦＣ２が接続されている。このため、ＣＰＵ１０は、ＣＰＵ１０の動作クロックの１クロックで、各データｉｍｍ、ｓｒｃ１、ｓｒｃ２をコプロセッサ３０に供給することができる。これにより、複雑な積和演算処理を比較例に比べて高速に行うことができる。
【０２０４】
また、変形例では、コプロセッサ３０にＡＬＵ出力供給線ＡＬＣ、フラグデータ供給線ＦＬＣ１が接続されている。このため、ＣＰＵ１０は、ＣＰＵ１０の動作クロックの１クロックで、各データａｌｕ、Ｃフラグデータをコプロセッサ３０に供給することができる。さらに、ＡＬＵ４００の演算処理結果ａｌｕの値が決定されたら、即座にコプロセッサ３０に演算処理結果ａｌｕを供給することができる。これにより、例えば飽和処理を比較例に比べて高速に行うことができる。
【０２０５】
また、変形例では、コプロセッサ３０に命令コード入力線ＩＲＣ、ロードデータ供給線ＬＤＣが接続されている。このため、ＣＰＵ１０は、ＣＰＵ１０の動作クロックの１クロックで、各データｌｏａｄ、ｉｍｍ１２をコプロセッサ３０に供給することができる。これにより、例えば複雑な積和処理を比較例に比べて高速に行うことができる。
【０２０６】
上記のように、本実施形態の集積回路装置１０００は、比較例に比べて複雑な論理回路ブロックを追加せずに、コプロセッサ３０に必要なデータを１クロックで供給できるため、複雑な処理を比較例に比べて高速に処理を行うことができる。
【０２０７】
なお、コプロセッサ３０は、ＣＰＵ１０と同じクロック周波数で動作するが、これに限定されない。
【０２０８】
上記のように、本発明の実施例について詳細に説明したが、本発明の新規事項及び効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。したがって、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書または図面において、少なくとも一度、より広義又は同義な異なる用語と共に記載された用語は、明細書または図面のいかなる箇所においても、その異なる用語に置き換えることができる。
【図面の簡単な説明】
【０２０９】
【図１】本実施形態に係る集積回路装置を示すブロック図。
【図２】本実施形態に係るＣＰＵを示すブロック図。
【図３】本実施形態に係るＣＰＵとコプロセッサとの接続を示す図。
【図４】本実施形態に係るフェッチ部とコプロセッサの接続を示すブロック図。
【図５】本実施形態に係るレジスタファイルとコプロセッサの接続を示すブロック図。
【図６】本実施形態に係るＡＬＵとコプロセッサの接続を示すブロック図。
【図７】本実施形態に係るロードストア部とコプロセッサの接続を示すブロック図。
【図８】本実施形態に係る命令コードの構成例。
【図９】本実施形態に係る集積回路装置におけるループ処理を示す図。
【図１０】図１０のループ処理の開始時のタイミングチャート。
【図１１】図１０のループ処理における命令コードの対応例。
【図１２】図１０のループ処理の終了時のタイミングチャート。
【図１３】図１０のループ処理を示すフローチャート。
【図１４】本実施形態に係る集積回路装置の飽和処理を示す図。
【図１５】図１４の飽和処理を示すタイミングチャート。
【図１６】図１４の飽和処理を示すフローチャート。
【図１７】本実施形態に係る集積回路装置のレジスタデータの供給を示す図。
【図１８】図１７のレジスタデータの供給を示すタイミングチャート。
【図１９】本実施形態に係る集積回路装置におけるライトデータ、データアドレスの供給を示す図。
【図２０】図１９のライトデータ、データアドレスの供給を示すタイミングチャート。
【図２１】図１９のライトデータ、データアドレスの供給を示すフローチャート。
【図２２】本実施形態に係る比較例を示す図。
【図２３】本実施形態に係る変形例を示す図。
【符号の説明】
【０２１０】
１０  ＣＰＵ、２０  メモリ、２２  命令コード、２４  データ、３０  コプロセッサ、５０  命令アドレス、６０  命令コードバス、７０  データアドレスバス、
８０データバス、８２  ライトデータバス、８４  リードデータバス、
１００  フェッチ部、１１０  プログラムカウンタ、２００  直値生成部、
３００  レジスタファイル、３１０  第１のレジスタ選択回路、
３２０  第２のレジスタ選択回路、４００  ＡＬＵ、４１０  フラグレジスタ、
５００  ロードストア部、６００  デコード制御部、ＣＤＡＤ  データアドレス、
ＣＩＡ  命令アドレス、ＣＩＡＣ  命令アドレス供給線、ＣＩＣＣ  命令コード供給線、ＣＳＣ１１  命令アドレス選択信号供給線、ＣＳＣ１２  命令コード選択信号供給線、
ＣＳＣ３１  第１のレジスタデータ選択信号供給線、
ＣＳＣ３２  第２のレジスタデータ選択信号供給線、
ＣＳＣ４１  フラグデータ選択信号、ＣＳＣ５１  データアドレス選択信号供給線、
ＣＳＣ５２  ライトデータ選択信号供給線、ＣＳＣ５３  リードデータ選択信号供給線、ＣＳ１１  命令アドレス選択信号、ＣＳ１２  命令コード選択信号、
ＣＳ３１  第１のレジスタデータ選択信号、ＣＳ３２  第２のレジスタデータ選択信号、ＣＳ４１  フラグデータ選択信号、ＣＳ５１  データアドレス選択信号、
ＣＳ５２  ライトデータ選択信号、ＣＳ５３  リードデータ選択信号、
ＤＡＣ  データアドレス供給線、ＤＴＡＤ  データアドレス、
ＦＬＣ１  第１のフラグデータ供給線、ＦＬＣ２  第２のフラグデータ供給線、
ＦＬＤ１  第１のフラグデータ、ＦＬＤ２  第２のフラグデータ、
ＭＵＸ＿ＡＤＤ  命令アドレス選択回路、ＭＵＸ＿ＤＴ  データアドレス選択回路、
ＭＵＸ＿ＦＬＧ  フラグデータ選択回路、ＭＵＸ＿ＩＲＣ  命令コード選択回路、
ＭＵＸ＿ＲＤ  リードデータ選択回路、
ＭＵＸ＿ＲＧ１  第１のレジスタデータ選択回路、
ＭＵＸ＿ＲＧ２  第２のレジスタデータ選択回路、
ＭＵＸ＿ＲＮＭ  レジスタ番号選択回路、ＭＵＸ＿ＷＤ  ライトデータ選択回路、
ＩＲ１、ＩＲ２  命令コード、ＰＣＣ  カウント値供給線、
ＲＤＡＣ  リードデータ供給線、ＲＤＡ１  リードデータ、
ＲＤＣ１  第１のレジスタデータ供給線、ＲＤＣ２  第２のレジスタデータ供給線、
ＲＤＴ１  第１のレジスタデータ、ＲＤＴ２  第２のレジスタデータ、
ＲＮＣ  レジスタ番号供給線、ＲＮＭ  レジスタ番号、Ｒ０〜Ｒ１５  複数のレジスタ、ＷＤＡＣ  ライトデータ供給線、ＷＤＡ１、ＷＤＡ２  ライトデータ
【図１】
2007128560.tif 000003
【図２】
2007128560.tif 000004
【図３】
2007128560.tif 000005
【図４】
2007128560.tif 000006
【図５】
2007128560.tif 000007
【図６】
2007128560.tif 000008
【図７】
2007128560.tif 000009
【図８】
2007128560.tif 000010
【図９】
2007128560.tif 000011
【図１０】
2007128560.tif 000012
【図１１】
2007128560.tif 000013
【図１２】
2007128560.tif 000014
【図１３】
2007128560.tif 000015
【図１４】
2007128560.tif 000016
【図１５】
2007128560.tif 000017
【図１６】
2007128560.tif 000018
【図１７】
2007128560.tif 000019
【図１８】
2007128560.tif 000020
【図１９】
2007128560.tif 000021
【図２０】
2007128560.tif 000022
【図２１】
2007128560.tif 000023
【図２２】
2007128560.tif 000024
【図２３】
2007128560.tif 000025