(57)【要約】      （修正有）【課題】拡張部に対する命令コードにより、プロセッサコアと拡張部との同期をとる拡張可能なプロセッサ及び半導体集積回路を提供する。【解決手段】汎用レジスタ１６と命令デコーダ１８と第２の実行ユニット２４を備えるプロセッサコア１０と、プロセッサコア１０に接続され、第１の実行ユニット３６を備える拡張部３２と、プロセッサコア１０と拡張部３２の双方に接続されるダイレクトメモリアクセスコントローラ３０と、プロセッサコア１０及びダイレクトメモリアクセスコントローラ３０に対してバス接続されるバスブリッジ５４と、プロセッサコア１０と拡張部３２との間に接続される制御バスと、バスブリッジ５４に接続されるグローバルバスとを備え、プロセッサコアのクロックを停止させるかパイプラインを停止させる機能を有するプロセッサ及び半導体集積回路。【選択図】      図１
2004362215.tif 000002
【特許請求の範囲】
【請求項１】
汎用レジスタと命令デコーダと第２の実効ユニットとを備えるプロセッサコアと、
前記プロセッサコアに接続される第１の実行ユニットを備える拡張部と、
前記プロセッサコアと前記拡張部の双方に接続されるダイレクトメモリアクセスコントローラ
とを備えることを特徴とするプロセッサ。
【請求項２】
前記プロセッサコアと前記拡張部との間に接続される制御バスを更に備えることを特徴とする請求項１記載のプロセッサ。
【請求項３】
前記命令デコーダからの拡張命令コードを受信して、クロックディセーブル信号を出力するクロックディセーブル信号生成回路を更に備えることを特徴とする請求項１又は２記載のプロセッサ。
【請求項４】
前記クロックディセーブル信号を受信して前記プロセッサコアのクロック停止する信号を前記プロセッサコアに伝達するクロックゲーティング回路を更に備えることを特徴とする請求項３記載のプロセッサ。
【請求項５】
前記クロックディセーブル信号は前記プロセッサコアのクロック信号を  停止させることを特徴とする請求項３又は請求項４に記載のプロセッサ。
【請求項６】
前記命令デコーダからの拡張命令コードを受信して、停止要求信号を前記プロセッサコアに対して伝達する停止要求信号生成回路を更に備えることを特徴とする請求項１又は２記載のプロセッサ。
【請求項７】
前記停止要求信号は前記プロセッサコアのパイプラインを停止させることを特徴とする請求項６記載のプロセッサ。
【請求項８】
前記プロセッサコアは、命令キャッシュを更に備えることを特徴とする請求項１又は２記載のプロセッサ。
【請求項９】
前記プロセッサコアは、命令ＲＡＭを更に備えることを特徴とする請求項１又は請求項２又は請求項８記載のプロセッサ。
【請求項１０】
前記拡張部は命令デコーダと、制御レジスタと、ローカルメモリとを更に備えることを特徴とする請求項１又は２記載のプロセッサ。
【請求項１１】
前記第１の実行ユニットは再構成可能な第１の実行ユニットであることを特徴とする請求項１又は２記載のプロセッサ。
【請求項１２】
前記再構成可能な第１の実行ユニットは、再構成可能な論理回路から構成されることを特徴とする請求項１０記載のプロセッサ。
【請求項１３】
前記拡張部は命令デコーダと、制御レジスタと、ローカルメモリとを更に備えることを特徴とする請求項１１記載のプロセッサ。
【請求項１４】
前記拡張部内の前記命令デコーダは、前記再構成可能な第１の実行ユニットと同一の前記再構成可能な論理回路で構成されることを特徴とする請求項１１記載のプロセッサ。
【請求項１５】
前記再構成可能な論理回路に提供するコンフィグレーション用のデータは、前記拡張部内の前記再生可能な第１の実行ユニットと前記ダイレクトメモリアクセスコントローラとの間を接続するコンフィグレーションインタフェースを介して、前記ダイレクトメモリアクセスコントローラからのデータ転送によって提供することを特徴とする請求項１２記載のプロセッサ。
【請求項１６】
前記再構成可能な論理回路に提供するコンフィグレーション用のデータを前記拡張部内部の前記ローカルメモリに記憶することを特徴とする請求項１３記載のプロセッサ。
【請求項１７】
半導体チップと、
該半導体チップ上に集積化され、汎用レジスタと命令デコーダと第２の実効ユニットとを備えるプロセッサコアと、
該半導体チップ上に集積化され、前記プロセッサコアに接続される第１の実行ユニットを備える拡張部と、
該半導体チップ上に集積化され、前記プロセッサコアと前記拡張部の双方に接続されるダイレクトメモリアクセスコントローラ
とを備えることを特徴とする半導体集積回路。
【請求項１８】
前記半導体チップ上に集積化され、前記プロセッサコアと前記拡張部との間に接続される制御バスを更に備えることを特徴とする請求項１７記載の半導体集積回路。
【請求項１９】
前記半導体チップ上に集積化され、前記命令デコーダからの拡張命令コードを受信して、クロックディセーブル信号を出力するクロックディセーブル信号生成回路を更に備えることを特徴とする請求項１７又は請求項１８記載の半導体集積回路。
【請求項２０】
前記半導体チップ上に集積化され、前記クロックディセーブル信号を受信して前記プロセッサコアのクロック停止する信号を前記プロセッサコアに伝達するクロックゲーティング回路を更に備えることを特徴とする請求項１９記載の半導体集積回路。
【請求項２１】
前記半導体チップ上に集積化され、前記命令デコーダからの拡張命令コードを受信して、停止要求信号を前記プロセッサコアに対して伝達する停止要求信号生成回路を更に備えることを特徴とする請求項１７又は１８記載の半導体集積回路。
【請求項２２】
前記プロセッサコアは、命令キャッシュを更に備えることを特徴とする請求項１７又は請求項１８記載の半導体集積回路。
【請求項２３】
前記プロセッサコアは、命令ＲＡＭを更に備えることを特徴とする請求項１７又は請求項１８又は請求項２２記載の半導体集積回路。
【請求項２４】
前記拡張部は、命令デコーダと、制御レジスタと、ローカルメモリとを更に備えることを特徴とする請求項１７又は請求項１８記載の半導体集積回路。
【請求項２５】
前記第１の実行ユニットは再構成可能な第１の実行ユニットであることを特徴とする請求項１７又は１８記載の半導体集積回路。
【請求項２６】
前記再構成可能な第１の実行ユニットは、再構成可能な論理回路から構成されることを特徴とする請求項２５記載の半導体集積回路。
【請求項２７】
前記拡張部は命令デコーダと、制御レジスタと、ローカルメモリとを更に備えることを特徴とする請求項２５記載の半導体集積回路。
【請求項２８】
前記拡張部内の前記命令デコーダは、前記再構成可能な第１の実行ユニットと同一の前記再構成可能な論理回路で構成されることを特徴とする請求項２５記載の半導体集積回路。
【請求項２９】
前記再構成可能な論理回路に提供するコンフィグレーション用のデータは、前記拡張部内の前記再生可能な第１の実行ユニットと前記ダイレクトメモリアクセスコントローラとの間を接続するコンフィグレーションインタフェースを介して、前記ダイレクトメモリアクセスコントローラからのデータ転送によって提供することを特徴とする請求項２６記載の半導体集積回路。
【請求項３０】
前記再構成可能な論理回路に提供するコンフィグレーション用のデータを前記拡張部内部の前記ローカルメモリに記憶することを特徴とする請求項２７記載の半導体集積回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プロセッサに関し、特に拡張可能なプロセッサ或いは再構成可能な演算器を有するプロセッサ及び半導体集積回路に関する。
【０００２】
【従来の技術】
拡張可能なプロセッサコアとは、プロセッサコアの外部にアプリケーションに適した再構成可能な演算回路等の論理回路からなる拡張部を付加し、高性能化を図るプロセッサである（例えば、非特許文献１）。
【０００３】
或いはまた、従来、プロセッサコアの外部に、ユーザー設計或いはベンダ提供の拡張回路を接続することにより、プロセッサとしての性能を向上させるカスタムプロセッサがある。外部に接続する回路は、単サイクル用の演算器であったり、複数サイクルにわたる複雑な演算器であったり、コプロセッサであったりする（例えば、非特許文献２）。
【０００４】
【非特許文献１】
ミッシェル・ボルガッティー他，“ダイナミックに拡張可能な埋め込み型マイクロプロセッサー、フィールドプログラマブルゲートアレイ及び顧客用途別可能化入出力装置”、米国電気電子学会２００２年カスタム集積回路国際会議論文集，２−３−１，ｐ．１３−１６（Ｍ．Ｂｏｒｇａｔｔｉ  ｅｔ．ａｌ．，“Ａ  Ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  Ｓｙｓｔｅｍ  ｆｅａｔｕｒｉｎｇ  Ｄｙｎａｍｉｃａｌｌｙ  Ｅｘｔｅｎｓｉｂｌｅ  Ｅｍｂｅｄｄｅｄ  Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ，  ＦＰＧＡ  ａｎｄ  Ｃｕｓｔｏｍｉｓａｂｌｅ  Ｉ／Ｏ”，ＩＥＥＥ  ２００２  ＣＵＳＴＯＭ  ＩＮＴＥＧＲＡＴＥＤ  ＣＩＲＣＵＩＴＳ  ＣＯＮＦＥＲＥＮＣＥ，２−３−１，ｐ．１３−１６）
【０００５】
【非特許文献２】
フランチェスコ・レルトーラ他，“顔相識別用カスタム化プロセッサ”、埋め込み化プロセッサフォーラム、２００２年５月１日、（ｗｗｗ．ＭＤＲｏｎｌｉｎｅ．ｃｏｍ）  （Ｆ．  Ｌｅｒｔｏｒａ，“Ａ  Ｃｕｓｔｏｍｉｚｅｄ  Ｐｒｏｃｅｓｓｏｒ  ｆｏｒ  Ｆａｃｅ  Ｒｅｃｏｇｎｉｔｉｏｎ”，Ｅｍｂｅｄｄｅｄ  Ｐｒｏｃｅｓｓｏｒ  Ｆｏｒｕｍ，Ｍａｙ  １，２００２）
【０００６】
【発明が解決しようとする課題】
拡張可能なプロセッサコアにおいては、拡張部に再構成可能なフィールドプログラマブルゲートアレイ等の論理回路を用いることで、一つの大規模集積回路（ＬＳＩ）上において、複数のアプリケーションを実行させることや、或いはアプリケーション内で拡張部の機能を変更することで効率の良い演算器を構成することができる。しかし、再構成可能な論理回路は、一般的な特定用途向け集積回路（ＡＳＩＣ）よりも低速である。つまりＡＳＩＣのセルを用いるプロセッサコアよりも、拡張部の方が遅いという欠点がある。そのため、プロセッサコアと拡張部とを同期させる必要がある。
【０００７】
また、上記カスタムプロセッサでは、アプリケーションに応じた拡張部を設計して、プロセッサコアに接続することにより、高性能を得ることができるが、アプリケーションごとに拡張部を設計する必要があり、開発期間やコストが大きくなってしまうという問題がある。
【０００８】
本発明の目的は、拡張部に対する命令コードにより、プロセッサコアのクロック若しくはパイプラインを停止させることでプロセッサコアと拡張部との同期をとることができる、拡張可能なプロセッサ或いは再構成可能な演算器を有するプロセッサ及び半導体集積回路を提供することにある。
【０００９】
【課題を解決するための手段】
本発明の第１の特徴は、（イ）汎用レジスタと命令デコーダと第２の実効ユニットとを備えるプロセッサコアと、（ロ）プロセッサコアに接続される第１の実行ユニットを備える拡張部と、（ハ）プロセッサコアと拡張部の双方に接続されるダイレクトメモリアクセスコントローラとを備える拡張可能なプロセッサであることを要旨とする。
【００１０】
本発明の第２の特徴は、（イ）半導体チップと、（ロ）半導体チップ上に集積化され、汎用レジスタと命令デコーダと第２の実効ユニットとを備えるプロセッサコアと、（ハ）半導体チップ上に集積化され、プロセッサコアに接続された第１の実行ユニットを備える拡張部と、（二）半導体チップ上に集積化され、プロセッサコアと拡張部の双方に接続されるダイレクトメモリアクセスコントローラとを備える半導体集積回路であることを要旨とする。
【００１１】
【発明の実施の形態】
次に、図面を参照して、本発明の実施の形態を説明する。以下の図面において、同一又は類似の部分には同一又は類似の符号を付している。又、以下に示す実施の形態は、この発明の技術思想を具体化するための装置や方法を例示するものであって、この発明の技術思想を下記のものに特定するものではない。この発明の技術思想は、特許請求の範囲において、種々の変更を加えることができる。
【００１２】
（比較例１）
本発明の比較例としての拡張可能なプロセッサは、図１１に示すように、プロセッサコア１０と拡張部３２とから構成される。プロセッサコア１０と拡張部３２間には共通のクロックＣＬＫが与えられる。更にプロセッサコア１０と拡張部３２間にはソースデータ１を転送するソースデータラインＳＤ１Ｌ、ソースデータ２を転送するソースデータラインＳＤ２Ｌ、命令コードＩＣＯＤを転送する命令コード転送ライン、演算結果ＡＬＲを転送する演算結果転送ラインが配置されている。更に拡張部３２に対しては、コンフィグレーションインタフェースラインＣＯＮＩ／Ｆが接続されている。
【００１３】
プロセッサコア１０は、命令キャッシュ１２と、命令ＲＡＭ１４と、汎用レジスタ１６と、命令デコーダ１８と、第２の実行ユニット２０と、データキャッシュ２６と、データＲＡＭ２８とから構成されている。また、拡張部３２には第１の実行ユニット３６が含まれている。命令キャッシュ１２と命令ＲＡＭ１４は汎用レジスタ１６及び命令デコーダ１８に接続されている。命令デコーダ１８は、更に第２の実行ユニット２０及び第１の実行ユニット３６に接続されている。汎用レジスタ（ＧＰＲ）１６は第２の実行ユニット２０に対して、ソースデータ１及びソースデータ２を転送すると共に、ソースデータ１を転送するソースデータラインＳＤ１Ｌ、ソースデータ２を転送するソースデータラインＳＤ２Ｌを介して、第１の実行ユニット３６に接続されている。第２の実行ユニット２０には算術論理演算装置（ＡＬＵ）２２及びシフトレジスタ２４が含まれており、更に第２の実行ユニット２０からはデータキャッシュ２６及びデータＲＡＭ２８に対してバスラインが延長している。更にまた、第１の実行ユニット３６からの演算結果ＡＬＲを転送するラインは、第２の実行ユニット２０の出力ライン、データキャッシュ２６及びデータＲＡＭ２８の出力ラインに共通に接続されている。更にこの共通に接続された出力ラインは汎用レジスタ１６にフィードバックされている。
【００１４】
上記プロセッサコア１０は拡張可能なプロセッサコアである。プロセッサコア１０の外部にアプリケーションに適した演算回路などの拡張部３２を付加し、高性能化を図るものである。この拡張部３２にフィールドプログラマブルゲートアレイ（ＦＰＧＡ）などからなる再構成可能な論理回路を用いることで、ひとつのＬＳＩで複数のアプリケーションに対応させることや、あるいはアプリケーション内で拡張部３２の機能を変更することで効率のよい演算器とすることができる。
【００１５】
本発明の実施の形態に係る「拡張可能なプロセッサ」とは、プロセッサコアの外部に拡張部を備えるプロセッサである。その一例として、拡張部が「再構成可能な」論理回路等の演算器の構成を有する場合には、再構成可能な演算器を有するプロセッサも本発明の実施の形態に係る「拡張可能なプロセッサ」に含まれるものとする。本発明の第１の実施の形態においては、基本構成の説明と共に、プロセッサコアのクロックを停止させる動作モードに特徴を有する拡張可能なプロセッサについて説明する。本発明の第２の実施の形態においては、プロセッサコアのパイプラインを停止させる動作モードに特徴を有する拡張可能なプロセッサについて説明する。本発明の第３及び第４の実施の形態においては、拡張部において再構成可能な論理回路を有する拡張可能なプロセッサについて説明する。
【００１６】
（第１の実施の形態）
まず、本発明の実施の形態に係る拡張可能なプロセッサの基本構成について説明し、次に実施の形態の構成について説明する。
【００１７】
（基本構成）
本発明の第１の実施の形態に係る拡張可能なプロセッサの基本構成は、図１に示すように、プロセッサコア１０と、ダイレクトメモリアクセスコントローラ（ＤＭＡＣ）３０と、拡張部３２と、バスブリッジ５４と、グローバルバスＧＢと制御バスＣＢから構成される。プロセッサコア１０と拡張部３２間には拡張演算インタフェースラインＥＡＬＩ／Ｆが与えられる。更にプロセッサコア１０と拡張部３２間にはソースデータ１を転送するソースデータラインＳＤ１Ｌ、ソースデータ２を転送するソースデータラインＳＤ２Ｌ、拡張命令コードＥＩＣを転送するライン、制御信号ＣＳを転送するライン、演算結果ＡＬＲを転送するラインが配置されている。更にプロセッサコア１０と拡張部３２との間には、制御バスＣＢが接続されている。また拡張部３２とＤＭＡＣ３０との間には、ローカルデータバスＬＤＢが接続されている。またプロセッサコア１０とバスブリッジ５４との間にはプロセッサバスインタフェースラインＰＢＩ／Ｆが接続されている。更に、バスブリッジ５４に対しては、グローバルバスＧＢが接続されている。
【００１８】
プロセッサコア１０は、命令キャッシュ１２と、命令ＲＡＭ１４と、汎用レジスタ１６と、命令デコーダ１８と、第２の実行ユニット２０と、データキャッシュ２６と、データＲＡＭ２８とから構成されている。また、拡張部３２は、命令デコーダ３４と、第１の実行ユニット３６と、制御レジスタ３８と、ローカルメモリ４０とから構成されている。命令キャッシュ１２と命令ＲＡＭ１４は汎用レジスタ１６及び命令デコーダ１８に接続されている。命令デコーダ１８は、更に第２の実行ユニット２０及び命令デコーダ３４に接続されている。汎用レジスタ１６は第２の実行ユニット２０に対して、ソースデータ１及びソースデータ２を転送すると共に、ソースデータラインＳＤ１Ｌ、ソースデータラインＳＤ２Ｌを介して、第１の実行ユニット３６に接続されている。第２の実行ユニット２０にはＡＬＵ２２及びシフトレジスタ２４が含まれており、更に第２の実行ユニット２０からはデータキャッシュ２６及びデータＲＡＭ２８に対してバスラインが延長している。更にまた、演算結果ＡＬＲを転送するラインは、第２の実行ユニット２０の出力ライン、データキャッシュ２６及びデータＲＡＭ２８の出力ラインに共通に接続されている。更にこの共通に接続された出力ラインは汎用レジスタ１６にフィードバックされている。更に、第１の実行ユニット３６とデータＲＡＭ２８との間にはデータＲＡＭインタフェースラインＤＲＩ／Ｆが接続されている。更に、ＤＭＡＣ３０とデータＲＡＭ２８との間にもローカルデータバスＬＤＢが接続されている。
【００１９】
拡張部３２においては、命令デコーダ３４からの信号は第１の実行ユニット３６に転送され、また第１の実行ユニット３６と制御レジスタ３８及びローカルメモリ４０との間において相互に信号が転送されて連絡している。制御レジスタ３８は制御バスＣＢを介してプロセッサコア１０と連絡している。
【００２０】
図１に示すブロック構成図の全体が、システムオンチップ（ＳｏＣ）構成の半導体集積回路を構成しており、同時に一機能ブロックとして、「カスタムプロセッサ」と呼ばれるプロセッサを構成している。ここでグローバルバスＧＢがいわゆるオンチップバスであり、ＳｏＣ内の各ブロックを結んでいる。以下に各部の機能を説明する。
【００２１】
第１の実行ユニット３６はプロセッサコア１０からデータ受け取り演算を行い、演算結果ＡＬＲをプロセッサコア１０に返す。拡張部３２は制御レジスタ３８を備える。制御レジスタ３８に記憶されるデータは、プロセッサコア１０から制御バスＣＢを介して、読み出され、或いは書き込まれる。拡張部３２はローカルメモリ４０を備え、第１の実行ユニット３６がこのローカルメモリ４０のデータを使って演算を行ない、或いは、実行結果をこのローカルメモリ４０に書き込む。また、第１の実行ユニット３６から、プロセッサコア１０内部のメモリを構成するデータＲＡＭ２８にアクセスしてもよい。
【００２２】
ＤＭＡＣ３０はカスタムプロセッサ内部のメモリ（例えば、プロセッサコア１０内のデータＲＡＭ２８）とカスタムプロセッサ外部との間のデータ転送や、カスタムプロセッサ内部同士のデータ転送を行う。拡張部３２がローカルメモリ４０を内蔵することもあり、そのローカルメモリ４０もＤＭＡＣ３０によるデータ転送対象になり得る。
【００２３】
拡張部３２の第１の実行ユニット３６は、プロセッサコア１０内部のデータＲＡＭ２８を使用することにより高性能を実現することができる。また、拡張部３２自身が持つローカルメモリ４０を使用する場合には最適なメモリ構成をとることができるため、さらに高性能を得ることができる。
【００２４】
なお、図１の例で示している、拡張部３２内部の制御レジスタ３８、拡張部３２内部のローカルメモリ４０、プロセッサコア１０内部のデータＲＡＭ２８は必ずしも必要ない。
【００２５】
プロセッサコア１０は、上記機能ブロックの中心となるプロセッサであって、拡張部３２のための拡張演算インタフェースラインＥＡＬＩ／Ｆを備えている。
【００２６】
拡張部３２は、プロセッサコア１０からの指示或いは命令で演算を行う。プロセッサコア１０から送られた拡張命令コードＥＩＣは、命令デコーダ３４において解釈される。第１の実行ユニット３６においては、演算を行う。ローカルメモリ４０は、第１の実行ユニット３６における演算の入力或いは出力用として機能する。制御レジスタ３８は、拡張部３２の動作を制御バスＣＢから行うためのレジスタとして機能する。
【００２７】
ＤＭＡＣ３０は、上記機能ブロック内のデータ転送や、機能ブロック内と機能ブロック外との間のデータ転送を行う。転送情報の設定等はプロセッサコア１０から制御バスＣＢを介して行われる。
【００２８】
バスブリッジ５４は、上記機能ブロック内部と外部（グローバルバスＧＢ）とを接続する。
【００２９】
制御バスＣＢは、拡張部３２やＤＭＡＣ３０内の制御レジスタ３８への書き込みや、制御レジスタ３８からの読み出しを行うためのバス配線である。
【００３０】
拡張演算インタフェースラインＥＡＬＩ／Ｆは、プロセッサコア１０と拡張部３２とが協調して動作するためのインタフェースを構成する。拡張演算インタフェースラインＥＡＬＩ／Ｆには、上述の通り、プロセッサコア１０が拡張部３２に対して命令コードを送る拡張命令コードＥＩＣ、プロセッサコア１０内の汎用レジスタ１６の値を拡張部３２に送るソースデータ１及びソースデータ２、拡張部３２が演算結果をプロセッサコア１０に送る演算結果ＡＬＲ、及びその他の制御信号ＣＳが含まれている。制御信号ＣＳには、拡張部３２に対する命令が有効であることを示す「有効信号」、あるいは逆に実行を無効化する「無効化信号」等が含まれている。
【００３１】
ローカルデータバスＬＤＢは、上述の通り、ＤＭＡＣ３０とローカルメモリ４０との間、及びＤＭＡＣ３０とデータＲＡＭ２８との間に配置されて、上記機能ブロック内部のデータバスとして機能する。
【００３２】
データＲＡＭインタフェースラインＤＲＩ／Ｆは、拡張部３２内部の第１の実行ユニット３６から、プロセッサコア１０内部のデータＲＡＭ２８にアクセスするためのインタフェースであって、具体的には、データの読み出し及び書き込み機能を有する。
【００３３】
プロセッサバスインタフェースラインＰＢＩ／Ｆは、プロセッサコア１０がグローバルバスＧＢにアクセスためのインタフェースとして機能する。
【００３４】
本発明の第１の実施の形態に係る拡張可能なプロセッサは、図２に示すように、図１に示す基本構成において、プロセッサコア１０と拡張部３２との間に更に、プロセッサコア１０に対するクロックＣＬＫを停止させるためのクロックディセーブル信号生成回路４２とクロックゲーティング回路４４を備える点に特徴を有する。クロックディセーブル信号生成回路４２に対しては命令デコーダ１８からの分岐された拡張命令コードＥＩＣが与えられている。クロックゲーティング回路４４はＡＮＤゲート４８とラッチ４６とから構成されている。クロックＣＬＫは拡張部３２とクロックディセーブル信号生成回路４２とクロックゲーティング回路４４に対して共通に与えられている。クロックディセーブル信号生成回路４２の出力はクロックゲーティング回路４４内のラッチ４６に転送され、ＡＮＤゲート４８の出力はプロセッサコア１０に与えられている。
【００３５】
図２においては、拡張部３２に対する拡張命令コードＥＩＣは命令デコーダ１８から出力されているが、命令デコーダ１８の手前から分岐する構成を有していても良い。その場合は、命令デコーダ１８から図２に示すように拡張命令有効信号ＥＩＶＳが拡張部３２に対して出力される。尚、命令デコーダ１８より出力される拡張命令コードＥＩＣを使用する場合も、拡張命令有効信号ＥＩＶＳが拡張部３２に対して入力されている方が実施形態としては通常の構成である。
【００３６】
又、拡張部３２に対するクロックＣＬＫＥは、図２に示すように、クロックＣＬＫと拡張命令有効信号ＥＩＶＳとのＡＮＤゲート５７の出力信号として得ることができる。尚、図２において、プロセッサコア１０の内部構成及び拡張部３２の内部構成については、図１に示した基本構成と同様であるため詳細な説明は省略する。また、図２に示す拡張部３２の内部構成については第１の実行ユニット３６が表示され、図１の拡張部３２内に含まれる制御レジスタ３８及びローカルメモリ４０については表示が省略されている。また、制御レジスタ３８及びローカルメモリ４０については、拡張部３２の外部に配置しても良い。
【００３７】
また、プロセッサコア１０と拡張部３２との間を接続するバス配線等についても、図１に示した基本構成と同様であるため詳細な説明は省略する。
【００３８】
本発明の第１の実施の形態に係る拡張可能なプロセッサの特徴は、図２に示すように、拡張部３２に対する拡張命令コードＥＩＣによりプロセッサコア１０を停止させることでプロセッサコア１０と拡張部３２との同期をとる点にある。例えば、拡張部３２を再構成可能な論理回路を含む構成によって、形成する場合、再構成可能な論理回路が低速であるため、拡張部３２ではひとつの演算を行うために複数クロックを使うことになる。このときプロセッサコア１０のパイプラインは拡張部３２の演算が終了するまで停止（ストール）する必要がある。
【００３９】
本発明の第１の実施の形態に係る拡張可能なプロセッサにおいては、拡張部３２に対する拡張命令コードＥＩＣの一部に停止サイクル数を示すフィールドを設け、その値によってプロセッサコア１０を停止させる。プロセッサコア１０を停止させるために、プロセッサコア１０に供給するクロックＣＬＫＣを停止する。
【００４０】
プロセッサコア１０のクロックＣＬＫＣを停止させるクロックディセーブル信号ＣＤＳを生成するクロックディセーブル信号生成回路４２は、図３に示すように、停止サイクル数ＳＣＹＮが入力されるＯＲゲート５０と、ＯＲゲート５０の出力を一方の入力とする２段から構成されたＯＲゲート５０１，５０２と、ＯＲゲート５０の出力を１段目に接続され、２段のカスケード接続構成からなるフリップフロップ回路５２１，５２２と、ＯＲゲート５０の出力及び２段から構成されたＯＲゲート５０１，５０２の各出力を入力とするマルチプレクサ（ＭＵＸ）５３と、マルチプレクサ５３の出力と拡張命令有効信号ＥＩＶＳとを入力信号とし、クロックディセーブル信号ＣＤＳを出力するＡＮＤゲート５５から構成されている。又図２から明らかなように、また、クロックＣＬＫは、２段のカスケード接続構成からなるフリップフロップ回路５２１，５２２の一方の入力信号となっている。ＯＲゲート５０１，５０２の他方の入力は各２段のカスケード接続構成からなるフリップフロップ回路５２１，５２２の出力に接続されている。また、ＭＵＸ５３に対しては停止サイクル数ＳＣＹＮがゲート信号として与えられている。
【００４１】
例えば、停止サイクル数ＳＣＹＮを示すフィールドが２ビットで構成され、その値が直接、停止サイクル数ＳＣＹＮを示すこととすると、“００”は「停止せず」、“０１”は「１サイクル停止」、“１０”は「２サイクル停止」、“１１”は「３サイクル停止」となる。この回路により生成された信号（クロックディセーブル信号）をクロックゲーティング回路に与えることで、所望の期間クロックを停止させることができる。クロックが停止することで消費電力が低下するという利点もある。
【００４２】
本発明の第１の実施の形態に係る拡張可能なプロセッサでは、拡張命令コードＥＩＣからのみ、停止サイクル数ＳＣＹＮを得ているが、その他の入力信号を用いることもできる。例えば、拡張部３２を再構成した際に基本停止サイクル数を定義し、その値を拡張部３２からクロックディセーブル信号生成回路４２に与えることで、停止サイクル数ＳＣＹＮが決定するという方法である。基本停止サイクル数が２であれば、拡張命令コードＥＩＣ中の停止サイクル数ＳＣＹＮフィールドが“００”のときには２サイクル間停止することになる。
【００４３】
また、本発明の第１の実施の形態に係る拡張可能なプロセッサでは、クロックディセーブル信号生成回路４２をプロセッサコア１０の外部でかつ拡張部３２の外部に配置しているが、クロックディセーブル信号生成回路４２をプロセッサコア１０の内部に配置してもよく、或いはまた、拡張部３２の内部に配置しても実現可能である。
【００４４】
本発明の第１の実施の形態に係る拡張可能なプロセッサにおけるクロックディセーブル信号生成回路４２は、プロセッサコア１０のクロックＣＬＫＣと拡張部３２のクロックＣＬＫＥとが同一位相・同一周波数の場合の回路を想定しているが、拡張部３２のクロックＣＬＫＥがプロセッサコア１０のクロックＣＬＫＣを分周したものである場合においても、クロックＣＬＫの位相を考慮した回路として構成することができる。
【００４５】
（動作モード）
本発明の第１の実施の形態に係る拡張可能なプロセッサにおいて、拡張部３２の命令もプロセッサコア１０と同じクロック数で動作する場合において、クロックＣＬＫに対して、プロセッサコア１０と拡張部３２の命令は、図４に示すように、構成される。プロセッサコア１０のパイプラインは元々は、例えば、命令フェッチ（Ｆ）、命令デコード（Ｄ）、実行（Ｅ）、メモリアクセス（Ｍ）、ライトバック（Ｗ）の５つのステージから構成されていて、それぞれのステージに１クロックずつかかり、オーバーラップして動作する。拡張部３２の命令もプロセッサコア１０と同じクロック数で動作する場合、図４に示すように、クロックＣＬＫに対して、プロセッサコア１０の命令１はＩＮＳ１Ｃ、拡張部３２の命令２はＩＮＳ２Ｅ、プロセッサコア１０の命令３はＩＮＳ３Ｃに示すようにそれぞれ表される。
【００４６】
これに対して、本発明の第１の実施の形態に係る拡張可能なプロセッサにおいて、プロセッサコア１０のクロックＣＬＫＣを止める場合の、プロセッサコア１０と拡張部３２の命令は、図５に示すように構成される。拡張部３２の演算に４クロックかかるとすると、３クロックの間、プロセッサコア１０を停止させることになる。このため、図５に示すように、プロセッサコア１０のクロックＣＬＫＣ及び拡張部３２のクロックＣＬＫＥに対して、プロセッサコア１０の命令１はＩＮＳ１Ｃ、拡張部３２の命令２はＩＮＳ２Ｅ、プロセッサコア１０の命令３はＩＮＳ３Ｃに示すようにそれぞれ表される。つまり、拡張部３２のＩＮＳ２ＥのＥステージが終わるまで先行するＩＮＳ１ＣのＭステージの動作も停止する。同様に、拡張部３２のＩＮＳ２ＥのＥステージが終わるまで先行するＩＮＳ３ＣのＤステージの動作も停止する。
【００４７】
本発明の第１の実施の形態に係る拡張可能なプロセッサによれば、プロセッサコア１０と、拡張部３２とを同期させることができ、速度の遅い論理回路を簡単に使用できるようになる。
【００４８】
（第２の実施の形態）
本発明の第２の実施の形態に係る拡張可能なプロセッサは、図６に示すように、図１に示す基本構成において、プロセッサコア１０と拡張部３２との間に更に、停止要求信号生成回路５６を備える点に特徴を有する。停止要求信号生成回路５６に対しては命令デコーダ１８からの分岐された拡張命令コードＥＩＣが与えられている。停止要求信号生成回路５６の出力は、プロセッサコア１０に与えられている。尚、プロセッサコア１０の内部構成及び拡張部３２の内部構成については、図１に示した基本構成と実質的に同様であるため詳細な説明は省略する。また、図６に示す拡張部３２の内部構成については第１の実行ユニット３６が表示され、図１の拡張部３２内に含まれる制御レジスタ３８及びローカルメモリ４０については表示されていない。この点は、表示が省略されている。また、制御レジスタ３８及びローカルメモリ４０については、拡張部３２の外部に配置しても良い。
【００４９】
また、プロセッサコア１０と拡張部３２との間を接続するバス配線等についても、図１に示した基本構成と同様であるため詳細な説明は省略する
本発明の第２の実施の形態に係る拡張可能なプロセッサは、図６に示すように、図１に示す基本構成において、プロセッサコア１０と拡張部３２との間に更に、停止要求信号生成回路５６を備えることから、プロセッサコア１０のクロックＣＬＫＣを止めるのではなくて、プロセッサコア１０のパイプラインを止める点に特徴を有する。
【００５０】
図６においては、拡張部３２に対する拡張命令コードＥＩＣは命令デコーダ１８から出力されているが、命令デコーダ１８の手前から分岐する構成を有していても良いことは図２に示す第１の実施の形態と同様である。その場合は、命令デコーダ１８から図６に示すように拡張命令有効信号ＥＩＶＳが拡張部３２に対して出力される。尚、命令デコーダ１８より出力される拡張命令コードＥＩＣを使用する場合も、拡張命令有効信号ＥＩＶＳが拡張部３２に対して入力されている方が実施形態としては通常の構成である。
【００５１】
又、拡張部３２に対するクロックＣＬＫＥは、図６に示すように、クロックＣＬＫと拡張命令有効信号ＥＩＶＳとのＡＮＤゲート５７の出力信号として得ることができることも図２に示す第１の実施の形態と同様である。
【００５２】
（動作モード）
前述の如く、プロセッサコア１０のパイプラインは元々は、例えば、命令フェッチ（Ｆ）、命令デコード（Ｄ）、実行（Ｅ）、メモリアクセス（Ｍ）、ライトバック（Ｗ）の５つのステージから構成されていて、それぞれのステージに１クロックずつかかり、オーバーラップして動作する。拡張部３２の命令もプロセッサコア１０と同じクロック数で動作する場合、図４に示すように、クロックＣＬＫに対して、プロセッサコア１０の命令１はＩＮＳ１Ｃ、拡張部３２の命令２はＩＮＳ２Ｅ、プロセッサコア１０の命令３はＩＮＳ３Ｃに示すようにそれぞれ表される。
【００５３】
これに対して、本発明の第２の実施の形態に係る拡張可能なプロセッサにおいて、プロセッサコア１０のパイプラインを止める場合の、プロセッサコア１０と拡張部３２の命令は、図７に示すように構成される。
【００５４】
即ち、クロックＣＬＫを受信した停止要求信号生成回路５６から発生する停止要求信号ＳＲＳがプロセッサコア１０に伝達されると、プロセッサコア１０の命令１はＩＮＳ１Ｃ、拡張部３２の命令２はＩＮＳ２Ｅ、プロセッサコア１０の命令３はＩＮＳ３Ｃに示すようにそれぞれ表される。クロックＣＬＫに対して、停止要求信号ＳＲＳが存在する場合には、図７に示すように、クロックＣＬＫと異なり、対象とする部分だけを停止させることが容易であるため、先行するプロセッサコア１０の命令１を止める必要はなく、この先行するプロセッサコア１０の命令１は先にＷステージまで処理をすませることができる。これに対して、後続するプロセッサコア１０の命令３は、図５に示したプロセッサコアのクロックを停止する動作モードと同様に、Ｄステージにおいて停止され、拡張部３２の命令２のＥステージの終了を待って、Ｅステージが実行される。
【００５５】
（停止要求生成回路）
本発明の第２の実施の形態に係る拡張可能なプロセッサにおける停止要求信号生成回路５６の構成は、図３に示すクロックディセーブル信号生成回路４２と実質的に同様の回路として構成することができる。また、本発明の第２の実施の形態に係る拡張可能なプロセッサにおける停止要求信号生成回路５６は、プロセッサコア１０のクロックＣＬＫと拡張部３２のクロックＣＬＫとが同一位相・同一周波数の場合の回路を想定しているが、拡張部３２のクロックＣＬＫＥがプロセッサコア１０のクロックＣＬＫＣを分周したものである場合においても、クロックＣＬＫの位相を考慮した回路として構成することができ、充分に対応可能である。
【００５６】
（第２の実施の形態の変形例）
本発明の第２の実施の形態の変形例に係る拡張可能なプロセッサは、図６中に示す停止要求信号生成回路５６を再構成可能な論理回路により構成する点に特徴を有する。停止要求信号生成回路５６を再構成可能な論理回路で構成することにより、命令コードのＯＰ部をデコードすることで停止サイクル数ＳＣＹＮを容易に得ることができる。即ち、わざわざ停止サイクル数ＳＣＹＮ用のフィールドを命令コードに持たせる必要がなくなり、ビットパターンの有効活用ができる。
【００５７】
なお、停止サイクル数ＳＣＹＮ用フィールドを持った命令コードとは図８に示すような構成を有する。拡張部３２の命令長が１６ビットで、その内、プロセッサコア１０の汎用レジスタ番号ＧＰＲＮ用に４ビット（１６本分）×２、停止サイクル数ＳＣＹＮ用に２ビットを使うと、ＯＰコードに使えるのは６ビットとなり、命令の種類は最大でも６４個である。図８において、ＧＰＲＮ  Ｓ１とはソース１の汎用レジスタ番号を示し、ＧＰＲＮ  Ｓ２とはソース２の汎用レジスタ番号を示す。実際には即値を使う命令等があるため、更に種類は少なくなる。ここで、停止サイクル数ＳＣＹＮ用の２ビットが不要となると、ＯＰコードには８ビット使えることになり、最大２５６個の命令を定義できることになる。
【００５８】
また、本発明の第１の実施の形態に係る拡張可能なプロセッサでは、プロセッサコア１０のクロックＣＬＫＣを停止することでプロセッサコア１０を停止させる方法を示したが、同じクロックディセーブル信号ＣＤＳをパイプラインのストールを要求する信号として利用することで、本発明の第２の実施の形態に係る拡張可能なプロセッサと同様に、プロセッサコア１０のパイプラインを停止させることも可能である。
【００５９】
（第３の実施の形態）
本発明の第３の実施の形態に係る拡張可能なプロセッサの基本構成は、図９に示すように、プロセッサコア１０と、ＤＭＡＣ３０と、拡張部３２とから構成される。プロセッサコア１０と拡張部３２間には拡張演算インタフェースラインＥＡＬＩ／Ｆが与えられる。更にプロセッサコア１０と拡張部３２間にはソースデータ１を転送するソースデータラインＳＤ１Ｌ、ソースデータ２を転送するソースデータラインＳＤ２Ｌ、拡張命令コードＥＩＣを転送するライン、制御信号ＣＳを転送するライン、演算結果ＡＬＲを転送するラインが配置されている。更にプロセッサコア１０と拡張部３２との間には、制御バスＣＢが接続されている。また拡張部３２とＤＭＡＣ３０との間には、ローカルデータバスＬＤＢが接続されている。またプロセッサコア１０にはプロセッサバスインタフェースラインＰＢＩ／Ｆが接続されている。
【００６０】
プロセッサコア１０は、命令キャッシュ１２と、命令ＲＡＭ１４と、汎用レジスタ１６と、命令デコーダ１８と、第２の実行ユニット２０と、データキャッシュ２６と、データＲＡＭ２８とから構成されている。また、拡張部３２は、命令デコーダ３４と、再構成可能な第１の実行ユニット３７と、制御レジスタ３８と、ローカルメモリ４０とから構成されている。命令キャッシュ１２と命令ＲＡＭ１４は汎用レジスタ１６及び命令デコーダ１８に接続されている。命令デコーダ１８は、更に第２の実行ユニット２０及び命令デコーダ３４に接続されている。汎用レジスタ１６は第２の実行ユニット２０に対して、ソースデータ１及びソースデータ２を転送すると共に、ソースデータ１を転送するソースデータラインＳＤ１Ｌ、ソースデータ２を転送するソースデータラインＳＤ２Ｌを介して、再構成可能な第１の実行ユニット３７に接続されている。第２の実行ユニット２０にはＡＬＵ２２及びシフトレジスタ２４が含まれており、更に第２の実行ユニット２０からはデータキャッシュ２６及びデータＲＡＭ２８に対してバスラインが延長している。更にまた、再構成可能な第１の実行ユニット３７からの演算結果ＡＬＲを転送するラインは、第２の実行ユニット２０の出力ライン、データキャッシュ２６及びデータＲＡＭ２８の出力ラインに共通に接続されている。更にこの共通に接続された出力ラインは汎用レジスタ１６にフィードバックされている。更に、再構成可能な第１の実行ユニット３７とデータＲＡＭ２８との間にはデータＲＡＭインタフェースラインＤＲＩ／Ｆが接続されている。更に、ＤＭＡＣ３０とデータＲＡＭ２８との間にはローカルデータバスＬＤＢが接続されている。更に、ＤＭＡＣ３０と再構成可能な第１の実行ユニット３７との間にはコンフィグレーションインタフェースラインＣＯＮＩ／Ｆが接続されている。拡張部３２においては、命令デコーダ３４からの信号は再構成可能な第１の実行ユニット３７に転送され、また再構成可能な第１の実行ユニット３７と制御レジスタ３８及びローカルメモリ４０との間において相互に信号が転送されて連絡している。制御レジスタ３８は制御バスＣＢを介してプロセッサコア１０と連絡している。上記拡張演算インタフェースラインＥＡＬＩ／Ｆの中には、拡張命令コードＥＩＣ、ソースデータ１ラインＳＤ１Ｌ、ソースデータ２ラインＳＤ２Ｌ、制御信号ＣＳ、演算結果ＡＬＲが含まれている。
【００６１】
図９に示すブロック構成図の全体が、システムオンチップ（ＳｏＣ）構成の半導体集積回路を構成しており、同時に一機能ブロックとして、「カスタムプロセッサ」と呼ばれるプロセッサを構成している。ここでグローバルバスＧＢ（図９上では省略）がいわゆるオンチップバスであり、ＳｏＣ内の各ブロックを結んでいる。以下に各部の機能を説明する。
【００６２】
プロセッサコア１０は、上記機能ブロックの中心となるプロセッサであって、拡張部３２のための拡張演算インタフェースラインＥＡＬＩ／Ｆを備えている。
【００６３】
拡張部３２は、プロセッサコア１０からの指示或いは命令で演算を行う。プロセッサコア１０から送られた拡張命令コードＥＩＣは、命令デコーダ３４において解釈する。再構成可能な第１の実行ユニット３７においては、演算を行う。ローカルメモリ４０は、再構成可能な第１の実行ユニット３７における演算の入力或いは出力用として機能する。制御レジスタ３８は、拡張部３２の動作を制御バスＣＢから行うためのレジスタとして機能する。
【００６４】
拡張演算インタフェースラインＥＡＬＩ／Ｆは、プロセッサコア１０と拡張部３２とが協調して動作するためのインタフェースを構成する。拡張演算インタフェースラインＥＡＬＩ／Ｆには、上述の通り、プロセッサコア１０が拡張部３２に対して命令コードを送る拡張命令コードＥＩＣ、プロセッサコア１０内の汎用レジスタ１６の値を拡張部３２に送るソースデータ１及びソースデータ２、拡張部３２が演算結果をプロセッサコア１０に送る演算結果ＡＬＲ、及びその他の制御信号ＣＳが含まれている。制御信号ＣＳには、拡張部３２に対する命令が有効であることを示す「有効信号」、あるいは逆に実行を無効化する「無効化信号」等が含まれている。
【００６５】
ローカルデータバスＬＤＢは、上述の通り、ＤＭＡＣ３０とローカルメモリ４０との間、及びＤＭＡＣ３０とデータＲＡＭ２８との間に配置されて、上記機能ブロック内部のデータバスとして機能する。
【００６６】
データＲＡＭインタフェースラインＤＲＩ／Ｆは、拡張部３２内部の再構成可能な第１の実行ユニット３７から、プロセッサコア１０内部のデータＲＡＭ２８にアクセスするためのインタフェースであって、具体的には、データの読み出し及び書き込み機能を有する。
【００６７】
プロセッサバスインタフェースラインＰＢＩ／Ｆは、プロセッサコア１０がグローバルバスＧＢ（図示省略）にアクセスためのインタフェースとして機能する。
【００６８】
再構成可能な第１の実行ユニット３７は、具体的には再構成可能な論理回路から構成されている。再構成可能な論理回路とは、例えばフィールドプログラマブルゲートアレイ（ＦＰＧＡ）等の回路である。
【００６９】
ＤＭＡＣ３０は、上記機能ブロック内のデータ処理用のデータ転送や、機能ブロック内と機能ブロック外との間のデータ転送及び再構成可能な第１の実行ユニット３７のコンフィグレーション用データ転送に使用する。転送情報の設定等はプロセッサコア１０から制御バスＣＢを介して行われる。
【００７０】
制御バスＣＢは、拡張部３２やＤＭＡＣ３０内の制御レジスタ３８への書き込みや、制御レジスタ３８からの読み出しを行うためのバス配線である。再構成可能な第１の実行ユニット３７のデータ処理モードとコンフィグレーションモードとの切り替えを指示する信号が制御バスＣＢを介して転送されている。
【００７１】
本発明の第３の実施の形態に係る拡張可能なプロセッサは、例えばＦＰＧＡからなる再構成可能な論理回路を拡張部３２内の再構成可能な第１の実行ユニット３７として用いるカスタムプロセッサに相当する。再構成可能な第１の実行ユニット３７とは、具体的には再構成可能な演算器を構成するものである。再構成可能な論理回路を、拡張部３２の演算器として用いることで、アプリケーションに応じて拡張部３２の機能を変更できるようになる。このことにより、同一のカスタムプロセッサで異なるアプリケーション／機能に対応することができる。即ち、当初とは異なる機能に変更したりすることができる。また、ダイナミックに再構成することにより、アプリケーション内で、機能を時間ごとに切り替えて実行することもできる。この場合には、異なる複数の機能を同一の拡張部３２で実行するので、従来複数の演算器が必要であったものが、１つの演算器で構成できることになる。
【００７２】
再構成可能な論理回路には一般的に構成変更用のコンフィグレーションインタフェースラインＣＯＮＩ／Ｆがついており、このＣＯＮＩ／Ｆから構成情報を与えることで論理が組み変わる。構成情報はＤＭＡＣ３０によるデータ転送で与えることができる。たとえばカスタムプロセッサ外部のメモリから拡張部３２へ構成情報を転送することに再構成を行なうことができる。
【００７３】
拡張部３２が内部に例えば、データＲＡＭ２８を有する場合には、ＤＭＡＣ３０はこのデータＲＡＭ２８に対するデータ転送も行う。このとき、ＤＭＡＣ３０と拡張部３２とのインタフェースは通常データ転送用と再構成用との２系統に分ける実装構成としても良いし、１系統にしておいて拡張部３２内部で分岐する実装構成としてもよい。
【００７４】
一般に再構成可能な論理回路は速度面において遅いため、不利であるので、並列動作させることで高性能を得ようとする。この場合、データの供給能力に問題を生じることがあるが、本発明の第３の実施の形態に係る拡張可能なプロセッサの構成においては、至近のメモリを利用できるため効率よくデータを提供できる。拡張部３２内部のメモリを使用する場合には最適な構成をとることができるためさらに効率がよくなり、高性能を得ることができる。
【００７５】
（第３の実施の形態の変形例１）
本発明の第４の実施の形態に係る拡張可能なプロセッサにおいては、図９に示すように、拡張部３２内の命令デコーダ３４が再構成可能な第１の実行ユニット３７の外部に配置されている構成例が示されているが、この構成に限られるものではない。命令デコーダ３４そのものを再構成可能な第１の実行ユニット３７と同一の論理回路で構成することもできる。この場合には、命令デコーダ３４は再構成可能な第１の実行ユニット３７内に構成されることになる。
【００７６】
（第３の実施の形態の変形例２）
本発明の第３の実施の形態に係る拡張可能なプロセッサにおいては、上述のごとく再構成可能な第１の実行ユニット３７のデータ処理モードとコンフィグレーションモードとの切り替えを指示する信号が制御バスＣＢを介して転送されている。しかしながら、モード切替は必ずしも制御バスＣＢを介して行う必要はない。図９内に示されるコンフィグレーション用のデータ転送用のＣＯＮＩ／Ｆを使用しても良い。
【００７７】
（第４の実施の形態）
再構成可能な論理回路には、コンフィグレーション用のデータを与える必要がある。本発明の第４の実施の形態に係る拡張可能なプロセッサにおいては、このコンフィグレーション用のデータを拡張部３２内部のローカルメモリ４０に蓄えておく点に特徴を有する。ローカルメモリ４０に供給されるデータは、ＤＭＡＣ３０からローカルデータバスＬＤＢを介して伝達される。ＤＭＡＣ３０は、外部メモリに蓄積されているデータをローカルメモリ４０に転送する。外部メモリからのデータは、バスブリッジ（図示省略）及びグローバルバスＧＢ（図示省略）を介してＤＭＡＣ３０に転送される。或いは又、プロセッサコア１０の内部のデータＲＡＭ２８を外部メモリとして利用することもできる。この場合には、データＲＡＭ２８に接続されたローカルデータバスＬＤＢを通してＤＭＡＣ３０へデータが転送され、更にＤＭＡＣ３０を介してローカルメモリ４０にデータが書き込まれる。
【００７８】
本発明の第４の実施の形態に係る拡張可能なプロセッサの基本構成は、図１０に示すように、プロセッサコア１０と、ＤＭＡＣ３０と、拡張部３２とから構成される。プロセッサコア１０と拡張部３２の内部構成は実質的に図９と同様であるため説明を省略する。また、プロセッサコア１０と拡張部３２との間のバス配線等についても、実質的に図９と同様であるため、説明を省略する。
【００７９】
再構成可能な第１の実行ユニット３７においては、演算を行う。ローカルメモリ４０は、再構成可能な第１の実行ユニット３７における演算の入力或いは出力用として機能する。特に、本発明の第４の実施の形態に係る拡張可能なプロセッサにおいては、再構成可能な論理回路には、コンフィグレーション用のデータを与える必要があり、このコンフィグレーション用のデータを上述の通り、拡張部３２内部のローカルメモリ４０に蓄積している。
【００８０】
ローカルデータバスＬＤＢは、上述の通り、ＤＭＡＣ３０とローカルメモリ４０との間、及びＤＭＡＣ３０とデータＲＡＭ２８との間に配置されて、上記機能ブロック内部のデータバスとして機能する。
【００８１】
データＲＡＭインタフェースラインＤＲＩ／Ｆは、拡張部３２内部の再構成可能な第１の実行ユニット３７から、プロセッサコア１０内部のデータＲＡＭ２８にアクセスするためのインタフェースであって、具体的には、データの読み出し及び書き込み機能を有する。
【００８２】
プロセッサバスインタフェースラインＰＢＩ／Ｆは、プロセッサコア１０がグローバルバスＧＢ（図示省略）にアクセスためのインタフェースとして機能する。
【００８３】
再構成可能な第１の実行ユニット３７は、具体的には再構成可能な論理回路から構成されている。再構成可能な論理回路とは、例えばフィールドプログラマブルゲートアレイ（ＦＰＧＡ）等の回路である。
【００８４】
ＤＭＡＣ３０は、上記機能ブロック内のデータ処理用のデータ転送や、機能ブロック内と機能ブロック外との間のデータ転送及び再構成可能な第１の実行ユニット３７のコンフィグレーション用データ転送に使用する。転送情報の設定等はプロセッサコア１０から制御バスＣＢを介して行われる。
【００８５】
制御バスＣＢは、拡張部３２やＤＭＡＣ３０内の制御レジスタ３８への書き込みや、状態レジスタからの読み出しを行うためのバス配線である。再構成可能な第１の実行ユニット３７のデータ処理モードとコンフィグレーションモードとの切り替えを指示する信号が制御バスＣＢを介して転送されている。
【００８６】
本発明の第４の実施の形態に係る拡張可能なプロセッサは、例えばＦＰＧＡからなる再構成可能な論理回路を拡張部３２内の再構成可能な第１の実行ユニット３７として用いるカスタムプロセッサに相当する。再構成可能な第１の実行ユニット３７とは、具体的には再構成可能な演算器を構成するものである。再構成可能な論理回路を、拡張部３２の演算器として用いることで、アプリケーションに応じて拡張部３２の機能を変更できるようになる。このことにより、同一のカスタムプロセッサで異なるアプリケーション／機能に対応することができる。即ち、当初とは異なる機能に変更したりすることができる。また、ダイナミックに再構成することにより、アプリケーション内で、機能を時間ごとに切り替えて実行することもできる。この場合には、異なる複数の機能を同一の拡張部３２で実行するので、従来複数の演算器が必要であったものが、１つの演算器で構成できることになる。
【００８７】
拡張部３２が内部に、例えばデータＲＡＭのような、メモリを有する場合には、ＤＭＡＣ３０はこのメモリに対するデータ転送も行う。このとき、ＤＭＡＣ３０と拡張部３２とのインタフェースは通常データ転送用と再構成用との２系統に分ける実装構成としても良いし、１系統にしておいて拡張部内部で分岐する実装構成としてもよい。
【００８８】
一般に再構成可能な論理回路は速度面において遅いため、不利であるので、並列動作させることで高性能を得ようとする。この場合、データの供給能力に問題を生じることがあるが、本発明の第４の実施の形態に係る拡張可能なプロセッサの構成では、至近のメモリを利用できるため効率よくデータを提供できる。拡張部３２内部のメモリを使用する場合には最適な構成をとることができるためさらに効率がよくなり、高性能を得ることができる。
【００８９】
（第４の実施の形態の変形例１）
本発明の第４の実施の形態に係る拡張可能なプロセッサにおいては、図１０に示すように、拡張部３２内の命令デコーダ３４が再構成可能な第１の実行ユニット３７の外部に配置されている構成例が示されているが、この構成に限られるものではない。命令デコーダ３４そのものを再構成可能な第１の実行ユニット３７と同一の論理回路で構成することもできる。この場合には、命令デコーダ３４は再構成可能な第１の実行ユニット３７内に構成されることになる。
【００９０】
（第４の実施の形態の変形例２）
本発明の第４の実施の形態に係る拡張可能なプロセッサにおいては、上述のごとく再構成可能な第１の実行ユニット３７のデータ処理モードとコンフィグレーションモードとの切り替えを指示する信号が制御バスＣＢを介して転送されている。しかしながら、モード切替は必ずしも制御バスＣＢを介して行う必要はない。
【００９１】
図１０において、たとえば、コンフィグレーション用データをＤＭＡＣ３０で拡張部３２のローカルメモリ４０に転送し、そのとき同時に再構成可能な第１の実行ユニット３７がプロセッサコア１０のデータＲＡＭ２８にアクセスしてデータ処理を実行することでき、コンフィグレーション用データ転送のオーバーヘッドを隠蔽することが可能となる。
【００９２】
本発明はここでは記載していない様々な実施例等を含むことは勿論である。したがって、本発明の技術的範囲は上記の説明から妥当な以下のクレイムによってのみ定められるものである。
【００９３】
（その他の実施の形態）
上記のように、本発明は実施の形態によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例及び運用技術が明らかとなろう。したがって、本発明の技術範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【００９４】
【発明の効果】
本発明の拡張可能なプロセッサ及び半導体集積回路によれば、拡張部に対する命令コードにより、プロセッサコアのクロック若しくはパイプラインを停止させることでプロセッサコアと拡張部との同期をとることができ、高効率で高性能な拡張可能なプロセッサ及びシステムオンチップの半導体集積回路を提供することができる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態に係る拡張可能なプロセッサの基本構成図。
【図２】本発明の第１の実施の形態に係る拡張可能なプロセッサの模式的ブロック構成図。
【図３】本発明の第１の実施の形態に係る拡張可能なプロセッサにおいて使用するクロックディセーブル信号生成回路の模式的構成例。
【図４】本発明の第１の実施の形態に係る拡張可能なプロセッサにおいて、拡張部３２の命令もプロセッサコア１０と同じクロック数で動作する場合において、クロックＣＬＫに対して、プロセッサコア１０と拡張部３２の命令構成例を示す図。
【図５】本発明の第１の実施の形態に係る拡張可能なプロセッサにおいて、プロセッサコア１０のクロックＣＬＫＣを止める場合の、プロセッサコア１０と拡張部３２の命令構成例を示す図。
【図６】本発明の第２の実施の形態に係る拡張可能なプロセッサの模式的ブロック構成図。
【図７】本発明の第２の実施の形態に係る拡張可能なプロセッサにおいて、プロセッサコア１０のパイプラインを止める場合の、プロセッサコア１０と拡張部３２の命令構成例を示す図。
【図８】停止サイクル数ＳＣＹＮ用フィールドを持った命令コードの構成図。
【図９】本発明の第３の実施の形態に係る拡張可能なプロセッサの模式的ブロック構成図。
【図１０】本発明の第４の実施の形態に係る拡張可能なプロセッサの模式的ブロック構成図。
【図１１】本発明の比較例としての拡張可能なプロセッサの模式的ブロック構成図。
【符号の説明】
１０・・・プロセッサコア
１２・・・命令キャッシュ
１４・・・命令ＲＡＭ
１６・・・汎用レジスタ
１８，３４・・・命令デコーダ
２０…第２の実行ユニット
２２・・・算術論理演算装置（ＡＬＵ）
２４・・・シフトレジスタ
２６・・・データキャッシュ
２８・・・データＲＡＭ
３０・・・ダイレクトメモリアクセスコントローラ（ＤＭＡＣ）
３２・・・拡張部
３６・・・第１の実行ユニット
３７・・・再構成可能な第１の実行ユニット
３８・・・制御レジスタ
４０・・・ローカルメモリ
４２・・・クロックディセーブル信号生成回路
４４・・・クロックゲーティング回路
４６…ラッチ
５２１，５２２・・・フリップフロップ回路
４８，５１・・・ＡＮＤゲート
５０，５０１，５０２・・・ＯＲゲート
５３・・・マルチプレクサ（ＭＵＸ）
５４・・・バスブリッジ
５５，５７…ＡＮＤゲート
５６・・・停止要求信号生成回路
ＣＢ・・・制御バス
ＥＡＬＩ／Ｆ・・・拡張演算インタフェースライン
ＳＤ１Ｌ，  ＳＤ２Ｌ・・・ソースデータライン
ＣＳ・・・制御信号
ＡＬＲ・・・演算結果
ＤＲＩ／Ｆ・・・データＲＡＭインタフェースライン
ＬＤＢ・・・ローカルデータバス
ＰＢＩ／Ｆ・・・プロセッサバスインタフェースライン
ＥＩＣ・・・拡張命令コード
ＥＩＶＳ…拡張命令有効信号
ＣＬＫ，  ＣＬＫＣ，  ＣＬＫＥ・・・クロック
ＣＯＮＩ／Ｆ・・・コンフィグレーションインタフェースライン
ＳＲＳ・・・停止要求信号
ＩＮＳ１Ｃ・・・命令１コア
ＩＮＳ２Ｅ・・・命令２拡張
ＩＮＳ３Ｃ・・・命令３コア
ＧＰＲＮ・・・汎用レジスタ番号
ＧＢ・・・グローバルバス
ＳＣＹＮ・・・停止サイクル数
ＣＤＳ・・・クロックディセーブル信号
【図１】
2004362215.tif 000003
【図２】
2004362215.tif 000004
【図３】
2004362215.tif 000005
【図４】
2004362215.tif 000006
【図５】
2004362215.tif 000007
【図６】
2004362215.tif 000008
【図７】
2004362215.tif 000009
【図８】
2004362215.tif 000010
【図９】
2004362215.tif 000011
【図１０】
2004362215.tif 000012
【図１１】
2004362215.tif 000013
【手続補正書】
【提出日】平成15年10月23日(2003.10.23)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
汎用レジスタと命令デコーダと第２の実効ユニットとを備えるプロセッサコアと、
前記プロセッサコアに接続される第１の実行ユニットを備える拡張部と、
前記プロセッサコアと前記拡張部の双方に接続されるダイレクトメモリアクセスコントローラ
とを備えることを特徴とするプロセッサ。
【請求項２】
前記プロセッサコアと前記拡張部との間に接続される制御バスを更に備えることを特徴とする請求項１記載のプロセッサ。
【請求項３】
前記命令デコーダからの拡張命令コードを受信して、クロックディセーブル信号を出力するクロックディセーブル信号生成回路を更に備えることを特徴とする請求項１又は２記載のプロセッサ。
【請求項４】
前記クロックディセーブル信号を受信して前記プロセッサコアのクロック停止する信号を前記プロセッサコアに伝達するクロックゲーティング回路を更に備えることを特徴とする請求項３記載のプロセッサ。
【請求項５】
半導体チップと、
該半導体チップ上に集積化され、汎用レジスタと命令デコーダと第２の実効ユニットとを備えるプロセッサコアと、
該半導体チップ上に集積化され、前記プロセッサコアに接続される第１の実行ユニットを備える拡張部と、
該半導体チップ上に集積化され、前記プロセッサコアと前記拡張部の双方に接続されるダイレクトメモリアクセスコントローラ
とを備えることを特徴とする半導体集積回路。