(57)【要約】【課題】分散処理の自由度が高くして、各プロセッサ（ＣＰＵ）の処理負荷を最小にすることができ、動作周波数の低減や電源電圧の降圧により大きな消費電力の削減を図ること。【解決手段】非対称マルチプロセッサ１００は、各ＣＰＵコア１０１ａ，１０１ｂから任意のハードウェアリアクセラレータの使用許可を要求する要求信号の調停を行うハードウェアリソース調停部１１０と、スレーブ接続する動的再構成型信号処理プロセッサ部１０７の信号処理内容を選択する信号処理内容選択部１１１と、各グループ間のクロックの位相関係を任意にずらす制御を行うクロックスキュー調停部１１２と、及びクロックスキュー選択イネーブル信号１１４を基にクロック信号を遅延させるクロック遅延生成部１１３ａ〜１１３ｇとを備える。【選択図】図１
2007328461.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサコアと複数のハードウェアアクセラレータとがバスを介して接続された非対称マルチプロセッサであって、
前記各プロセッサコアから任意のハードウェアリアクセラレータの使用許可を要求する要求信号の調停を行うハードウェアリソース調停部を備え、
前記ハードウェアリソース調停部により要求信号の調停を受けた前記プロセッサコアが、任意のハードウェアアクセラレータを使用することを特徴とする非対称マルチプロセッサ。
【請求項２】
第１のプロセッサコアと第１のプロセッサコアから信号処理の実行を要求するハードウェアアクセラレータからなる第１の信号処理グループと、第２のプロセッサコアと第２のプロセッサコアから信号処理の実行を要求するハードウェアアクセラレータから構成される第２信号処理グループと、第３以降のプロセッサコアと第３以降のプロセッサコアから信号処理の実行を要求したハードウェアアクセラレータから構成される第３信号処理以降のグループとの間で、クロックの位相関係を任意にずらす制御を行うクロックスキュー調停部を備えることを特徴とする請求項１記載の非対称マルチプロセッサ。
【請求項３】
さらに、前記各グループのクロック入力部に、供給されるクロック信号を遅延して各グループ間のクロック位相を任意にずらすクロック遅延生成部を備えることを特徴とする請求項２記載の非対称マルチプロセッサ。
【請求項４】
前記複数のプロセッサコアが、前記バスを介して複数のＤＳＰコアに接続されており、
前記ハードウェアリソース調停部は、前記各プロセッサコアから発行される任意のＤＳＰ使用許可要求信号を調停し、
前記ハードウェアリソース調停部によりＤＳＰ使用許可要求信号の調停を受けたプロセッサコアが任意のＤＳＰコアによる信号処理プログラムを実行することを特徴とする請求項１記載の非対称マルチプロセッサ。
【請求項５】
前記１つのプロセッサコアが、複数のＤＳＰコアをスレーブ接続しており、該当する前記複数のＤＳＰコアが前記プロセッサコアからの割込み信号をトリガにして１つのタスクを並列信号処理することを特徴とする請求項１記載の非対称マルチプロセッサ。
【請求項６】
前記ハードウェアリソース調停部は、前記プロセッサコアからＤＳＰコアに格納されたプログラムの中で各信号処理の先頭アドレスに相当する情報が入力されると、該当するＤＳＰプログラムが起動するように制御することを特徴とする請求項１記載の非対称マルチプロセッサ。
【請求項７】
複数のＤＳＰコアを有し、
前記ハードウェアリソース調停部は、マルチＤＳＰ処理を行わせることを示す制御信号又は制御ビットのＯＮを受けて、第１のＤＳＰコアの命令メモリからフェッチしたコマンドを第１のＤＳＰコア又は第２のＤＳＰコアを含む複数のＤＳＰコアに送り、前記コマンドが送られた前記複数のＤＳＰコアが、並列信号処理を実行することを特徴とする請求項１記載の非対称マルチプロセッサ。
【請求項８】
複数のＤＳＰコアを有し、各ＤＳＰコアは、他のＤＳＰコアの命令メモリからも命令フェッチが可能であり、
前記ハードウェアリソース調停部は、１つのプロセッサコアが複数のＤＳＰコアを選択して並列動作させる場合に、該当するプロセッサコアが第１のＤＳＰコアにおける命令メモリの開始アドレスを指定すると、そのアドレスの命令を複数のＤＳＰコアへ同時にフェッチさせ、各ＤＳＰコアがマルチプロセッシング処理を行うように制御することを特徴とする請求項１記載の非対称マルチプロセッサ。
【請求項９】
前記ハードウェアリソース調停部は、同一の命令ＲＡＭからのフェッチで複数のＤＳＰコアによる信号処理を実行させるとき、ＤＳＰの並列処理モード時は、第２以降のＤＳＰコアのアドレッシングが第１のＤＳＰコアに対して相対補正を行うことを特徴とする請求項１記載の非対称マルチプロセッサ。
【請求項１０】
さらに、１つのプロセッサコアが輻輳する複数のＤＳＰコアを選択する際、相対的にプログラムの開始アドレスに相当する信号を一方のＤＳＰコアに対して発行すると、他方のＤＳＰコアも同時に並列処理を行うように制御する輻輳ＤＳＰコア調停部を備えることを特徴とする請求項１記載の非対称マルチプロセッサ。
【請求項１１】
さらに、第１のプロセッサコア、第２のプロセッサコア、又はその他のプロセッサコアが、前記バスを介して動的再構成可能なプロセッサに接続されており、
前記各プロセッサコアから前記動的再構成可能なプロセッサの使用許可要求信号を調停するとともに、該当プロセッサコアが要求した信号処理に対応したコンフィグレーション情報を前記動的再構成可能なプロセッサへ発行するコンフィグレーション信号選択部を備え、
前記コンフィグレーション信号選択部により発行されたコンフィグレーション情報を受けた前記動的再構成可能なプロセッサが、前記プロセッサコアが要求した信号処理を実行することを特徴とする請求項１記載の非対称マルチプロセッサ。
【請求項１２】
第１のプロセッサコアと、第２のプロセッサコア、又は第３以降のプロセッサが同時に信号処理を行う場合、前記第１のプロセッサコアとそれにスレーブ接続されるハードウェアアクセラレータ、ＤＳＰコア又は再構成可能なプロセッサに供給されるクロック信号の位相に対して、前記第２のプロセッサコアとそれにスレーブ接続されるハードウェアアクセラレータ、ＤＳＰコア又は再構成可能なプロセッサに供給されるクロック信号の位相、あるいは第３以降のＣＰＵとそれにスレーブ接続される信号処理回路資源に供給されるクロック信号の位相に所定の位相差をつけることを特徴とする請求項１記載の非対称マルチプロセッサ。
【請求項１３】
信号処理量を分割して複数のプロセッサコア、ＤＳＰコア、又はハードウェアアクセラレータがマルチプロセッシングを行う場合、単一プロセッサで信号処理する場合より、電源電圧、クロック周波数、又は基板のバイアス電圧の少なくともいずれか１つを下げる電力マネージメントモードを設定することを特徴とする請求項１記載の非対称マルチプロセッサ。
【請求項１４】
第１のプロセッサコアとそれにスレーブ接続されるハードウェアアクセラレータ、ＤＳＰコア又は再構成可能なプロセッサで信号処理を行う期間に、第２のプロセッサコアとそれにスレーブ接続されるハードウェアアクセラレータ、ＤＳＰコア又は再構成可能なプロセッサによって信号処理を行う必要がない場合、前記第２のプロセッサコアとそれにスレーブ接続されるハードウェアアクセラレータ、ＤＳＰコア又は再構成可能なプロセッサに対して電源電圧を遮断する、あるいは電源電圧をメモリやレジスタがデータを記憶保持できる最小電圧まで下げるリテンション機能を実行することを特徴とする請求項１記載の非対称マルチプロセッサ。
【請求項１５】
複数のプロセッサコアがマルチプロセッサとして動作する際に、共通性の高い命令やデータを格納するシェアードメモリを備え、プロセッサコア毎に独自性の高い命令やデータは各プロセッサコアのキャッシュメモリに格納し、
前記複数のプロセッサコアは、前記シェアードメモリと前記キャッシュメモリとを交互にアクセスすることを特徴とする請求項１記載の非対称マルチプロセッサ。
【請求項１６】
前記複数のプロセッサコアは、
動作周波数などのプロセッサ性能と、命令セットと、ビット幅、メモリサイズ、キャッシュサイズ及びパイプライン段数を含むアーキテクチャとのいずれか、あるいは全てが異なる複数のＣＰＵであることを特徴とする請求項１乃至１５のいずれかに記載の非対称マルチプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサ及びメディアプロセッサにおいて、専用信号処理ハードウエア、ＤＳＰ（Digital Signal Processor）、及び再構成可能なプロセッサを制御する非対称マルチプロセッサに関する。
【背景技術】
【０００２】
近年のインターネット接続機能付き携帯電話などに搭載されるプロセッサは、音声処理やベースバンド処理に加え、Ｊａｖａ（登録商標）プログラム処理やｗｅｂ接続制御、オーディオ処理やグラフィック処理、ＭＰＥＧ（Moving Picture Experts Group）などの映像処理、更にはデジタルＴＶやゲームなどを行うことのできる高性能メディアプロセッサエンジン（ＤＳＰやＣＰＵとハードウェアアクセラレータの組み合わせ）で構成されている。このようなマルチメディアプロセッサにおいてはソフトウェア開発効率を上げたりＬＳＩ（Large Scale Integration）に実装する面積を小さくしたり動作電流を削減する手段として分散処理型のマルチプロセッサが期待されている。
【０００３】
従来の非対称マルチプロセッサは、複数のプロセッサが搭載され、それぞれのプロセッサは性能（動作周波数など）や命令セットやアーキテクチャ（ビット幅やメモリサイズ、キャッシュサイズ、パイプライン段数など）のいずれか、あるいは全てが異なっている。
【０００４】
さらに、複数のプロセッサ、例えば複数のＣＰＵが搭載された非対称マルチプロセッサの中には、それぞれのＣＰＵの処理分担（役割分担）が予め決められているケースもあり、この場合それぞれのＣＰＵはその役割分担に応じて専用の信号処理ハードウエア回路（ハードウェアアクセラレータ）やＤＳＰをスレーブ接続する構成を有していた（例えば特許文献１参照）。
【０００５】
図６は、従来の非対称マルチプロセッサの構成を示す図である。
【０００６】
図６において、非対称マルチプロセッサシステム１０は、ＣＰＵコア１１ａ〜１１ｃ（ＣＰＵ＃１〜＃３）、キャッシュメモリ（以下、キャッシュという）１２ａ〜１２ｃ（＄１〜＄３）、ＲＯＭ１３、ＲＡＭ１４、ＣＰＵコア１１ａ（ＣＰＵ＃１）のスレーブ・ハードウェア（以下、適宜ＨＷと略記する）アクセラレータ部１５ａ〜１５ｃ（ＨＷ＃１ａ〜＃１ｃ）、ＣＰＵコア１１ｂ（ＣＰＵ＃２）のスレーブ・ハードウェアアクセラレータ部１６ａ，１６ｂ（ＨＷ＃２ａ，＃２ｂ）、ＣＰＵコア１１ｃ（ＣＰＵ＃３）のスレーブ・ハードウェアアクセラレータ部１７ａ，１７ｂ（ＨＷ＃３ａ，＃３ｂ）などから構成されており、ＣＰＵコア１１ａ〜１１ｃ（ＣＰＵ＃１〜＃３）は、キャッシュメモリ１２ａ〜１２ｃ（＄１〜＄３）及び共通のバス１８を介してＲＯＭ１３及びＲＡＭ１４に相互に接続されている。また、ＣＰＵコア１１ａ（ＣＰＵ＃１）とスレーブ・ハードウェアアクセラレータ部１５ａ〜１５ｃ（ＨＷ＃１ａ〜＃１ｃ）は、ローカルバス１９により接続され、ＣＰＵコア１１ｂ（ＣＰＵ＃２）とスレーブ・ハードウェアアクセラレータ部１６ａ，１６ｂ（ＨＷ＃２ａ，＃２ｂ）は、ローカルバス２０により接続され、ＣＰＵコア１１ｃ（ＣＰＵ＃３）とスレーブ・ハードウェアアクセラレータ部１７ａ，１７ｂ（ＨＷ＃３ａ，＃３ｂ）は、ローカルバス２１により接続される。
【０００７】
上記スレーブ・ハードウェアアクセラレータ部１５ａ〜１５ｃ，１６ａ，１６ｂ，１７ａ，１７ｂの一部は、例えばＤＳＰのほか、ビデオ信号処理ブロック、オーディオ信号処理ブロック、制御信号処理ブロックなど各種の機能ブロックにより構成される。
【特許文献１】特開２００４−２５２９００号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上記異なるプロセッサアーキテクチャ間で、ソフトウェアプログラムで実行される処理を振り分ける技術によれば、１つのプロセッサで行うよりハードウェアリソースを抑制する効果や、処理分担を振り分けた結果、各プロセッサのクロック周波数を低減することで消費電力を抑制できる効果がある。
【０００９】
しかしながら、このような従来の非対称マルチプロセッサにあっては、仕事量の予測可能な複数の単位ジョブを単位ジョブ毎に複数プロセッサに振り分けて実行させるため、予測のアルゴリズムや予測制度によっては低消費電力効果が小さい場合が多い。
【００１０】
一方、特許文献１記載の非対称マルチプロセッサでは、マルチプロセッサの全体構成（プロセッサアーキテクチャ設計）を決定した時点で、各ＣＰＵの処理内容はある程度固定される場合が多く、それに伴い図６の非対称マルチプロセッサのように、ＣＰＵの処理を加速補助するスレーブ・ハードウェアアクセラレータ部１５ａ〜１５ｃ，１６ａ，１６ｂ，１７ａ，１７ｂが、それぞれのＣＰＵコア１１ａ〜１１ｃにローカルバス１９〜２１を介して専用接続される構成となっている。このため、処理するプログラムの内容が変更されて処理量が増えても容易には複数のＣＰＵコア１１ａ〜１１ｃ間で処理量の分担（プログラムのタスク分担）が行えず、自由度の小さい負荷分散となっている。
【００１１】
前者のような非対称マルチプロセッサでも、後者の特許文献１記載の非対称プロセッサにおいても、更には両方の要素を合わせ持った非対称マルチプロセッサであっても複数のＣＰＵやハードウェアアクセラレータやＤＳＰなどが同時に動作するため、ＬＳＩ内部での消費電力の増加が課題となる。
【００１２】
また、分散処理することで動作周波数を可変（又は低減）したり、動作周波数と電源電圧を可変（又は低減）したりして低電力化を図る方法もある。しかし、分散処理を想定したクロックツリーの設計は複雑になり、最大時動作周波数で動作する場合における電源電圧のＩＲドロップ（電圧降下又は電圧変動）や、ダイナミックな電源ノイズが大きくなりＬＳＩの誤動作が問題となる。
【００１３】
本発明は、上記に鑑みてなされたものであり、分散処理の自由度が高くして、各プロセッサ（ＣＰＵ）の処理負荷を最小にすることができ、動作周波数の低減や電源電圧の降圧により大きな消費電力の削減を図ることができる非対称マルチプロセッサを提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明の非対称マルチプロセッサは、複数のプロセッサコアと複数のハードウェアアクセラレータとがバスを介して接続された非対称マルチプロセッサであって、前記各プロセッサコアから任意のハードウェアリアクセラレータの使用許可を要求する要求信号の調停を行うハードウェアリソース調停部を備え、前記ハードウェアリソース調停部により要求信号の調停を受けた前記プロセッサコアが、任意のハードウェアアクセラレータを使用する構成を採る。
【００１５】
また、第１のプロセッサコアと第１のプロセッサコアから信号処理の実行を要求するハードウェアアクセラレータからなる第１の信号処理グループと、第２のプロセッサコアと第２のプロセッサコアから信号処理の実行を要求するハードウェアアクセラレータから構成される第２信号処理グループと、第３以降のプロセッサコアと第３以降のプロセッサコアから信号処理の実行を要求したハードウェアアクセラレータから構成される第３信号処理以降のグループとの間で、クロックの位相関係を任意にずらす制御を行うクロックスキュー調停部を備えることがより好ましい。さらに、前記各グループのクロック入力部に、供給されるクロック信号を遅延して各グループ間のクロック位相を任意にずらすクロック遅延生成部を備えることが好ましい。
【００１６】
また、前記複数のプロセッサコアが、前記バスを介して複数のＤＳＰコアに接続されており、前記ハードウェアリソース調停部は、前記各プロセッサコアから発行される任意のＤＳＰ使用許可要求信号を調停し、前記ハードウェアリソース調停部によりＤＳＰ使用許可要求信号の調停を受けたプロセッサコアが任意のＤＳＰコアによる信号処理プログラムを実行することがより好ましい。
【００１７】
また、前記１つのプロセッサコアが、複数のＤＳＰコアをスレーブ接続しており、該当する前記複数のＤＳＰコアが前記プロセッサコアからの割込み信号をトリガにして１つのタスクを並列信号処理するものであってもよい。
【００１８】
前記ハードウェアリソース調停部は、前記プロセッサコアからＤＳＰコアに格納されたプログラムの中で各信号処理の先頭アドレスに相当する情報が入力されると、該当するＤＳＰプログラムが起動するように制御するものであってもよい。
【００１９】
また、複数のＤＳＰコアを有し、前記ハードウェアリソース調停部は、マルチＤＳＰ処理を行わせることを示す制御信号又は制御ビットのＯＮを受けて、第１のＤＳＰコアの命令メモリからフェッチしたコマンドを第１のＤＳＰコア又は第２のＤＳＰコアを含む複数のＤＳＰコアに送り、前記コマンドが送られた前記複数のＤＳＰコアが、並列信号処理を実行するものであってもよい。
【００２０】
また、複数のＤＳＰコアを有し、各ＤＳＰコアは、他のＤＳＰコアの命令メモリからも命令フェッチが可能であり、前記ハードウェアリソース調停部は、１つのプロセッサコアが複数のＤＳＰコアを選択して並列動作させる場合に、該当するプロセッサコアが第１のＤＳＰコアにおける命令メモリの開始アドレスを指定すると、そのアドレスの命令を複数のＤＳＰコアへ同時にフェッチさせ、各ＤＳＰコアがマルチプロセッシング処理を行うように制御するものであってもよい。
【００２１】
また、前記ハードウェアリソース調停部は、同一の命令ＲＡＭからのフェッチで複数のＤＳＰコアによる信号処理を実行させるとき、ＤＳＰの並列処理モード時は、第２以降のＤＳＰコアのアドレッシングが第１のＤＳＰコアに対して相対補正を行うものであってもよい。
【００２２】
さらに、１つのプロセッサコアが輻輳する複数のＤＳＰコアを選択する際、相対的にプログラムの開始アドレスに相当する信号を一方のＤＳＰコアに対して発行すると、他方のＤＳＰコアも同時に並列処理を行うように制御する輻輳ＤＳＰコア調停部を備えることがより好ましい。
【００２３】
さらに、第１のプロセッサコア、第２のプロセッサコア、又はその他のプロセッサコアが、前記バスを介して動的再構成可能なプロセッサに接続されており、前記各プロセッサコアから前記動的再構成可能なプロセッサの使用許可要求信号を調停するとともに、該当プロセッサコアが要求した信号処理に対応したコンフィグレーション情報を前記動的再構成可能なプロセッサへ発行するコンフィグレーション信号選択部を備え、前記コンフィグレーション信号選択部により発行されたコンフィグレーション情報を受けた前記動的再構成可能なプロセッサが、前記プロセッサコアが要求した信号処理を実行することがより好ましい。
【００２４】
より好ましい具体的な態様として、第１のプロセッサコアと、第２のプロセッサコア、又は第３以降のプロセッサが同時に信号処理を行う場合、前記第１のプロセッサコアとそれにスレーブ接続されるハードウェアアクセラレータ、ＤＳＰコア又は再構成可能なプロセッサに供給されるクロック信号の位相に対して、前記第２のプロセッサコアとそれにスレーブ接続されるハードウェアアクセラレータ、ＤＳＰコア又は再構成可能なプロセッサに供給されるクロック信号の位相、あるいは第３以降のＣＰＵとそれにスレーブ接続される信号処理回路資源に供給されるクロック信号の位相に所定の位相差をつける。
【００２５】
また、信号処理量を分割して複数のプロセッサコア、ＤＳＰコア、又はハードウェアアクセラレータがマルチプロセッシングを行う場合、単一プロセッサで信号処理する場合より、電源電圧、クロック周波数、又は基板のバイアス電圧の少なくともいずれか１つを下げる電力マネージメントモードを設定することがより好ましい。
【００２６】
また、第１のプロセッサコアとそれにスレーブ接続されるハードウェアアクセラレータ、ＤＳＰコア又は再構成可能なプロセッサで信号処理を行う期間に、第２のプロセッサコアとそれにスレーブ接続されるハードウェアアクセラレータ、ＤＳＰコア又は再構成可能なプロセッサによって信号処理を行う必要がない場合、前記第２のプロセッサコアとそれにスレーブ接続されるハードウェアアクセラレータ、ＤＳＰコア又は再構成可能なプロセッサに対して電源電圧を遮断する、あるいは電源電圧をメモリやレジスタがデータを記憶保持できる最小電圧まで下げるリテンション機能を実行するものであってもよい。
【００２７】
また、複数のプロセッサコアがマルチプロセッサとして動作する際に、共通性の高い命令やデータを格納するシェアードメモリを備え、プロセッサコア毎に独自性の高い命令やデータは各プロセッサコアのキャッシュメモリに格納し、前記複数のプロセッサコアは、前記シェアードメモリと前記キャッシュメモリとを交互にアクセスするものであってもよい。
【００２８】
具体的な態様として、前記複数のプロセッサコアは、動作周波数などのプロセッサ性能と、命令セットと、ビット幅、メモリサイズ、キャッシュサイズ及びパイプライン段数を含むアーキテクチャとのいずれか、あるいは全てが異なる複数のＣＰＵである。
【発明の効果】
【００２９】
本発明によれば、非対称プロセッサのそれぞれのＣＰＵが自由に適切なハードウェアアクセラレータを選択してスレーブ接続することが可能になったことで、分散処理の自由度が高くなり、各プロセッサ（ＣＰＵ）の処理負荷を最小にすることが可能となる。これにより動作周波数の低減や電源電圧の降圧がより効果的に行え、より大きな消費電力の削減を図ることができる。
【００３０】
また、非対称なマルチＣＰＵコアプロセッサのいずれか一方のスレーブに１つ又は複数のＤＳＰコアを接続して信号処理を行い、信号処理性能向上を図る場合に、任意のＣＰＵが任意のＤＳＰを起動可能にすることで最適な負荷分散を可能とし、更に、冗長で並列性の高い信号処理の場合には１つのＣＰＵコアが複数のＤＳＰコアを並列処理させることができ、ＤＳＰの動作周波数や動作電圧を可変する機能と併用することで更なる低電力化を図ることができる。
【００３１】
また、本マルチＤＳＰコアプロセッシングを実施する場合、命令メモリはいずれか１つのＤＳＰ用命令ＲＡＭから命令が発行されるため、命令ＲＡＭ空間を効率よく利用できる一方で、命令メモリのハードリソースをより少なくすることが可能なため面積削減の効果もある。
【００３２】
また、ＬＳＩ内部電源電圧のＩＲドロップを抑制するとこが可能となり、内部信号のスリューが大きくなるのを防ぎ、ＤＣ貫通電流の抑止によって動作電力の削減を図ることができる。更にクロックの重なりを避けることでピーク電流の削減を可能にする。このピーク電流の削減効果によって外部部品（電源ＩＣ）に対する許容電流能力を過度に要求する必要がなくなり、電源ＩＣの部品コストを抑制することができる。
【００３３】
また、内部のハードウエア資源を削減し回路面積を小さくすることができる。
【００３４】
さらに、マルチコアプロセッシングにおいて共通性の高い基本ソフト（ＯＳ）などのプログラムを格納する共有メモリ領域を用意することで面積削減する効果がある。また、シェアードメモリ領域を、ＣＰＵの１次キャッシュの一部として切り替えて使用することで、ＣＰＵのキャッシュのミスヒット時にリフィル動作が発生してもＣＰＵのアイドル時間が発生せず、ＣＰＵの処理性能が向上する効果がある。
【発明を実施するための最良の形態】
【００３５】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
【００３６】
（実施の形態１）
図１は、本発明の実施の形態１に係る非対称マルチプロセッサの構成を示すブロック図である。本実施の形態は、２つ以上のプロセッサを具備するマルチコアプロセッサとして、第１のプロセッサコア（ＣＰＵコア）又は、第２のプロセッサコア（ＣＰＵコア）を備える非対称マルチプロセッサに適用した例である。
【００３７】
図１において、非対称マルチプロセッサ１００は、第１のＣＰＵコア１０１ａ（ＣＰＵ＃１）、第２のＣＰＵコア１０１ｂ（ＣＰＵ＃２）、第１の命令キャッシュ１０２ａ（＄１）、第１のデータキャッシュ１０３ａ（＄２）、第２の命令キャッシュ１０２ｂ（＄３）、第２のデータキャッシュ１０３ｂ（＄４）、ＲＯＭ１０４、ＲＡＭ１０５、複数のハードウェアアクセラレータ部１０６ａ〜１０６ｅ（ＨＷ＃１〜＃５）、動的再構成可能なプロセッサである動的再構成型信号処理プロセッサ部１０７、各ＣＰＵコア１０１ａ，１０１ｂから任意のハードウェアリアクセラレータの使用許可を要求する要求信号の調停を行うハードウェアリソース調停部１１０、スレーブ接続する動的再構成型信号処理プロセッサ部１０７の信号処理内容を選択する信号処理内容選択部１１１、各グループ間のクロックの位相関係を任意にずらす制御を行うクロックスキュー調停部１１２、及びクロックスキュー選択イネーブル信号１１４を基にクロック信号を遅延させるクロック遅延生成部１１３ａ〜１１３ｇを備えて構成され、動的再構成型信号処理プロセッサ部１０７は、複数のプロセッサ・エレメント１０８ａ〜１０８ｌ（ＥＬ１〜ＥＬ１２）、及びコンフィグレーション情報デコード部１０９から構成される。
【００３８】
第１のＣＰＵコア１０１ａ（ＣＰＵ＃１）は、第１の命令キャッシュ１０２ａ（＄１）、第１のデータキャッシュ１０３ａ（＄２）、及びバス１２０を介してＲＯＭ１０４及びＲＡＭ１０５に相互に接続され、第２のＣＰＵコア１０１ｂ（ＣＰＵ＃２）は、第２の命令キャッシュ１０２ｂ（＄３）、第２のデータキャッシュ１０３ｂ（＄４）、及びバス１２０を介してＲＯＭ１０４及びＲＡＭ１０５に相互に接続されている。
【００３９】
また、第１のＣＰＵコア１０１ａ（ＣＰＵ＃１）は、バス１２１を介してハードウェアアクセラレータ部１０６ａ〜１０６ｅ（ＨＷ＃１〜＃５）、及び動的再構成型信号処理プロセッサ部１０７に接続され、第２のＣＰＵコア１０１ｂ（ＣＰＵ＃２）は、バス１２２を介してハードウェアアクセラレータ部１０６ａ〜１０６ｅ（ＨＷ＃１〜＃５）、及び動的再構成型信号処理プロセッサ部１０７にそれぞれ接続される。
【００４０】
第１のＣＰＵコア１０１ａ（ＣＰＵ＃１）は、例えば通信制御用ＣＰＵであり、第２のＣＰＵコア１０１ｂ（ＣＰＵ＃２）は、例えばメディア処理制御用ＣＰＵである。第１のＣＰＵコア１０１ａ（ＣＰＵ＃１）と第２のＣＰＵコア１０１ｂ（ＣＰＵ＃２）とは、命令キャッシュ１０２ａと１０２ｂの容量、又はデータキャッシュ１０３ａと１０３ｂの容量、あるいは動作周波数などのプロセッサ性能、さらに命令セット、ビット幅、メモリサイズ、キャッシュサイズ及びパイプライン段数を含むアーキテクチャとのいずれか、あるいは全てが異なる複数のＣＰＵからなる非対称マルチプロセッサである。図１では、第１のＣＰＵコア１０１ａ（ＣＰＵ＃１）と第２のＣＰＵコア１０１ｂ（ＣＰＵ＃２）の２つのプロセッサを備えるマルチコアプロセッサを示したが、更にその他のプロセッサコアを備えるマルチプロセッサでも構わない。
【００４１】
ＲＯＭ１０４は、命令ＲＯＭ、ＲＡＭ１０５は、データＲＡＭである。
【００４２】
ハードウェアアクセラレータ部１０６ａ〜１０６ｅ（ＨＷ＃１〜＃５）は、例えば、暗号エンジン、等価処理エンジン、チャネルコーディックエンジン、３次元グラフィックエンジン、ＭＰＥＧ４エンコーダエンジンである。本実施の形態では、第１のＣＰＵコア１０１ａ（ＣＰＵ＃１）及び第２のＣＰＵコア１０１ｂ（ＣＰＵ＃２）が、各ハードウェアアクセラレータ部１０６ａ〜１０６ｅ（ＨＷ＃１〜＃５）をそれぞれ共有する。なお、図６に示す従来例では、本実施の形態のように、第１のＣＰＵコア１０１ａ（ＣＰＵ＃１）と第２のＣＰＵコア１０１ｂ（ＣＰＵ＃２）が、各ハードウェアアクセラレータ部１０６ａ〜１０６ｅ（ＨＷ＃１〜＃５）を共有する構成を採っておらず、例えば図６のハードウェアアクセラレータ部１５ａ〜１５ｃ（ＨＷ＃１ａ〜＃１ｃ）がローカルバス１９を介してＣＰＵ＃１にスレーブ接続され、ハードウェアアクセラレータＨＷ＃１６ａ，１６ｂがローカルバス２０を介してＣＰＵ＃２にスレーブ接続されていた。
【００４３】
図１に戻って、ハードウェアリソース調停部１１０、信号処理内容選択部１１１、クロックスキュー調停部１１２及びクロック遅延生成部１１３ａ〜１１３ｇは、以下の観点から設置される。
【００４４】
ハードウェアリソース調停部１１０は、各ＣＰＵから任意のハードウェアリアクセラレータの使用許可を要求する要求信号の調停を行う。この要求信号の調停により、任意のプロセッサコアが任意のハードウェアアクセラレータを使用することが可能になり、プロセッサの負荷分散が実現できる。
【００４５】
信号処理内容選択部１１１は、スレーブ接続する動的再構成型信号処理プロセッサ部１０７の信号処理内容を選択するもので、ＲＡＭと選択回路（いずれも図示略）から構成される。このＲＡＭには、予めプロセッサ・エレメントを接続する順番などの情報をコンフィグレーション情報が保存される。ＲＡＭが保存するコンフィグレーション情報を更新することで、必要なハードウェアエンジンを追加、改修することが可能である。
【００４６】
クロックスキュー調停部１１２は、第１のＣＰＵコア１０１ａ（ＣＰＵ＃１）と第１のＣＰＵコア１０１ａ（ＣＰＵ＃１）から信号処理の実行を要求するハードウェアアクセラレータからなる第１の信号処理グループと、第２のＣＰＵコア１０１ｂ（ＣＰＵ＃２）と第２のＣＰＵコア１０１ｂ（ＣＰＵ＃２）から信号処理の実行を要求するハードウェアアクセラレータから構成される第２信号処理グループと、図示しない第３以降のプロセッサコアと第３以降のプロセッサコアから信号処理の実行を要求したハードウェアアクセラレータから構成される第３信号処理以降のグループ間で、各グループ間のクロックの位相関係を任意にずらす制御を行う。
【００４７】
クロック遅延生成部１１３ａ〜１１３ｇは、複数の遅延バッファと該遅延バッファを選択するセレクタ（いずれも図示略）を備え、上記各グループのクロック入力部に設置され、クロックスキュー調停部１１２からのクロックスキュー選択イネーブル信号１１４を基にクロック信号を遅延して各グループ間のクロック位相を任意にずらす。
【００４８】
図２は、動的再構成型信号処理プロセッサ部１０７の構成例を示す図である。
【００４９】
動的再構成型信号処理プロセッサ部１０７は、動的再構成可能なプロセッサであり、図１に示したように複数のプロセッサ・エレメント１０８ａ〜１０８ｌ（ＥＬ１〜ＥＬ１２）、及びコンフィグレーション情報デコード部１０９から構成される。動的再構成型信号処理プロセッサ部１０７の構成例は、図２で示され、バス１２１（動的再構成型信号処理プロセッサ部１０７から見て外部バス）からの入力データを受ける入力バッファ２０１ａ、バス１２２からの入力データを受ける入力バッファ２０１ｂ、動的再構成型信号処理プロセッサ部１０７からのデータをバス１２１に出力する出力バッファ２０２ａ、動的再構成型信号処理プロセッサ部１０７からのデータをバス１２２に出力する出力バッファ２０２ｂ、マトリクス状に配置された内部バス２０３、マトリクス状に配置された内部バス２０３の各ノード及びノード間に設置されたバスセレクタスイッチ２０４、プロセッサ・エレメント２０５ａ〜２０５ｃ（プロセッサ・エレメントＡ）、プロセッサ・エレメント２０６ａ〜２０６ｃ（プロセッサ・エレメントＢ）、プロセッサ・エレメント２０７ａ〜２０７ｆ（プロセッサ・エレメントＣ）、及びコンフィグレーション情報デコード部１０９を備えて構成される。
【００５０】
プロセッサ・エレメント２０５ａ〜２０５ｃ，２０６ａ〜２０６ｃ，２０７ａ〜２０７ｆは、何種類かのプロセッサ・エレメント（ＥＬ）により構成される。例えば、プロセッサ・エレメント２０５ａ〜２０５ｃ（プロセッサ・エレメントＡ）には、シフト演算器２１１とＡＬＵ２１２が用意され、プロセッサ・エレメント２０６ａ〜２０６ｃ（プロセッサ・エレメントＢ）には、乗算器２１３が用意され、プロセッサ・エレメント２０７ａ〜２０７ｆ（プロセッサ・エレメントＣ）には、ＡＬＵ２１４とバレルシフタ２１５が用意されている。
【００５１】
以下、上述のように構成された非対称マルチプロセッサ１００の動作を説明する。
【００５２】
〔ハードウェアリソース調停部１１０の調停動作〕
まず、ハードウェアアクセラレータ部１０６ａ〜１０６ｅ（ＨＷ＃１〜＃５）の選択動作について説明する。ハードウェアアクセラレータ部１０６ａ〜１０６ｅ（ＨＷ＃１〜＃５）の選択動作は、ハードウェアリソース調停部１１０が、ＣＰＵコア１０１ａ，１０１ｂから任意のハードウェアリアクセラレータの使用許可を要求する要求信号の調停を行うことで実現される。
【００５３】
いま、第１のＣＰＵコア１０１ａ（以下、ＣＰＵ＃１と記載する）がデータの暗号化を行うためにハードウェアアクセラレータ部１０６ａ（以下、ＨＷ＃１と記載する）のアドレスマップを指定すると、第２のＣＰＵコア１０１ｂ（以下、ＣＰＵ＃２という）がＨＷ＃１の要求を出していない場合にＣＰＵ＃１のスレーブとしてバス接続を許可する。また、ＣＰＵ＃１とＣＰＵ＃２で要求がコンフリクト（競合）してしまった場合であって、同時要求の場合は、以下（１），（２）の調停を行う。
【００５４】
すなわち、（１）優先順位の高い処理に対してハードウェアアクセラレータの接続を許可して、許可さられなったＣＰＵ側をストールさせる。あるいは、（２）動的再構成型信号処理プロセッサ部１０７で実現可能な範囲のハードウェアアクセラレータであった場合は、再構成可能なプロセッサで分担をするよう調停を行う。
【００５５】
ハードウェアリソース調停部１１０は、要求を出したＣＰＵの処理速度や、ＣＰＵが分担する処理のリアルタイム性（処理内容）によって優先順位を予めテーブルモデルなどを持っている。但し、ＣＰＵからの要求信号にプライオリティビットを有しており、この信号をＣＰＵから発行することで強制的にプライオリティビットを発行したＣＰＵ側に対して優先にハードウェアアクセラレータを接続される。プライオリティビットの発行有無はＣＰＵのソフトウェアで制御する。また、複数のＣＰＵから同時にプライオリティビットが発行されるようなソフトウェアプログラムは、コンパイラなどでエラー処理され、ソフトウェアコーディングの見直しを要求することで避けられる。
【００５６】
次に、一方のＣＰＵが予め使用しているハードウェアアクセラレータを、他方のＣＰＵが後から割り込み要求した場合も前記コンフリクト時と同様に上記（１），（２）の調停を行うか、あるいは（３）先行して行われていた信号処理を中止し、途中結果を退避した上で後から要求したＣＰＵの要求を割り込ませるか、又は（４）途中結果を退避せずに後から要求したＣＰＵの処理を許可するか、といった調停を行うことで、非対称プロセッサ１００による分散処理を行う。
【００５７】
更に、ハードウェアリソース調停部１１０が動的再構成可能なプロセッサである動的再構成型信号処理プロセッサ部１０７を選択する場合、スレーブ接続する動的再構成型信号処理プロセッサ部１０７の信号処理内容を選択する信号処理内容選択部１１１内に記憶されているテーブルデータから予め必要なハードウェアエンジンがあるかをモニタし、テーブルデータに記憶されたハードエンジンと、必要としているハードエンジンが一致した場合には、ハードウェアリソース調停部１１０が信号処理内容選択部１１１にＨＷ選択イネーブル信号を送る。
【００５８】
このＨＷ選択イネーブル信号によって信号処理内容選択部１１１に内蔵されるＲＡＭに記憶されていた中から、選択されたハードウェアエンジンの再構成情報を、動的再構成可能なプロセッサである動的再構成型信号処理プロセッサ部１０７のコンフィグレーション情報デコード部１０９に送り、コンフィグレーション情報デコード部１０９は、各プロセッサ・エレメント１０８ａ〜１０８ｌの接続関係を再構成して、必要とされるハードウェアアクセラレータを動的に構築する。ハードウェアリソース調停部１１０は、この再構成可能なプロセッサを適宜ＣＰＵのスレーブに接続し内部のハードウェアアクセラレータで回路資源が不足した場合などに対処する。
【００５９】
ここで、スレーブ接続する動的再構成型信号処理プロセッサ部１０７の信号処理内容を選択する信号処理内容選択部１１１は、ＲＡＭと選択回路から構成され、予めプロセッサ・エレメントを接続する順番などの情報をコンフィグレーション情報として何種類か用意しＲＡＭに保存しておき、あとからＲＡＭの保存するコンフィグレーション情報を更新することで、必要なハードウェアエンジンを追加、改修することもある程度可能となっている。一例を挙げると、信号処理内容選択部１１１に記憶しておくコンフィグレーション情報は、ＲＯＭ１０４に記憶され、本非対称マルチプロセッサ１００起動時にダウンロードされる。更に、コンフィグレーションする回路の構成を追加、改修したい場合はＲＡＭ１０５を介して信号処理内容選択部１１１に内蔵されるＲＡＭの情報を更新することで、信号処理の規格変更や性能アップに伴うハードウェアアクセラレータの追加がある程度容易に実現可能となる。
【００６０】
次に、図２を参照して動的再構成可能なプロセッサである動的再構成型信号処理プロセッサ部１０７の動作を説明する。
【００６１】
動的再構成型信号処理プロセッサ部１０７は、何種類かのプロセッサ・エレメント、ここではシフト演算器２１１とＡＬＵ２１２からなるプロセッサ・エレメント２０５ａ〜２０５ｃ（プロセッサ・エレメントＡ）、乗算器２１３からなるプロセッサ・エレメント２０６ａ〜２０６ｃ（プロセッサ・エレメントＢ）、ＡＬＵ２１４とバレルシフタ２１５からなるプロセッサ・エレメント２０７ａ〜２０７ｆ（プロセッサ・エレメントＣ）を備え、再構成情報デコード部であるコンフィグレーション情報デコード部１０９が、外部入力されるコンフィグレーション情報をデコードする。このデコード結果によって、バスセレクタスイッチ２０４が切り替えられ、バスセレクタスイッチ２０４により切り替えられた内部バス２０３を介して、プロセッサ・エレメント２０５ａ〜２０５ｃ（プロセッサ・エレメントＡ）、プロセッサ・エレメント２０６ａ〜２０６ｃ（プロセッサ・エレメントＢ）、プロセッサ・エレメント２０７ａ〜２０７ｆ（プロセッサ・エレメントＣ）の中から必要なプロセッサ・エレメントが選択され、信号処理の順番に再接続されてデータパスが形成される。
【００６２】
信号処理内容選択部１１１からの制御信号によって、適宜必要とするＣＰＵに対して外部バス１２１，１２２を介して、動的再構成型信号処理プロセッサ部１０７への入力データや動的再構成型信号処理プロセッサ部１０７からの出力データにスレーブ接続させてハードウェアアクセラレータとして利用可能にする。
【００６３】
以上述べたハードウェアリソース調停部１１０の調停動作により、以下の機能が可能になる。非対称マルチプロセッサ１００は、オーディオ処理や画像処理、ベースバンド処理など、信号処理の特徴に合わせた最適なプロセッサ（ＣＰＵ）を複数搭載する非同期プロセッサであって、一方のＣＰＵ、例えば第１のＣＰＵコア１０１ａ（ＣＰＵ＃１）においてＣＰＵリソースがアイドル状態、あるいはＣＰＵ負荷が低い場合に、他方のＣＰＵ、例えば第２のＣＰＵコア１０１ｂ（ＣＰＵ＃２）の処理における一部のタスクを振り分けることで、ＣＰＵ＃１もＣＰＵ＃２も最大処理能力に対して動作周波数を落として処理できるよう分散処理を行う。そして、このときの動作電圧を降圧することで動作電力を低減することができることに加え、それぞれのＣＰＵは搭載するハードウェアアクセラレータを自由に選択可能になる。
【００６４】
これにより例えば、ＣＰＵ＃１にＭＰＥＧエンジンとオーディオコーディックエンジンがスレーブ接続され、ＣＰＵ＃２に３次元グラフィックエンジンがスレーブ接続されるメディアプロセッサにおいて、テレビ電話の処理を行う場合、画像コーディックと音声コーディックを同時に行う必要がある。この場合、処理量が少ない時間帯を利用して第２のＣＰＵにオーディオコーディックエンジンをスレーブ接続して画像処理をＣＰＵ＃１と画像エンジンで、オーディオ処理をＣＰＵ＃２とオーディオエンジンで、分散処理する。
【００６５】
一方、ゲームを行う場合、３次元グラフィック処理はＣＰＵ＃２とグラフィックエンジンで、効果音の処理を第１のＣＰＵとオーディオエンジンで行うなど処理負担の最適化を図ることが可能になる。
【００６６】
〔クロックスキュー調停部１１２の調停動作〕
また、例えばＣＰＵ＃１とＣＰＵ＃２の動作周波数が同じ場合は、図１のハードウェアアクセラレータ調停部１１０がＣＰＵ＃２のスレーブとして選択したハードウェアアクセラレータの情報をクロックスキュー調停部１１２に渡す。これにより、クロックスキュー調停部１１２は、信号処理の実行を要求したハードウェアアクセラレータから構成されるグループ間で、クロックの位相関係を任意にずらす制御を行う。クロックスキュー調停部１１２は、各グループのクロック入力部に設置されたクロック遅延生成部１１３ａ〜１１３ｇにより、各グループ間のクロック位相を任意にずらす。
【００６７】
具体的には、ＣＰＵ＃２に供給するクロックとＣＰＵ＃２にスレーブ接続されたハードウェアアクセラレータに供給するクロックの位相をＣＰＵ＃１のクロックに対して、例えば半サイクルずらせてクロック供給するよう、クロックスキュー選択イネーブル信号１１４がＣＰＵ＃２のスレーブ接続されたハードウェアアクセラレータの各クロック遅延生成部１１３ａ〜１１３ｇに送られる。これによってＣＰＵ＃１側の処理とＣＰＵ＃２側の処理のクロックエッジは、交互に発生することになり、ＬＳＩ内部のＩＲドロップは軽減される。これに伴い各信号やクロック信号のスリューが鈍ることで、増加するＤＣ電流を抑制して消費電流を削減するとともに、ピーク電流の抑制によって誤動作の防止を図ることが可能になる。この場合、ＣＰＵ＃１とＣＰＵ＃２が異なる動作周波数であっても同様の制御によりピーク電流の削減を図ることができる。つまりＣＰＵ＃１とＣＰＵ＃２は同期設計を基本とするが、各プロセッサの動作周波数に応じてユースフルスキュー制御を可能としている。これは、ある部分の回路に対してクロックスキューを意図的にずらして動作させることができることにつながる。
【００６８】
図３は、クロックスキューコントロール機構を説明する図である。ＣＰＵ＃１とそのスレーブハードウェア、及びＣＰＵ＃２とそのスレーブハードウェア間で任意のクロックスキューを生成する場合を例に採る。
【００６９】
ハードウェアリソース調停部１１０に対してＣＰＵ＃２から要求信号のあったハードウェアアクセラレータとＣＰＵ＃２に対して、クロックスキュー調停部１１２は任意の遅延情報を前記ハードウエアとＣＰＵ＃２のクロック入力部に配置したクロック遅延生成部１１３ａ，１１３ｂ，１１３ｃ，１１３ｄ，１１３ｅに対して設定する。クロック遅延生成部１１３ａ，１１３ｂ，１１３ｃ，１１３ｄ，１１３ｅの内部には、複数の遅延バッファと該遅延バッファを選択するセレクタ（いずれも図示略）を備え、セレクタで遅延バッファをセレクトすることで微調整が可能になっている。図３では、最終段のクロック遅延生成部１１３ｅは、インバータでクロックを反転し、またＣＰＵ＃２とＣＰＵ＃２のスレーブハードウェアは反転クロックで動作する。
【００７０】
ＣＰＵ＃２側で処理が完了するなどし、ＣＰＵ＃１側とバス経由で通信する際は、図示しないラッチ回路で半サイクルズレをラッチして吸収することでＣＰＵのストールを最小にする。
【００７１】
以上述べたクロックスキュー調停部１１２の調停動作により、ＣＰＵ＃１とそこにスレーブ接続されるハードウェアアクセラレータ、ＤＳＰ、あるいは動的再構成可能なプロセッサの動作クロックに対して、輻輳するＣＰＵ＃２とそこにスレーブ接続されるハードウェアアクセラレータ、ＤＳＰ、あるいは動的再構成可能なプロセッサに対して動作クロックの位相をずらすように制御する。これにより、ＬＳＩ内部電源電圧のＩＲドロップを抑制するとこが可能となり、内部信号のスリューが大きくなるのを防ぎＤＣ貫通電流の抑止によって動作電力の削減を図ることができる。また、クロックの重なりを避けることでピーク電流の削減が可能になる。さらに、ピーク電流の削減効果によって外部部品（電源ＩＣ）に対する許容電流能力を過度に要求する必要がなくなり、電源ＩＣの部品コストを抑制することも可能となる。
【００７２】
以上詳細に説明したように、本実施の形態によれば、非対称マルチプロセッサ１００は、各ＣＰＵコア１０１ａ，１０１ｂから任意のハードウェアリアクセラレータの使用許可を要求する要求信号の調停を行うハードウェアリソース調停部１１０と、スレーブ接続する動的再構成型信号処理プロセッサ部１０７の信号処理内容を選択する信号処理内容選択部１１１とを備えて構成したので、各ＣＰＵがそれぞれにスレーブ接続するハードウェアアクセラレータやＤＳＰなどのプロセッサを共有した上で、任意のプロセッサコアが任意のハードウェアアクセラレータを使用することができる。すなわち、従来の非対称マルチプロセッサでは、各ＣＰＵにスレーブ接続されるハードウェアアクセラレータが互いのＣＰＵで共有できない構成であるため、各ＣＰＵの仕事量によってソフトウェアプログラムのタスクを振り分けてもハードウェアアクセラレータの制約で分散処理に自由度が少なく低消費電力の効果を十分発揮しない課題があった。これに対して、本実施の形態の非対称マルチプロセッサ１００は、各ＣＰＵがそれぞれにスレーブ接続するハードウェアアクセラレータやＤＳＰなどのプロセッサを共有し、分散処理を効率よく行うことができる。これによりＣＰＵやハードウェアアクセラレータ、ＤＳＰの動作周波数低減や電源電圧降圧を図ることが容易となり消費電力の削減を効率良く行うことが可能になる。
【００７３】
また、本実施の形態の非対称マルチプロセッサ１００は、各グループ間のクロックの位相関係を任意にずらす制御を行うクロックスキュー調停部１１２と、及びクロックスキュー選択イネーブル信号１１４を基にクロック信号を遅延させるクロック遅延生成部１１３ａ〜１１３ｇとを備えているので、各ＣＰＵのクロックの位相を調整する構成を有することで、ピーク電流の削減やＩＲドロップを最小に抑えることができる。これによってプロセッサの誤動作を防ぎ、更に消費電力削減を図ることができる。すなわち、従来の非対称マルチプロセッサでは、複数搭載されている各プロセッサが同時に動作することで、クロックエッジの重なりよるＬＳＩ内部電源のＩＲドロップやピーク電流の増加によって、消費電力の増加や誤動作の原因となる問題を生じていたが、本実施の形態では、ＬＳＩ内部電源電圧のＩＲドロップを抑制することが可能となり、内部信号のスリューが大きくなるのを防ぎＤＣ貫通電流の抑止によって動作電力の削減を図ることが可能になる。更にクロックの重なりを避けることでピーク電流の削減が可能になる。このピーク電流の削減効果によって外部部品（電源ＩＣ）に対する許容電流能力を過度に要求する必要がなくなり、電源ＩＣの部品コストを抑制することも可能になる。
【００７４】
なお、本実施の形態では、非対称マルチプロセッサ１００は、ハードウェアリソース調停部１１０及び信号処理内容選択部１１１と、クロックスキュー調停部１１２及びクロック遅延生成部１１３ａ〜１１３ｇとを備える構成例について説明したが、いずれか一つを備える構成であってもよい。
【００７５】
また、本実施の形態では、クロックスキュー調停部１１２は、クロック遅延生成部１１３ａ〜１１３ｇにクロックスキュー選択イネーブル信号１１４を出力したクロック信号を遅延させているが、各グループ間のクロックの位相関係を任意にずらす制御を行うものであればどのような方法でも構わない。
【００７６】
（実施の形態２）
実施の形態１は、ＣＰＵの処理を加速する目的で各ＣＰＵはハードウェアアクセラレータをスレーブ接続しており、そのハードウェアアクセラレータを各ＣＰＵが共有する構成であった。そしてＣＰＵの要求するハードウェアリソースがコンフリクトする場合はどちらかのＣＰＵ処理をストールする必要があり、この場合、処理性能が低下する。このような事態を避けるために、動的再構成可能なプロセッサである動的再構成型信号処理プロセッサ部１０７についてもスレーブ接続し、各ＣＰＵが共有する構成となっていた。実施の形態２では、ＣＰＵのスレーブにＤＳＰを接続することで、更に自由度を上げることができるアーキテクチャについて説明する。
【００７７】
図４は、本発明の実施の形態２に係る非対称マルチプロセッサの構成を示すブロック図である。本実施の形態の説明にあたり、図１と同一構成部分には同一符号を付して重複箇所の説明を省略する。
【００７８】
図４において、非対称マルチプロセッサ３００は、第１のＣＰＵコア１０１ａ（ＣＰＵ＃１）、第２のＣＰＵコア１０１ｂ（ＣＰＵ＃２）、第１のＤＳＰコア３０１ａ（ＤＳＰ＃１）、第２のＤＳＰコア３０１ｂ（ＤＳＰ＃２）、第１の命令キャッシュ１０２ａ（＄１）、第１のデータキャッシュ１０３ａ（＄２）、第２の命令キャッシュ１０２ｂ（＄３）、第２のデータキャッシュ１０３ｂ（＄４）、第１の命令ＲＡＭ３０２ａ（ＲＡＭ＃１）、第１のデータＲＡＭ３０３ａ（ＲＡＭ＃２）、第２の命令ＲＡＭ３０２ｂ（ＲＡＭ＃３）、第２のデータＲＡＭ３０３ｂ（ＲＡＭ＃４）、ＲＯＭ１０４、ＲＡＭ１０５、複数のハードウェアアクセラレータ部１０６ａ〜１０６ｅ（ＨＷ＃１〜＃５）、動的再構成可能なプロセッサである動的再構成型信号処理プロセッサ部１０７、各ＣＰＵコア１０１ａ，１０１ｂから発行される任意のＤＳＰ使用許可要求信号を調停するハードウェアリソース調停部３１０、各プロセッサコア（ＣＰＵコア）から動的再構成可能なプロセッサの使用許可要求信号を調停するとともに、ＣＰＵが要求した信号処理に対応したコンフィグレーション情報を動的再構成可能なプロセッサへ発行するコンフィグレーション信号選択部３１１、１つのプロセッサコアが輻輳する複数のＤＳＰコアを選択する際の調停を行う輻輳ＤＳＰコア調停部３１２、各グループ間のクロックの位相関係を任意にずらす制御を行うクロックスキュー調停部１１２、及びクロックスキュー選択イネーブル信号１１４を基にクロック信号を遅延させるクロック遅延生成部１１３ａ〜１１３ｉを備えて構成される。
【００７９】
ハードウェアリソース調停部３１０は、各ＣＰＵから発行される任意のＤＳＰ使用許可要求信号を調停する。この要求信号の調停により、任意のプロセッサコア（ＣＰＵコア）が任意のＤＳＰによる信号処理プログラムを実行することができる。また、ハードウェアリソース調停部３１０は、図１のハードウェアリソース調停部１１０と同様に、各ＣＰＵコア１０１ａ，１０１ｂから任意のハードウェアリアクセラレータの使用許可を要求する要求信号の調停を行う。
【００８０】
輻輳ＤＳＰコア調停部３１２は、一方のプロセッサコア（ＣＰＵコア）が輻輳する複数のＤＳＰを選択する際、相対的にプログラムの開始アドレスに相当する信号を一方のＤＳＰコアに対して発行すると、他方のＤＳＰコアも同時に並列処理を行えるように制御する。
【００８１】
以下、上述のように構成された非対称マルチプロセッサ３００の動作を説明する。
【００８２】
ハードウェアリソース調停部３１０及びクロックスキュー調停部１１２の基本動作は、実施の形態１の非対称マルチプロセッサ１００と同様である。本実施の形態は、ハードウェアリソース調停部３１０が、さらにコンフィグレーション信号選択部３１１、及び輻輳ＤＳＰコア調停部３１２に対し、コマンドを発行し、コンフィグレーション信号選択部３１１、及び輻輳ＤＳＰコア調停部３１２が以下の動作を行うことを特徴とする。
【００８３】
ＣＰＵから、ＤＳＰ処理を要求するコマンドがハードウェアリソース調停部３１０に送られると、輻輳ＤＳＰコア調停部３１２は、どちらか一方のＤＳＰコアをバスに接続し、ＤＳＰプログラム処理を起動させる。例えば、第１のＤＳＰコア３０１ａ（以下、ＤＳＰ＃１と記載する）でインターリーブ処理をさせたい場合は、ＤＳＰ＃１を起動させるコマンドを第１のＣＰＵコア１０１ａ（以下、ＣＰＵ＃１という）がハードウェアリソース調停部３１０に発行し、ハードウェアリソース調停部３１０はハードウェアアクセラレータではなくＤＳＰを選択したことを識別して、輻輳ＤＳＰコア調停部３１２へコマンドを渡し、ＤＳＰを起動して所望の信号処理を行う。この時、発行されるコマンドは、ＤＳＰ＃１の第１の命令ＲＡＭ３０２ａ（ＲＡＭ＃１）中にあるインターリームプログラム開始アドレスに相当する情報となっている。したがって、ＤＳＰに複数のプログラムをダウンロードしておけば、複数のプログラムから選択して実行することが可能である。
【００８４】
また、ＤＳＰ＃１と第２のＤＳＰコア３０１ｂ（以下、ＤＳＰ＃２と記載する）の第１の命令ＲＡＭ３０２ａと第２の命令ＲＡＭ３０２ｂは連続アドレス空間となっており、ＤＳＰ＃２の命令メモリ空間に相当する情報をコマンドとして発行すれば、ＤＳＰ＃２に搭載されるプログラムが実行できる。この場合、ＣＰＵがＤＳＰプログラムを実行するコマンドは相対アドレス情報とすることで、ＣＰＵとＤＳＰが通信をする信号線は少なくすることが可能で、命令メモリのビット幅を必ずしも必要とはしない。
【００８５】
ハードウェアリソース調停部３１０は、上記輻輳ＤＳＰコア調停部３１２へのコマンド渡しに加えてクロックスキュー調停部１１２にも、どのＤＳＰを選択したかの情報を渡す。もし、ＣＰＵ＃１からの要求信号ならＣＰＵのクロックに対してスキューが０ｎｓとなるように制御し、もしＣＰＵ＃２からの要求でＤＳＰを起動する場合は、クロックスキュー調停部１１２が、ＣＰＵ＃１のクロックに対して、ＣＰＵ＃２のクロックと選択されたＤＳＰ＃１のクロックが例えば半サイクル分スキューをずらせるような制御信号（クロックスキュー選択イネーブル信号１１４）をクロック遅延生成部１１３ａ，１１３ｂへ通信する。これにより、ＣＰＵ＃１とＣＰＵ＃２又はＤＳＰ＃２とはクロックエッジが重ならないため、輻輳していてもＬＳＩ内部の電源電圧ドロップを抑制することができ、ピーク電流の削減効果がある。また、動作周波数が高い高性能なプロセッサを搭載している場合、プロセッサの動作電力が大きいため、電源ＩＣの電流供給能力も極めて高いものが要求される。本実施の形態によるピーク電流の削減効果によって外部部品（電源ＩＣ）に対する許容電流能力を過度に要求する必要がなくなり、電源ＩＣの部品コストを抑制することも可能となる。
【００８６】
また、ＣＰＵ＃１がＤＳＰ＃１又は、ＤＳＰ＃２のいずれか一方を使用すると同時に、他方でＣＰＵ＃２がＤＳＰ＃２又はＤＳＰ＃１のいずれか一方（ＣＰＵ＃１が選択していない方のＤＳＰ）を選択し同時実行（輻輳）させるとこができる。
【００８７】
更に、演算負荷が高いが並列性の高い信号処理に関しては、ＣＰＵ＃１、あるいはＣＰＵ＃２のいずれか一方が、ＤＳＰ＃１とＤＳＰ＃２をデュアルＤＳＰコアとしてスレーブ接続し、ＤＳＰプログラムを分割して並列処理させ、より処理能力（ＭＩＰＳ：Million Instruction Par Second）高い信号処理を行わせることも可能である。その際に例えばＣＰＵ＃１はＤＳＰ＃１の命令メモリ（第１の命令ＲＡＭ３０２ａ）にダウンロードされているプログラム開始アドレスに相当する情報と、デュアルモードであることを示すビット情報をコマンド発行する。第１の命令ＲＡＭ３０２ａのプログラムは、ＤＳＰ＃１とＤＳＰ＃２の両方に命令を発行（フェッチ）することで、ＤＳＰ＃２の命令メモリ（第２の命令ＲＡＭ３０２ｂ）に該当プログラムを冗長にダウンロードする必要がない。
【００８８】
以上詳細に説明したように、本実施の形態の非対称マルチプロセッサ３００は、各ＣＰＵコア１０１ａ，１０１ｂから発行される任意のＤＳＰ使用許可要求信号を調停するハードウェアリソース調停部３１０と、ＣＰＵが要求した信号処理に対応したコンフィグレーション情報を動的再構成型信号処理プロセッサ部１０７へ発行するコンフィグレーション信号選択部３１１と、相対的にプログラムの開始アドレスに相当する信号を一方のＤＳＰコアに対して発行すると、他方のＤＳＰコアも同時に並列処理を行えるよう制御する輻輳ＤＳＰコア調停部３１２とを備えて構成したので、実施の形態１と同様な効果を得ることができることに加えて、バス１２１，１２２に接続された複数のＤＳＰに対して、任意のプロセッサコアが任意のＤＳＰによる信号処理プログラムを実行することができ、プロセッサの負荷分散の自由度を向上させることができる。また、一方のプロセッサコアが輻輳する複数のＤＳＰを選択する際、他方のＤＳＰコアも同時に並列処理を行えるよう制御することができる。
【００８９】
また、本実施の形態では、コンフィグレーション信号選択部３１１は、任意のＣＰＵが信号処理を高効率に実行するために用意されたハードウェアアクセラレータのリソースが、複数のＣＰＵから同時に要求信号を受けた場合、あるいは１つのＣＰＵが使用中に、後から他のＣＰＵからの要求信号を受けた場合、ハードウェアリソースのコンフリクトを回避する方法として、動的再構成可能なプロセッサである動的再構成型信号処理プロセッサ部１０７をバス１２１，１２２を介して接続可能に構成し、動的再構成型信号処理プロセッサ部１０７を所望の信号処理が可能な型に再構成して使用する。これにより、内部のハードウエア資源を削減し回路面積を小さくすることが可能となる。
【００９０】
なお、本実施の形態では、非対称マルチプロセッサ３００は、ハードウェアリソース調停部３１０及び輻輳ＤＳＰコア調停部３１２と、クロックスキュー調停部１１２と、コンフィグレーション信号選択部３１１とを備える構成例について説明したが、コンフィグレーション信号選択部３１１、又は輻輳ＤＳＰコア調停部３１２のいずれか一つを備えるものでもよい。また、ロックスキュー調停部１１２を備えないものでもよい。
【００９１】
（実施の形態３）
実施の形態２は、ハードウェアリソース調停部３１０、クロックスキュー調停部１１２、コンフィグレーション信号選択部３１１、及び輻輳ＤＳＰコア調停部３１２を備え、これら各部によってハードウェアアクセラレータやＤＳＰ、動的再構成可能なプロセッサを共有する方法について詳細に説明した。上記各部は単独で適用することも可能である。実施の形態３は、第１のＣＰＵと第２のＣＰＵとハードウェアアクセラレータ以外にＤＳＰコアを１つあるいは複数搭載した場合に、高効率に信号処理を実行することができる技術要素を提供する。実施の形態３は、実施の形態２の非対称マルチプロセッサ３００に対して単独で、あるいは組合わせて適用することができる。
【００９２】
実施の形態３に係る非対称マルチプロセッサのハード的構成は、図４と同様であるため説明を省略する。
【００９３】
実施の形態３は、各ＣＰＵの信号処理性能向上のための〔信号処理機能〕と、各ＣＰＵ、ＤＳＰ、動的再構成可能なプロセッサなどの低電力化を図るための〔動作周波数又は動作電源電圧を可変制御機能〕とに分けられる。
【００９４】
〔信号処理機能〕
（１）実施の形態３に係る非対称マルチプロセッサは、複数のＤＳＰを搭載する場合、１つのＣＰＵが複数のＤＳＰをスレーブ接続し、ＣＰＵからの割込み信号をトリガに１つのタスクを複数のＤＳＰを用いて信号処理を並列処理実行できるマルチプロセッシング構成を採る。図４に示すように、本実施の形態に係る非対称マルチプロセッサは、第１のＤＳＰコア３０１ａ（ＤＳＰ＃１）と第２のＤＳＰコア３０１ｂ（ＤＳＰ＃２）とを有し、第１のＣＰＵコア１０１ａ（ＣＰＵ＃１）又は第２のＣＰＵコア１０１ｂ（ＣＰＵ＃２）は、バス１２１，１２２を介してＤＳＰ＃１，ＤＳＰ＃２をスレーブ接続する。ハードウェアリソース調停部３１０は、１つのＣＰＵ（例えば、ＣＰＵ＃１）からの割込み信号をトリガにして１つのタスクを複数のＤＳＰ＃１，ＤＳＰ＃２を用いて並列信号処理を実行させる。
【００９５】
（２）  上記（１）において、特にＣＰＵからＤＳＰに格納されたプログラムの中で各信号処理の先頭アドレスに相当する情報を、ハードウェアリソース調停部３１０へ入力すると、ハードウェアリソース調停部３１０は、該当するＤＳＰプログラムが起動するように制御を行うとともに、マルチＤＳＰ処理を行わせることを示す制御信号又は制御ビットのＯＮを受けて、第１のＤＳＰの命令メモリからフェッチしたコマンドを第１のＤＳＰコアや第２のＤＳＰコアなど、複数のＤＳＰコアに送ることで並列信号処理を行う。
【００９６】
（３）実施の形態３に係る非対称マルチプロセッサは、複数のＤＳＰコアを有し、各ＤＳＰコアは、他のＤＳＰコアの命令メモリからも命令フェッチできる機構を有する。ハードウェアリソース調停部３１０は、一方のプロセッサコア（ＣＰＵコア）が複数のＤＳＰコアを選択して並列動作させる場合に、該当ＣＰＵが第１のＤＳＰにおける命令メモリの開始アドレスを指定すると、そのアドレスの命令が複数のＤＳＰコアへ同時にフェッチさせ、各ＤＳＰがマルチプロセッシング処理を行うように制御する。
【００９７】
（４）実施の形態３に係る非対称マルチプロセッサは、同一の命令ＲＡＭからのフェッチで複数のＤＳＰコアを実行する機能を有する。ＤＳＰの並列処理モード時は、第２以降のＤＳＰコアのアドレッシングが第１のＤＳＰに対して相対補正を行うことが好ましい。
【００９８】
〔動作周波数又は動作電源電圧を可変制御機能〕
（５）実施の形態３に係る非対称マルチプロセッサは、第１のプロセッサコア（ＣＰＵコア）と、第２のプロセッサコア（ＣＰＵコア）、あるいは更に第３以降のプロセッサが同時に信号処理を行う場合、第１のプロセッサコアとそれにスレーブ接続されるハードウェアアクセラレータやＤＳＰや再構成可能なプロセッサに供給されるクロック信号の位相に対して、第２のＣＰＵコアとそれにスレーブ接続されるハードウェアアクセラレータやＤＳＰや再構成可能なプロセッサに供給されるクロック信号の位相、あるいは第３以降のＣＰＵとそれにスレーブ接続される信号処理回路資源に供給されるクロック信号の位相に任意の位相差をつける。例えば、第１のＣＰＵコア１０１ａ（ＣＰＵ＃１）と第２のＣＰＵコア１０１ｂ（ＣＰＵ＃２）とが同時に信号処理を行う場合、ＣＰＵ＃１とそれにスレーブ接続されるハードウェアアクセラレータやＤＳＰや動的再構成型信号処理プロセッサ部１０７に供給されるクロック信号の位相と、ＣＰＵ＃２とそれにスレーブ接続されるハードウェアアクセラレータやＤＳＰや動的再構成型信号処理プロセッサ部１０７に供給されるクロック信号の位相とに任意の位相差をつける。これにより、ＣＰＵ＃１とＣＰＵ＃２とが同時に信号処理を行う場合、各ＣＰＵとそれにスレーブ接続されるハードウェアアクセラレータやＤＳＰや動的再構成型信号処理プロセッサ部１０７に供給されるクロック信号の位相が相互にずれることで、ピーク電流の低減を抑制することができる。
【００９９】
（６）実施の形態３に係る非対称マルチプロセッサは、信号処理量を分割して複数のＣＰＵやＤＳＰ、ハードウェアアクセラレータがマルチプロセッシングを行い、この時の電源電圧やクロック周波数、基板のバイアス電圧を単一プロセッサで信号処理する場合より、低い電源電圧、低いクロック周波数、又は閾値が擬似的に上がるような基板電位に変更してマルチプロセッシングを行う電力マネージメントモードを有することが好ましい。この電力マネージメントモードにより、単一プロセッサで信号処理する場合より、低い電力消費となり、低消費電力化を図ることができる。
【０１００】
（７）実施の形態３に係る非対称マルチプロセッサは、信号処理量に応じてクロック周波数や電源電圧を変更することのできる機能を備えることも可能である。この信号処理量は、信号処理を行わない場合のクロック周波数や電源電圧の変更も含む。例えば、第１のＣＰＵコアとそれにスレーブ接続されるハードウェアアクセラレータやＤＳＰや再構成可能なプロセッサで信号処理を行う期間に、第２のＣＰＵコアとそれにスレーブ接続されるハードウェアアクセラレータやＤＳＰや再構成可能なプロセッサによって信号処理を行う必要がない場合、信号処理を行っていない後者に対して電源電圧を遮断する、あるいは電源電圧をメモリやレジスタがデータを記憶保持できる最小電圧まで下げる機能（リテンション機能）を実行する。
【０１０１】
以上詳細に説明したように、本実施の形態によれば、第１のＣＰＵと第２のＣＰＵとハードウェアアクセラレータ以外にＤＳＰコアを１つあるいは複数搭載した場合に、ＣＰＵは必要となる信号処理をＤＳＰソフトで処理することで、高効率に信号処理を実行することができる。ＣＰＵは前記ハードウェアアクセラレータを起動する際、選択するレジスタマップと同一空間にＤＳＰの命令メモリを相対的に表現したアドレスを加え、ＣＰＵが要求信号を出すことで該当するＤＳＰのプログラムが実行可能とする。その際、２つ以上のＣＰＵのうちどちらのＣＰＵが２つ以上搭載されたＤＳＰのうち任意のＤＳＰを選択可能で、且つ複数のＤＳＰをマルチコアとして並列処理させる機能を有し、ＤＳＰの動作周波数やＤＳＰの動作電圧を可変する機能と併用することで高い処理性能を低電力で提供可能としている。ここで、ＤＳＰ＃１の命令メモリとＤＳＰ＃２の命令メモリは夫々のプログラムを格納しているが、例えばマルチコアプロセッシングＤＳＰとして動作する場合は、いずれか一方の命令メモリにプログラムを格納しておけば、両方のＤＳＰコアに対して命令をフェッチ（命令を発行）し、同時２つ以上のＤＳＰを動作する構成を持つ点と、アドレス計算（アドレッシング）に不整合が発生しないように相対的に一方のＤＳＰ用プログラムで他方のＤＳＰプログラムへ翻訳する機構を有する。
【０１０２】
これにより、非対称なマルチＣＰＵコアプロセッサのいずれか一方のスレーブに１つ又は複数のＤＳＰコアを接続して信号処理を行い、信号処理性能向上を図る場合に、任意のＣＰＵが任意のＤＳＰを起動可能にすることで最適な負荷分散を可能とし、更に、冗長で並列性の高い信号処理の場合には１つのＣＰＵコアが複数のＤＳＰコアを並列処理させることができる。この場合、ＤＳＰの動作周波数や動作電圧を可変する機能と併用することで更なる低電力化を図ることができる。
【０１０３】
更に、本発明のマルチＤＳＰコアプロセッシングを実施する場合、命令メモリはいずれか１つのＤＳＰ用命令ＲＡＭから命令が発行されるため、命令ＲＡＭ空間を効率よく利用できる一方で、命令メモリのハードリソースをより少なくすることが可能なため面積削減の効果もある。
【０１０４】
（実施の形態４）
実施の形態１乃至３では、ハードウェアアクセラレータやＤＳＰ、動的再構成可能なプロセッサの共有方法と、それに伴い非対称マルチプロセッサの構成バリエーション毎に各ＣＰＵ、ＤＳＰ、動的再構成可能なプロセッサなどの動作周波数や動作電源電圧を可変して低電力化を図る方法について説明した。更に、各バリエーションのマルチプロセッサ間におけるクロックの位相調整の方法とそれによるピーク電流の削減やＩＲドロップの低減について説明した。実施の形態４は、上記実施の形態１乃至３同様の構成をもちつつ、更に２つのメモリ使用モードを有する適用例である。
【０１０５】
図５は、本発明の実施の形態４に係る非対称マルチプロセッサの構成を示すブロック図である。本実施の形態の説明にあたり、図１と同一構成部分には同一符号を付して重複箇所の説明を省略する。
【０１０６】
図５において、非対称マルチプロセッサ４００は、第１のＣＰＵコア１０１ａ（ＣＰＵ＃１）、第２のＣＰＵコア１０１ｂ（ＣＰＵ＃２）、第１の命令キャッシュ１０２ａ（＄１）、第１のデータキャッシュ１０３ａ（＄２）、第２の命令キャッシュ１０２ｂ（＄３）、第２のデータキャッシュ１０３ｂ（＄４）、複数のＣＰＵがマルチプロセッサとして動作する際に、共通性の高い命令やデータを格納するシェアードメモリ（Shared Memory）４０１（＄５）、ＲＯＭ１０４、ＲＡＭ１０５、複数のハードウェアアクセラレータ部１０６ａ〜１０６ｅ（ＨＷ＃１〜＃５）、動的再構成可能なプロセッサである動的再構成型信号処理プロセッサ部１０７、各ＣＰＵコア１０１ａ，１０１ｂから任意のハードウェアリアクセラレータの使用許可を要求する要求信号の調停を行うハードウェアリソース調停部１１０、スレーブ接続する動的再構成型信号処理プロセッサ部１０７の信号処理内容を選択する信号処理内容選択部１１１、各グループ間のクロックの位相関係を任意にずらす制御を行うクロックスキュー調停部１１２、及びクロックスキュー選択イネーブル信号１１４を基にクロック信号を遅延させるクロック遅延生成部１１３ａ〜１１３ｇを備えて構成される。
【０１０７】
シェアードメモリ４０１は、複数のプロセッサが同時にアクセス可能であり、複数のプロセッサ間でデータ共有を行う共有メモリである。
【０１０８】
第１のＣＰＵコア１０１ａ（ＣＰＵ＃１）は、第１の命令キャッシュ１０２ａ（＄１）、第１のデータキャッシュ１０３ａ（＄２）、及びバス１２０を介してＲＯＭ１０４及びＲＡＭ１０５に相互に接続され、第２のＣＰＵコア１０１ｂ（ＣＰＵ＃２）は、第２の命令キャッシュ１０２ｂ（＄３）、第２のデータキャッシュ１０３ｂ（＄４）、及びバス１２０を介してＲＯＭ１０４及びＲＡＭ１０５に相互に接続されている。
【０１０９】
また、第１のＣＰＵコア１０１ａ（ＣＰＵ＃１）及び第２のＣＰＵコア１０１ｂ（ＣＰＵ＃２）は、バス４１０を介してシェアードメモリ４０１（＄５）に接続され、シェアードメモリ４０１（＄５）は、バス１２０を介してＲＯＭ１０４及びＲＡＭ１０５に接続されている。
【０１１０】
また、第１のＣＰＵコア１０１ａ（ＣＰＵ＃１）は、バス１２１を介してハードウェアアクセラレータ部１０６ａ〜１０６ｅ（ＨＷ＃１〜＃５）、及び動的再構成型信号処理プロセッサ部１０７に接続され、第２のＣＰＵコア１０１ｂ（ＣＰＵ＃２）は、バス１２２を介してハードウェアアクセラレータ部１０６ａ〜１０６ｅ（ＨＷ＃１〜＃５）、及び動的再構成型信号処理プロセッサ部１０７にそれぞれ接続される。
【０１１１】
以下、上述のように構成された非対称マルチプロセッサ４００の動作を説明する。
【０１１２】
一般に、非対称マルチプロセッサでは、搭載された複数のＣＰＵ全てが同様に動作する場合もあるが、対称マルチプロセッサに比べれば一方のＣＰＵ処理が一時的にウエイト状態であったりするなど、常に同じ処理負荷で並列動作している訳ではなく、むしろ動作頻度や動作速度も非対称な部分が多い。
【０１１３】
そこで、非対称マルチプロセッサ４００は、複数のＣＰＵがマルチプロセッサとして動作する際に、共通性の高い命令やデータを格納するシェアードメモリ４０１を有し、ＣＰＵ毎に独自性の高い命令やデータは各ＣＰＵのキャッシュに格納する構成を実現する。非対称マルチプロセッサ４００は、シェアードメモリ４０１を、ＣＰＵのキャッシュメモリと交互にアクセス可能にし、キャッシュのミスヒット時は、キャッシュのリフィルを行う間に、ＣＰＵはシェアードメモリ４０１へのアクセスに切り替えてＣＰＵコアのウエイト動作が極力発生しないようにする。また、シェアードメモリ４０１のアクセスでミスヒットが発生した場合は、再びキャッシュへのメモリアクセスに切り替え、その裏でシェアードメモリ４０１にリフルを行う。このように、交互アクセスを行うことでリフィル動作中のアイドル時間を削減する動作モードと、マルチコア間で共通性の高いプログラムを共有する共有メモリモードの２つを使い分ける。
【０１１４】
シェアードメモリ４０１は、次の２つのメモリ使用モード[シェアードメモリモード]，[オルタネードメモリモード]により使用される。
【０１１５】
第１のメモリモード（[シェアードメモリモード]）は、第１のＣＰＵコア１０１ａ（以下、ＣＰＵ＃１と記載する）と第２のＣＰＵコア１０１ｂ（以下、ＣＰＵ＃２と記載する）がマルチプロセッサとして動作する際に、各ＣＰＵが通常命令をフェッチする命令キャッシュ（命令キャッシュ１０２ａ，１０２ｂ）や通常時にワーク領域となるデータキャッシュ（データキャッシュ１０３ａ，１０３ｂ）以外に共有するデータや命令を格納するシェアードメモリ４０１を有し、マルチプロセッサモードで且つ[シェアードメモリモード]にすると、共通性の高いプログラムはシェアードメモリ４０１に格納することでメモリ空間の効率性を高めメモリの実装面積削減を図ることができる。
【０１１６】
一方、第２のメモリモード（[オルタネードメモリモード]）は、例えば、複数のＣＰＵのうちいずれか１つのＣＰＵが、シェアードメモリ４０１を利用可能とする。例えばＣＰＵ＃１は命令メモリとして、第１の命令キャッシュ１０２ａとシェアードメモリ４０１を利用可能とする。この命令モード時において、ＣＰＵ＃１は命令キャッシュ（第１の命令キャッシュ１０２ａ）から命令をフェッチするが、キャッシュのミスヒットが発生すると、命令キャッシュ（第１の命令キャッシュ１０２ａ）はＲＯＭ１０４からリフィルを行う。この間、従来のマルチプロセッサであれば、ＣＰＵ＃１コアがウエイト状態となるのに対して、本実施の形態の第２のメモリモード（[オルタネードメモリモード]）においては、ミスヒット発生時に命令メモリ（第１の命令キャッシュ１０２ａ）のリフィル動作を行いつつ、ＣＰＵ＃１（第１の命令キャッシュ１０２ａ）はシェアードメモリ４０１から命令フェッチを行うように切り替える。その後もしシェアードメモリ４０１からのフェッチでミスヒットが発生すると、今後はシェアードメモリ４０１に対してリフィル動作を行う一方で、ＣＰＵ＃１は命令キャッシュ（第１の命令キャッシュ１０２ａ）から再びフェッチを行うように切り替える。
【０１１７】
もし、命令キャッシュ（第１の命令キャッシュ１０２ａ）にミスヒットを発生した場合、リフィル動作を行う間にシェアードメモリ４０１に切り替えてフェッチを行うが、命令キャッシュ（第１の命令キャッシュ１０２ａ）がリフィルの途中でまだ完了していないうちに、シェアードメモリ４０１側にミスヒットが発生した場合は、直ちにＣＰＵ＃１はウエイト状態に入る。もし命令キャッシュ側のリフィル動作が予め決められた値以上終わっていれば、例えば５０％以上のキャッシュ空間に対して新しい命令の入れ替え（リフィル）が終わっていれば、シェアードメモリ４０１からの命令キャッシュ（第１の命令キャッシュ１０２ａ）に切り替え、引き続きＣＰＵ＃１はフェッチ動作に入り、シェアードメモリ４０１のリフィルを裏で行うように制御が行われる。
【０１１８】
従来のマルチプロセッサでは、キャッシュミスヒット時にはＣＰＵがウエイトしていたのに対して、本実施の形態ではシェアードメモリ４０１を活用することで、シェアードメモリ４０１と命令キャッシュから交互にフェッチするモードを設けることでＣＰＵの処理性能を向上させることができる。一方でマルチコアプロセッサとして、コア間で共通性の高いプログラム（例えば、基本ソフト又はＯＳの一部など）をこのシェアードメモリ４０１に格納することでマルチプロセッサとして回路面積削減を図ることができる。また、この２つの特性を使い分けることができるような制御モードを用意することで回路面積、ＣＰＵ処理性能、消費電力削減を図ることができる。
【０１１９】
以上、命令メモリを例に採り説明をしたが、データメモリ側も同様である。また、第２のメモリモード（[オルターネードモード]）において、１つのＣＰＵだけがシェアードメモリを使う場合について説明したが、シェアードメモリのメモリ空間を分割して複数のＣＰＵコアが第２のメモリモード（[オルターネードモード]）を行う構成も実現可能である。
【０１２０】
以上詳細に説明したように、本実施の形態によれば、非対称マルチプロセッサ４００は、複数のＣＰＵがマルチプロセッサとして動作する際に、共通性の高い命令やデータを格納するシェアードメモリ４０１を備え、ＣＰＵ毎に独自性の高い命令やデータは各ＣＰＵのキャッシュ１０２ａ（＄１），１０３ａ（＄２），１０２ｂ（＄３），１０３ｂ（＄４）に格納する。非対称マルチプロセッサ４００は、搭載された複数のＣＰＵ全てが同様に動作する場合もあるが、対称マルチプロセッサに比べれば一方のＣＰＵ処理が一時的にウエイト状態であったりするなど、常に同じ処理負荷で並列動作している訳ではなく、むしろ動作頻度や動作速度も非対称な部分が多い。そこでシェアードメモリ４０１を、ＣＰＵのキャッシュメモリと交互にアクセスする構成を有し、キャッシュのミスヒット時は、キャッシュのリフィルを行う間に、ＣＰＵはシェアードメモリ４０１へのアクセスに切り替えてＣＰＵコアのウエイト動作が極力発生しないようにする。また、シェアードメモリ４０１のアクセスでミスヒットが発生した場合は、再びキャッシュへのメモリアクセスに切り替え、その裏でシェアードメモリ４０１にリフルを行う。このように、交互アクセスを行うことで、リフィル動作中のアイドル時間を削減する動作モードと、マルチコア間で共通性の高いプログラムを共有する共有メモリモードの２つを使い分けることのできる構成を有する。これにより、マルチコアプロセッシングにおいて共通性の高い基本ソフト（ＯＳ）などのプログラムを格納する共有メモリ領域を用意することで面積削減する効果がある。
【０１２１】
また、本実施の形態では、シェアードメモリ領域を、ＣＰＵの１次キャッシュの一部として切り替えて使用するモードを有する。これにより、ＣＰＵのキャッシュのミスヒット時にリフィル動作が発生してもＣＰＵのアイドル時間が発生しない。したがって、ＣＰＵの処理性能が向上する効果がある。
【０１２２】
以上の説明は本発明の好適な実施の形態の例証であり、本発明の範囲はこれに限定されることはない。
【０１２３】
また、本実施の形態では非対称マルチプロセッサという名称を用いたが、これは説明の便宜上であり、マルチプロセッサシステム等であってもよいことは勿論である。
【０１２４】
さらに、上記非対称マルチプロセッサを構成するプロセッサコア、ＤＳＰコア、ハードウェアアクセラレータ、動的再構成可能なプロセッサの種類、その数及び接続方法など、さらにはハードウェアリソース調停部、クロックスキュー調停部、各選択部の構成例などは前述した実施の形態に限られない。
【産業上の利用可能性】
【０１２５】
本発明に係る非対称マルチプロセッサは、各ＣＰＵ間でハードウェアアクセラレータを共有する構成と、各ＣＰＵのクロックの位相を調整する構成と、プロセッサの仕事量をタスク毎に分割して振り分けることで分散処理する機構を有し、メディアプロセッサやベースバンド処理プロセッサを統合したシステムＬＳＩの低電力化や小面積化に有用である。また、本発明の非対称マルチプロセッサを用いて構成したシステムＬＳＩは、特に“デジタルＴＶ”や“デジタルラジオ”、“オーディオ再生”、“インターネット通信”、“テレビ電話”、“無線ＬＡＮ”、“高性能グラフィック処理を必要とするゲーム”などを１台の電子機器で行える携帯電話機や携帯型ゲーム機、携帯型電子手帳、携帯型ビデオカメラなどに応用できる。
【図面の簡単な説明】
【０１２６】
【図１】本発明の実施の形態１に係る非対称マルチプロセッサの構成を示すブロック図
【図２】上記実施の形態に係る非対称マルチプロセッサの動的再構成型信号処理プロセッサ部の構成例を示す図
【図３】上記実施の形態に係る非対称マルチプロセッサのクロックスキューコントロール機構を説明する図
【図４】本発明の実施の形態２に係る非対称マルチプロセッサの構成を示すブロック図
【図５】本発明の実施の形態４に係る非対称マルチプロセッサの構成を示すブロック図
【図６】従来の非対称マルチプロセッサの構成を示す図
【符号の説明】
【０１２７】
１００，３００，４００  非対称マルチプロセッサ
１０１ａ  第１のＣＰＵコア（ＣＰＵ＃１）
１０１ｂ  第２のＣＰＵコア（ＣＰＵ＃２）
１０２ａ  第１の命令キャッシュ（＄１）
１０２ｂ  第２の命令キャッシュ（＄３）
１０３ａ  第１のデータキャッシュ（＄２）
１０３ｂ  第２のデータキャッシュ（＄４）
１０４  ＲＯＭ
１０５  ＲＡＭ
１０６ａ〜１０６ｅ  ハードウェアアクセラレータ部（ＨＷ＃１〜＃５）
１０７  動的再構成型信号処理プロセッサ部
１１０，３１０  ハードウェアリソース調停部
１１１  信号処理内容選択部
１１２  クロックスキュー調停部
１１３ａ〜１１３ｉ  クロック遅延生成部
１０８ａ〜１０８ｌ，２０５ａ〜２０５ｃ，２０６ａ〜２０６ｃ，２０７ａ〜２０７ｆ  プロセッサ・エレメント
１０９  コンフィグレーション情報デコード部
１２０，１２１，１２２，４１０  バス
２０１ａ，２０１ｂ  入力バッファ
２０２ａ，２０２ｂ  出力バッファ
２０３  内部バス
２０４  バスセレクタスイッチ
３０１ａ  第１のＤＳＰコア（ＤＳＰ＃１）
３０１ｂ  第２のＤＳＰコア（ＤＳＰ＃２）
３０２ａ  第１の命令ＲＡＭ（ＲＡＭ＃１）
３０２ｂ  第２の命令ＲＡＭ（ＲＡＭ＃３）
３０３ａ  第１のデータＲＡＭ（ＲＡＭ＃２）
３０３ｂ  第２のデータＲＡＭ（ＲＡＭ＃４）
３１１  コンフィグレーション信号選択部
３１２  輻輳ＤＳＰコア調停部
４０１  シェアードメモリ（＄５）
【図１】
2007328461.tif 000003
【図２】
2007328461.tif 000004
【図３】
2007328461.tif 000005
【図４】
2007328461.tif 000006
【図５】
2007328461.tif 000007
【図６】
2007328461.tif 000008