(57)【特許請求の範囲】
【請求項１】
複数のＣＰＵと、前記複数のＣＰＵのそれぞれに対応する複数のメモリとを備え、
前記複数のＣＰＵがそれぞれ対応するメモリから互いに異なるアドレスの命令コードをフェッチする要求を発生させたときには、それぞれ対応するメモリから当該命令コードを対応するＣＰＵに供給し、
前記複数のＣＰＵがそれぞれ対応するメモリから同じアドレスの命令コードをフェッチする要求を発生させたときには、前記複数のメモリのうちの１個のメモリから当該同じアドレスに対する１回のアクセスで読み出した当該命令コードを、前記複数のＣＰＵに並列に供給し、
前記メモリは命令キャッシュメモリであり、命令バッファをさらに備え、前記命令バッファは、前記複数のＣＰＵと前記複数の命令キャッシュメモリとに接続され、
前記命令バッファは、前記複数のＣＰＵが、所定期間内に同じアドレスの命令コードをフェッチする要求を発生させたときには、前記複数の命令キャッシュメモリのうちの１個の命令キャッシュメモリから当該アドレスに対する１回のアクセスで読み出した当該命令コードを、前記複数のＣＰＵに供給し、
前記命令バッファは、前記複数のＣＰＵが、前記所定期間内に互いに異なるアドレスの命令コードをフェッチする要求を発生させたときには、それぞれ対応する命令キャッシュメモリから当該命令コードを対応するＣＰＵに供給する、データ処理装置。
【請求項２】
請求項１において、前記複数のＣＰＵのうちＭ個のＣＰＵが前記所定期間内に同じアドレスの命令コードをフェッチする要求を発生させ、他のＮ個のＣＰＵが前記所定期間内に前記同じアドレスとは異なるアドレスの命令コードをフェッチする要求を発生させたときには（ＭとＮは整数）、
前記Ｍ個のＣＰＵに対応するＭ個の命令キャッシュメモリのうちの１個の命令キャッシュメモリから当該同じアドレスに対する１回のアクセスで読み出した当該命令コードを、前記Ｍ個のＣＰＵに供給し、
前記Ｎ個のＣＰＵに対応するＮ個の命令キャッシュメモリからは、それぞれ対応するＣＰＵに、対応する命令コードを供給する、データ処理装置。
【請求項３】
請求項１において、前記複数のメモリのうち、アクセス対象外のメモリを低消費電力モードに遷移させる、データ処理装置。
【請求項４】
複数のＣＰＵと、前記複数のＣＰＵのそれぞれに対応する複数のメモリと、命令デコード共通バスとを備え、
前記複数のＣＰＵがそれぞれ対応するメモリから互いに異なるアドレスの命令コードをフェッチする要求を発生させたときには、それぞれ対応するメモリから当該命令コードを対応するＣＰＵに供給し、
前記複数のＣＰＵがそれぞれ対応するメモリから同じアドレスの命令コードをフェッチする要求を発生させたときには、前記複数のメモリのうちの１個のメモリから当該同じアドレスに対する１回のアクセスで読み出した当該命令コードを、前記複数のＣＰＵに並列に供給し、
前記複数のＣＰＵのそれぞれは、演算実行部と命令デコード部とを含み、
前記命令デコード共通バスは、前記複数のＣＰＵの演算実行部と、前記複数のＣＰＵの命令デコード部とに接続され、
前記複数のＣＰＵが互いに異なるアドレスの命令コードをフェッチする要求を発生させたときには、それぞれ対応する命令デコード部から当該命令コードのデコード結果を対応する演算実行部に供給し、
前記複数のＣＰＵが同じアドレスの命令コードをフェッチする要求を発生させたときには、前記複数のＣＰＵの命令デコード部のうちの１個の命令デコード部がデコードした当該命令コードのデコード結果を、対応する演算実行部に並列に供給する、データ処理装置。
【請求項５】
請求項４において、前記複数の命令デコード部のうち、命令デコード動作を行わない命令デコード部を低消費電力モードに遷移させる、データ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置に関し、特にＳＩＭＤ（Single Instruction Multiple Data）型の複数ＣＰＵ（Central Processing Unit）を含むデータ処理装置に好適に利用できるものである。
【背景技術】
【０００２】
近年、メディア処理（画像処理、音声処理等）に対し、高い処理性能の要求が高まっている。メディア処理の特徴は、同じ演算を複数のメディアデータ（画素、音）に対して行う処理であるということである。このような処理に対しては、並列処理を行うことで、処理性能の向上が可能である。現在、メディア処理を並列で行う処理装置として、マルチコアＣＰＵ、ＳＩＭＤ型メディアプロセッサ、専用メディアエンジン等が開発され、各種製品に搭載されている。ここで、ＳＩＭＤは同じ演算を複数のデータに対して並列に行う処理を実現するマルチコアＣＰＵ等で構成されるデータ処理装置のアーキテクチャであり、画像処理、音声処理等のメディア処理に好適である。その理由は、これらの処理では、同じ演算を複数のメディアデータ（画素、音）に対して行うからである。
【０００３】
マルチコアＣＰＵでは、複数のＣＰＵが並列で異なるメディア処理を行う。このとき、各ＣＰＵは命令キャッシュメモリを搭載し、全ＣＰＵが同時に独立に命令をフェッチ可能である。これに対して、ＳＩＭＤ型メディアプロセッサ、専用メディアエンジンは、メディア処理に特化したアーキテクチャである。これらを用いてシステムを構成する場合は、通常、メディア処理以外を実行するＣＰＵも搭載される。
【０００４】
特許文献１には、プロセッサとキャッシュメモリと制御部とからそれぞれが構成される複数のユニットと、主記憶装置とが、共通バスを介して互いに接続され、各ユニットの制御部が専用バスで互いに接続される、マルチプロセッサシステムが開示されている。１つのユニットでキャッシュミスが発生した時、その時のアドレス情報が専用バスを介して他のユニットに転送され、他のユニットで受信したアドレスでキャッシュメモリへのアクセスを実行し、ヒットしたときにはリード対象のデータを、キャッシュミスが発生したユニットへ専用バスを介して供給する。
【０００５】
特許文献２には、それぞれ専用のキャッシュメモリが設けられた複数のプロセッサが、共通バスを介して主記憶装置に接続される、マルチプロセッサシステムが開示されている。自己のキャッシュメモリ上に目的のデータがある場合には当該キャッシュメモリから当該データを読み出し、自己のキャッシュメモリ上に目的のデータが存在せず他のキャッシュメモリ上に存在する場合には、当該他のキャッシュメモリから当該データを読み出して、当該データを要求したプロセッサに転送する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平０９−１９８３１０号公報
【特許文献２】特開平０４−２９１６４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１及び２について本発明者が検討した結果、以下のような新たな課題があることがわかった。
【０００８】
特許文献１及び２に記載されるようなＭＩＭＤ（Multiple Instruction Multiple Data）型のマルチコアＣＰＵを用いて、ＳＩＭＤ型のメディア処理を行う場合、処理が同じであるにもかかわらず、各ＣＰＵの命令キャッシュは全て動作しなければならず、消費電力が大きい。一方、ＳＩＭＤ型メディアプロセッサ、専用メディアエンジンは、効率良くメディア処理が実行可能であるが、メディア処理以外では動作しないため、メディア処理以外の処理を行うＣＰＵやメモリを別途設ける必要があるため、面積オーバヘッドが大きい。
【０００９】
このような課題を解決するための手段を以下に説明するが、その他の課題と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１０】
一実施の形態によれば、下記の通りである。
【００１１】
すなわち、一実施の形態に係るデータ処理装置は、複数のＣＰＵとそれぞれに対応する複数のメモリとを備え、複数のＣＰＵがそれぞれ対応するメモリから異なるアドレスの命令コードをフェッチするときには、それぞれを独立に動作させる。一方、複数のＣＰＵがそれぞれ対応するメモリから同じアドレスの命令コードをフェッチする要求を発生させたときには、前記複数のメモリのうちの１個のメモリから１回のアクセスで読み出した当該命令コードを、前記複数のＣＰＵに並列に供給する。
【発明の効果】
【００１２】
前記一実施の形態によって得られる効果を簡単に説明すれば下記のとおりである。
【００１３】
すなわち、複数のＣＰＵを独立に動作させたときのピーク性能を落とすことなく、複数のＣＰＵがＳＩＭＤ型の並列動作を行うときには、複数のメモリのうちの１個のみをアクセス対象とし、消費電力を抑えることができる。
【図面の簡単な説明】
【００１４】
【図１】図１は、実施形態１に係るデータ処理装置の構成例を示すブロック図である。
【図２】図２は、実施形態１に係るデータ処理装置１００において、全てのＣＰＵがＳＩＭＤ型並列動作を行う動作例を示す説明図である。
【図３】図３は、実施形態１に係るデータ処理装置１００において、一部のＣＰＵがＳＩＭＤ型並列動作を行う動作例を示す説明図である。
【図４】図４は、データ処理装置１００によるメディア処理システムの構成例を示すブロック図である。
【図５】図５は、メディア処理システムに搭載される複数ＣＰＵブロックの構成例を示すブロック図である。
【図６】図６は、実施形態２に係るデータ処理装置の構成例を示すブロック図である。
【図７】図７は、実施形態２に係るデータ処理装置１００において、全てのＣＰＵがＳＩＭＤ型並列動作を行う動作例を示す説明図である。
【図８】図８は、実施形態２に係るデータ処理装置１００において、一部のＣＰＵがＳＩＭＤ型並列動作を行う動作例を示す説明図である。
【図９】図９は、実施形態３に係るデータ処理装置の構成例を示すブロック図である。
【図１０】図１０は、実施形態３に係るデータ処理装置１００において、全てのＣＰＵがＳＩＭＤ型並列動作を行う動作例を示す説明図である。
【図１１】図１１は、実施形態３に係るデータ処理装置１００において、一部のＣＰＵがＳＩＭＤ型並列動作を行う動作例を示す説明図である。
【図１２】図１２は、実施形態４に係るデータ処理装置の構成例を示すブロック図である。
【図１３】図１３は、実施形態４に係るデータ処理装置１００において、一部のＣＰＵがＳＩＭＤ型並列動作を行う動作例を示す説明図である。
【図１４】図１４は、実施形態５に係るデータ処理装置の構成例を示すブロック図である。
【発明を実施するための形態】
【００１５】
１．実施の形態の概要
先ず、本願において開示される代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１６】
〔１〕＜１個のメモリから複数のＣＰＵへ命令フェッチ＞
本願において開示される代表的な実施の形態に係るデータ処理装置（１００）は、複数のＣＰＵ（１＿１〜１＿４）と、前記複数のＣＰＵのそれぞれに対応する複数のメモリ（２＿１〜２＿４）とを備え、以下のように構成される。
【００１７】
前記複数のＣＰＵがそれぞれ対応するメモリから互いに異なるアドレスの命令コードをフェッチする要求を発生させたときには、それぞれ対応するメモリから当該命令コードを対応するＣＰＵに供給する。
【００１８】
前記複数のＣＰＵがそれぞれ対応するメモリから同じアドレスの命令コードをフェッチする要求を発生させたときには、前記複数のメモリのうちの１個のメモリから当該同じアドレスに対する１回のアクセスで読み出した当該命令コードを、前記複数のＣＰＵに並列に供給する。
【００１９】
これにより、複数のＣＰＵを独立に動作させたときのピーク性能を落とすことなく、複数のＣＰＵがＳＩＭＤ型の並列動作を行うときには、複数のメモリのうちの１個のみをアクセス対象とし、命令フェッチのためにメモリアクセスに要する消費電力を抑えることができる。
【００２０】
〔２〕＜命令キャッシュ共通バス＞
項１において、前記メモリは命令キャッシュメモリ（２＿１〜２＿４）であり、前記データ処理装置は、命令キャッシュ共通バス（５）をさらに備え、前記命令キャッシュ共通バスは、前記複数のＣＰＵと前記複数の命令キャッシュメモリとに接続される。
【００２１】
前記複数のＣＰＵが互いに異なるアドレスの命令コードをフェッチする要求を発生させたときには、それぞれ対応する命令キャッシュメモリから当該命令コードを対応するＣＰＵに供給する。
【００２２】
前記複数のＣＰＵが同じアドレスの命令コードをフェッチする要求を発生させたときには、前記複数の命令キャッシュメモリのうちの１個の命令キャッシュメモリから当該アドレスに対する１回のアクセスで読み出した当該命令コードを、前記複数のＣＰＵに並列に供給する。
【００２３】
これにより、複数のＣＰＵを独立に動作させたときのピーク性能を落とすことなく、複数のＣＰＵがＳＩＭＤ型の並列動作を行うときには、複数の命令キャッシュメモリのうちの１個のみをアクセス対象とし、命令フェッチのために命令キャッシュメモリのアクセスに要する消費電力を抑えることができる。
【００２４】
〔３〕＜一部の複数ＣＰＵがＳＩＭＤ＞
項２において、前記複数のＣＰＵのうちＭ個のＣＰＵ（１＿１〜１＿３）が同じアドレスの命令コードをフェッチする要求を発生させ、他のＮ個のＣＰＵ（１＿４）が前記同じアドレスのとは異なるアドレスの命令コードをフェッチする要求を発生させたときには（ＭとＮは整数）、前記データ処理装置は以下のように動作する。
【００２５】
前記Ｍ個のＣＰＵに対応するＭ個の命令キャッシュメモリのうちの１個の命令キャッシュメモリから当該同じアドレスに対する１回のアクセスで読み出した当該命令コードを、前記Ｍ個のＣＰＵに並列に供給し、前記Ｎ個のＣＰＵに対応するＮ個の命令キャッシュメモリからは、それぞれ対応するＣＰＵに、対応する命令コードを供給する。
【００２６】
これにより、ＳＩＭＤ型で並列動作するＭ個のＣＰＵとそれぞれが独立に並列動作可能なＮ個のＣＰＵとを混在させることができる。
【００２７】
〔４〕＜モード設定＞
項３において、前記データ処理装置は、前記複数のＣＰＵのうちどのＣＰＵが、前記Ｍ個のＣＰＵとして機能するかを指定することが可能な、モード設定機構をさらに備える。
【００２８】
これにより、モード設定機構をマルチタスクＯＳ等によって管理させ、ＳＩＭＤ処理に適するメディア処理を割り付けるときに、対象とするＣＰＵを明示的に指定することができる。
【００２９】
〔５〕＜フェッチアドレスの監視＞
項３において、前記データ処理装置は、前記複数のＣＰＵが命令フェッチを要求するときに発行するアドレスを監視し、同じアドレスの命令コードのフェッチを要求するＣＰＵを、前記Ｍ個のＣＰＵとして指定する。
【００３０】
これにより、項４のモード設定機構を設けることなく、またはモード設定機構をＯＳ等によって管理させることなく、複数（Ｍ個）のＣＰＵに対してＳＩＭＤ並列動作することを動的かつ自律的に指定することができる。
【００３１】
〔６〕＜命令バッファ＞
項１において、前記メモリは命令キャッシュメモリ（２＿１〜２＿４）であり、前記データ処理装置は、命令バッファ（５１）をさらに備え、前記命令バッファは、前記複数のＣＰＵと前記複数の命令キャッシュメモリとに接続される。
【００３２】
前記命令バッファは、前記複数のＣＰＵが、所定期間内に同じアドレスの命令コードをフェッチする要求を発生させたときには、前記複数の命令キャッシュメモリのうちの１個の命令キャッシュメモリから当該アドレスに対する１回のアクセスで読み出した当該命令コードを、前記複数のＣＰＵに供給する。
【００３３】
前記命令バッファは、前記複数のＣＰＵが、前記所定期間内に互いに異なるアドレスの命令コードをフェッチする要求を発生させたときには、それぞれ対応する命令キャッシュメモリから当該命令コードを対応するＣＰＵに供給する。
【００３４】
これにより、ＳＩＭＤ型で並列動作する複数ＣＰＵの命令フェッチのタイミングがずれた場合でも、そのずれを吸収して、複数の命令キャッシュメモリのうちの１個のみをアクセス対象とし、命令フェッチのために命令キャッシュメモリのアクセスに要する消費電力を抑えることができる。ここで、「所定期間」は、本来同時に発生する命令フェッチのタイミング（サイクル）について、許容されるべきずれの期間（サイクル）によって規定される。
【００３５】
〔７〕＜一部の複数ＣＰＵがＳＩＭＤ＞
項６において、前記複数のＣＰＵのうちＭ個のＣＰＵ（１＿１〜１＿３）が前記所定期間内に同じアドレスの命令コードをフェッチする要求を発生させ、他のＮ個のＣＰＵ（１＿４）が前記所定期間内に前記同じアドレスとは異なるアドレスの命令コードをフェッチする要求を発生させたときには（ＭとＮは整数）、前記データ処理装置は以下のように動作する。
【００３６】
前記Ｍ個のＣＰＵに対応するＭ個の命令キャッシュメモリのうちの１個の命令キャッシュメモリから当該同じアドレスに対する１回のアクセスで読み出した当該命令コードを、前記Ｍ個のＣＰＵに供給し、前記Ｎ個のＣＰＵに対応するＮ個の命令キャッシュメモリからは、それぞれ対応するＣＰＵに、対応する命令コードを供給する。
【００３７】
これにより、ＳＩＭＤ型で並列動作するＭ個のＣＰＵとそれぞれが独立に並列動作可能なＮ個のＣＰＵとを混在させることができ、さらに項６の効果を得ることができる。
【００３８】
〔８〕＜休止中の命令キャッシュを低消費電力モードに遷移＞
項１から項７のうちにいずれか１項において、前記データ処理装置は、前記複数のメモリ（命令キャッシュメモリ）（２＿１〜２＿４）のうち、アクセス対象外のメモリ（命令キャッシュメモリ）を低消費電力モードに遷移させる。
【００３９】
これにより、メモリアクセスのための消費電力を、さらに低く抑えることができる。
【００４０】
〔９〕＜命令デコード共通バス＞
項１において、前記複数のＣＰＵのそれぞれは、演算実行部（１１＿１〜１１＿４）と命令デコード部（１２＿１〜１２＿４）とを含み、前記データ処理装置は、命令デコード共通バス（８）をさらに備える。
【００４１】
前記命令デコード共通バスは、前記複数のＣＰＵの演算実行部（１１＿１〜１１＿４）と、前記複数のＣＰＵの命令デコード部（１２＿１〜１２＿４）とに接続される。
【００４２】
前記命令デコード共通バスは、前記複数のＣＰＵが互いに異なるアドレスの命令コードをフェッチする要求を発生させたときには、それぞれ対応する命令デコード部から当該命令コードのデコード結果を対応する演算実行部に供給する。
【００４３】
前記命令デコード共通バスは、前記複数のＣＰＵが同じアドレスの命令コードをフェッチする要求を発生させたときには、前記複数のＣＰＵの命令デコード部のうちの１個の命令デコード部がデコードした当該命令コードのデコード結果を、対応する演算実行部に並列に供給する。
【００４４】
これにより、複数のＣＰＵを独立に動作させたときのピーク性能を落とすことなく、複数のＣＰＵがＳＩＭＤ型の並列動作を行うときには、複数ＣＰＵの命令デコーダのうちの１個のみを動作させ、命令のフェッチに加えデコードに要する消費電力をもさらに抑えることができる。
【００４５】
〔１０〕＜休止中の命令デコーダを低消費電力モードに遷移＞
項９において、前記データ処理装置は、前記複数の命令デコード部のうち、命令デコード動作を行わない命令デコード部を低消費電力モードに遷移させる。
【００４６】
これにより、ＳＩＭＤ型の並列動作をさせるときに、命令デコードのための消費電力を、さらに低く抑えることができる。
【００４７】
〔１１〕＜１個のメモリから複数のＣＰＵへ命令フェッチ（共通バス）＞
本願において開示される代表的な実施の形態に係るデータ処理装置（１００）は、複数のＣＰＵ（１＿１〜１＿４）と、メモリ（７）と、前記複数のＣＰＵと前記メモリとを互いに接続する共通バス（６）とを備え、以下のように構成される。
【００４８】
前記複数のＣＰＵが前記メモリから互いに異なるアドレスの命令コードをフェッチする要求を発生させたときには、前記メモリのそれぞれ対応するアドレスから当該命令コードを対応するＣＰＵに順次供給する。
【００４９】
前記複数のＣＰＵが前記メモリから同じアドレスの命令コードをフェッチする要求を発生させたときには、前記メモリから当該同じアドレスに対する１回のアクセスで読み出した当該命令コードを、前記複数のＣＰＵに並列に供給する。
【００５０】
これにより、複数のＣＰＵを独立に動作させたときのピーク性能を落とすことなく、複数のＣＰＵがＳＩＭＤ型の動作を行うときには、メモリへのアクセス頻度を低減して、消費電力を抑えることができる。複数のＣＰＵが独立に並列動作するときには、共通バスは通常のバス調停を行い、ＳＩＭＤ動作を行うときには、メモリへの１回のアクセスで読み出した命令コードを、ＳＩＭＤ型で並列動作する当該複数のＣＰＵに並列に供給（ブロードキャスト）する。
【００５１】
〔１２〕＜一部の複数ＣＰＵがＳＩＭＤ＞
項１１において、前記複数のＣＰＵのうちＭ個のＣＰＵ（１＿１〜１＿３）が同じアドレスの命令コードをフェッチする要求を発生させ、他のＮ個のＣＰＵ（１＿４）が前記同じアドレスとは異なるアドレスの命令コードをフェッチする要求を発生させたときには（ＭとＮは整数）、前記データ処理装置は以下のように動作する。
【００５２】
前記Ｍ個のＣＰＵがフェッチを要求する命令コードを、前記メモリから当該同じアドレスに対する１回のアクセスで読み出し、読み出した当該命令コードを前記Ｍ個のＣＰＵに並列に供給し、前記Ｎ個のＣＰＵがフェッチを要求するそれぞれの命令コードは、前記メモリから順次読み出し、読み出した命令コードを対応するＣＰＵに順次供給する。
【００５３】
これにより、ＳＩＭＤ型で並列動作するＭ個のＣＰＵと、それぞれが独立に並列動作可能なＮ個のＣＰＵとを混在させることができる。独立に並列動作するＮ個のＣＰＵに対しては、共通バスは通常のバス調停を行い、ＳＩＭＤ並列動作を行うＭ個のＣＰＵに対しては、共通バスはメモリへの１回のアクセスで読み出した命令コードを並列に供給（ブロードキャスト）する。
【００５４】
〔１３〕＜モード設定＞
項１２において、前記データ処理装置は、前記複数のＣＰＵのうちどのＣＰＵが、前記Ｍ個のＣＰＵとして機能するかを指定することが可能な、モード設定機構をさらに備える。
【００５５】
これにより、モード設定機構をマルチタスクＯＳ等によって管理させ、ＳＩＭＤ処理に適するメディア処理を割り付けるときに、対象とするＣＰＵを明示的に指定することができる。
【００５６】
〔１４〕＜フェッチアドレスの監視＞
項１２において、前記データ処理装置は、前記複数のＣＰＵが命令フェッチを要求するときに発行するアドレスを監視し、同じアドレスの命令コードのフェッチを要求するＣＰＵを、前記Ｍ個のＣＰＵとして指定する。
【００５７】
これにより、項１３のモード設定機構を設けることなく、またはモード設定機構をＯＳ等によって管理させることなく、複数（Ｍ個）のＣＰＵに対してＳＩＭＤ並列動作することを動的かつ自律的に指定することができる。
【００５８】
〔１５〕＜１個の主メモリから複数Ｉ＄へのキャッシュフィル＞
本願において開示される代表的な実施の形態に係るデータ処理装置（１００）は、複数のＣＰＵ（１＿１〜１＿４）と、前記複数のＣＰＵにそれぞれ接続される複数の命令キャッシュメモリ（２＿１〜２＿４）と、主メモリ（７）と、前記複数の命令キャッシュメモリと前記主メモリとを互いに接続する共通バス（６）とを備え、以下のように構成される。
【００５９】
前記複数の命令キャッシュメモリが前記主メモリから互いに異なるアドレスの命令コードを読み出す要求を発生させたときには、前記主メモリのそれぞれ対応するアドレスから当該命令コードを対応する命令キャッシュメモリに順次供給する。
【００６０】
前記複数の命令キャッシュメモリが前記主メモリから同じアドレスの命令コードを読み出す要求を発生させたときには、前記主メモリから当該同じアドレスに対する１回のアクセスで読み出した当該命令コードを、前記複数の命令キャッシュメモリに並列に供給する。
【００６１】
これにより、それぞれが命令キャッシュメモリを備える複数のＣＰＵが共通バスを介して主メモリに接続されるデータ処理装置において、複数のＣＰＵを独立に動作させたときのピーク性能を落とすことなく、主メモリへのアクセス頻度を低減して、消費電力を抑えることができる。複数のＣＰＵがＳＩＭＤ型の並列動作を行うときに、複数の命令キャッシュメモリで同時に発生するキャッシュミスに伴うキャッシュフィルを、主メモリから複数の命令キャッシュメモリに対して並列に実行することができるからである。
【００６２】
〔１６〕＜一部の複数ＣＰＵがＳＩＭＤ＞
項１５において、前記データ処理装置は以下のように動作する。前記データ処理装置は前記複数のＣＰＵのうちＭ個のＣＰＵにそれぞれ接続されるＭ個の命令キャッシュメモリが同じアドレスの一連の命令コード群を前記主メモリから読み出してキャッシュフィルを行う要求を発生させる。また、前記データ処理装置は他のＮ個のＣＰＵが前記同じ一連の命令コード群とは異なり且つ互いに異なるアドレスの一連の命令コード群を読み出してキャッシュフィルを行う要求を発生させる。ここで、ＭとＮは任意の整数である。このような場合に前記データ処理装置は以下のように動作する。
【００６３】
前記Ｍ個のＣＰＵがキャッシュフィルを要求する一連の命令コード群を、前記主メモリから一連のアクセスで読み出し、読み出した当該一連の命令コード群を前記Ｍ個のＣＰＵに並列に供給し、前記Ｎ個のＣＰＵがキャッシュフィルを要求するそれぞれの一連の命令コード群は、前記主メモリから順次読み出し、対応する命令キャッシュメモリに順次供給する。
【００６４】
これにより、ＳＩＭＤ型で並列動作するＭ個のＣＰＵと、それぞれが独立に並列動作可能なＮ個のＣＰＵとを混在させることができる。独立に並列動作するＮ個のＣＰＵでキャッシュミスが発生したときには、共有バスのバス調停を行いながら、対応する命令キャッシュメモリに対してそれぞれキャッシュフィルを行う。一方、ＳＩＭＤ並列動作を行うＭ個のＣＰＵでキャッシュミスが発生したときには、共有バスのバス調停の例外として、Ｍ個のＣＰＵのうちの１個のＣＰＵに対応する命令キャッシュメモリに対して行うキャッシュフィルを、Ｍ個すべての命令キャッシュメモリに対して並列に同じキャッシュフィルを行う。このキャッシュフィルは、主メモリから共通バスを介して行われる、一連の命令コード群のブロードキャスト（並列の供給）である。
【００６５】
〔１７〕＜モード設定＞
項１６において、前記データ処理装置は、前記複数のＣＰＵのうちどのＣＰＵが、前記Ｍ個のＣＰＵとして機能するかを指定することが可能な、モード設定機構をさらに備える。
【００６６】
これにより、モード設定機構をマルチタスクＯＳ等によって管理させ、ＳＩＭＤ処理に適するメディア処理を割り付けるときに、対象とするＣＰＵを明示的に指定することができる。
【００６７】
〔１８〕＜キャッシュフィルアドレスの監視＞
項１６において、前記データ処理装置は、前記複数の命令キャッシュメモリがキャッシュフィルを要求するときに発行するアドレスを監視し、同じアドレスの命令コードのキャッシュフィルを要求する命令キャッシュメモリに対応するＣＰＵを、前記Ｍ個のＣＰＵとして指定する。
【００６８】
これにより、項１７のモード設定機構を設けることなく、またはモード設定機構をＯＳ等によって管理させることなく、ＳＩＭＤ動作する複数のＣＰＵを動的かつ自律的に指定することができる。
【００６９】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００７０】
〔実施形態１〕＜命令キャッシュ共通バス＞
図１は、実施形態１に係るデータ処理装置の構成例を示すブロック図である。
【００７１】
実施形態１に係るデータ処理装置１００は、ＣＰＵ１＿１〜１＿４と、ＣＰＵ１＿１〜１＿４のそれぞれに対応する命令キャッシュメモリ（Ｉ＄）２＿１〜２＿４とデータキャッシュメモリ（Ｄ＄）３＿１〜３＿４とを備え、ＣＰＵ１＿１〜１＿４と命令キャッシュメモリ２＿１〜２＿４との間には、命令キャッシュ共通バス５を備える。各構成要素を接続する配線は、複数ビットのディジタル信号配線によって実装されるが、図ではバス表記は省略されている。本願における他の図面についても同様である。
【００７２】
ＣＰＵ１＿１〜１＿４は、命令キャッシュ共通バス５に対して命令フェッチのためのアドレスＡｐ１〜Ａｐ４をそれぞれ発行する。
【００７３】
並列動作するＣＰＵ１＿１〜１＿４がそれぞれ独立に動作しているときは、ＭＩＭＤ型であり、同時に発行されたアドレスＡｐ１〜Ａｐ４が同じ値を取ることは、通常はない。ＣＰＵ１＿１〜１＿４はそれぞれ異なるソフトウェアを実行しているからである。仮に、並列に実行されているソフトウェアが同時に同じサブルーチンを呼び出すことがあっても、そのサブルーチンのオブジェクトコードが共有されていない限り、同じアドレスを対象とする命令フェッチは発生しない。一方、ＣＰＵ１＿１〜１＿４がＳＩＭＤ型で並列動作しているときには、全てのアドレスＡｐ１〜Ａｐ４は同一である。
【００７４】
並列動作するＣＰＵ１＿１〜１＿４がＭＩＭＤ型で動作しているときは、命令キャッシュ共通バス５は、ＣＰＵ１＿１〜１＿４がそれぞれ対応する命令キャッシュメモリ２＿１〜２＿４から互いに異なるアドレスの命令コードをフェッチする要求を発生させ、それぞれ対応する命令キャッシュメモリ２＿１〜２＿４から読み出される命令コードを、対応するＣＰＵ１＿１〜１＿４に供給する。即ち、ＣＰＵ１＿１が発行したアドレスＡｐ１はそのまま命令キャッシュメモリ２＿１をアクセスするアドレスＡｃ１として転送され、命令キャッシュメモリ２＿１から読み出された命令コードＣｃ１がＣＰＵ１＿１へそのままＣｐ１として入力され、フェッチされ、さらには実行される。以下、ＣＰＵ１＿２〜４と命令キャッシュメモリ２＿２〜４についても同様に、ＣＰＵ１＿２〜４が発行したアドレスＡｐ２〜Ａｐ４はそのまま命令キャッシュメモリ２＿２〜４のアドレスＡｃ２〜Ａｃ４とされ、命令キャッシュメモリ２＿２〜４から読み出された命令コードＣｃ２〜ＣＣ４がそのままＣｐ２〜Ｃｐ４として、ＣＰＵ１＿２〜４にそれぞれフェッチされる。
【００７５】
一方、ＣＰＵ１＿１〜１＿４がＳＩＭＤ型で並列動作しており、ＣＰＵ１＿１〜１＿４が同じアドレスの命令コードをフェッチする要求を発生させたときには、命令キャッシュメモリ２＿１〜２＿４のうちの１個の命令キャッシュメモリから当該同じアドレスに対する１回のアクセスで読み出した命令コードを、ＳＩＭＤ型で並列動作する複数のＣＰＵ１＿１〜１＿４に並列に供給する。このときの動作例について、より詳しく説明する。
【００７６】
図２は、図１に示すデータ処理装置１００において、全てのＣＰＵ１＿１〜１＿４がＳＩＭＤ型の並列動作を行う例を示す説明図である。ＣＰＵ１＿１〜１＿４は、ＳＩＭＤ型で並列動作しているので、それぞれが命令フェッチのための発行するアドレス、Ａｐ１，Ａｐ２，Ａｐ３，ＡＰ４は、全て同じ値である。命令キャッシュ共通バス５は、このアドレスを例えばＡｃ２として命令キャッシュメモリ２＿２をアクセスする。どの命令キャッシュメモリが使用されても良い。アクセスされた命令キャッシュメモリ２＿２は、対応する命令コードＣｃ２を読み出して命令キャッシュ共通バス５に供給する。命令キャッシュ共通バス５は、入力された命令コードＣｃ２をそのままＣｐ１，Ｃｐ２，Ｃｐ３，Ｃｐ４として各ＣＰＵ１＿１〜１＿４に供給する。各ＣＰＵ１＿１〜１＿４は、供給された命令コードＣｐ１＝Ｃｐ２＝Ｃｐ３＝Ｃｐ４＝Ｃｃ２をフェッチして、同一の命令を実行する。
【００７７】
これにより、複数のＣＰＵを独立に動作させたときのピーク性能を落とすことなく、複数のＣＰＵ（１＿１〜１＿４）がＳＩＭＤ型の動作を行うときには、複数のメモリ（２＿１〜２＿４）のうちの１個のみ（２＿２）をアクセス対象とし、命令フェッチのためにメモリアクセスに要する消費電力を抑えることができる。
【００７８】
複数のメモリのうちアクセス対象とされた１個を除くアクセス対象外のメモリは、低消費電力モードに移行させることにより、さらに効果的に消費電力を低減することができる。低消費電力モードとしては、例えば、電源供給を遮断し、供給される電源電圧を低くし、クロック信号の供給を遮断し、または供給されるクロック信号の周波数を低下させるなどの方法が採用され得る。ＤＶＦＳ（Dynamic Voltage and Frequency Scaling）制御を行ってもよい。ＤＶＦＳ制御とは、電源電圧と動作周波数（クロック周波数）を、回路の動作状態に応じて動的に制御する方式であって、回路の動作を休止させる場合はクロックや電源の供給を停止してもよい。
【００７９】
図２には全てのＣＰＵ１＿１〜１＿４がＳＩＭＤ型の並列動作を行う例を示したが、一部のＣＰＵがＳＩＭＤ型の並列動作を行い、他のＣＰＵがそれとは独立の動作を行ってもよい。このような場合の動作例について、より詳しく説明する。
【００８０】
図３は、図１に示すデータ処理装置１００において、一部のＣＰＵ（１＿１〜１＿３）がＳＩＭＤ型並列動作を行う動作例を示す説明図である。ＣＰＵ１＿１〜１＿４のうちＣＰＵ１＿１〜１＿３が同じアドレスの命令コードをフェッチする要求を発生させ、他のＣＰＵ１＿４がそれとは異なるアドレスの命令コードをフェッチする要求を発生させる。即ち、Ａｐ１＝Ａｐ２＝Ａｐ３≠Ａｐ４となる。命令キャッシュ共通バス５は、ＣＰＵ１＿１〜１＿３に対応する命令キャッシュメモリ２＿１〜３のうちの１個の命令キャッシュメモリから当該同じアドレスに対する１回のアクセスで読み出した命令コードを、ＣＰＵ１＿１〜１＿３に並列に供給し、ＳＩＭＤ動作していないＣＰＵ１＿４には、対応する命令キャッシュメモリ２＿４から対応する命令コードを供給する。即ち、命令キャッシュ共通バス５は、ＳＩＭＤ型で動作するＣＰＵ１＿１〜１＿３から出力されたＡｐ１＝Ａｐ２＝Ａｐ３をＡｃ２として例えば命令キャッシュメモリ２＿２をアクセスし、それらとは独立に動作するＣＰＵ１＿４から出力されたＡｐ４をＡｃ４として命令キャッシュメモリ２＿４をアクセスする。アクセスされた命令キャッシュメモリ２＿２は、対応する命令コードＣｃ２を読み出して、命令キャッシュ共通バス５を介して、そのままＣｐ１，Ｃｐ２，Ｃｐ３として各ＣＰＵ１＿１〜１＿３に供給する。各ＣＰＵ１＿１〜１＿３は、供給された命令コードＣｐ１＝Ｃｐ２＝Ｃｐ３＝Ｃｃ２をフェッチして、同一の命令を実行する。一方、アクセスされた命令キャッシュメモリ２＿４は、対応する命令コードＣｃ４を読み出して、命令キャッシュ共通バス５を介して、そのままＣｐ４として各ＣＰＵ１＿４に供給する。ＣＰＵ１＿４は、供給された命令コードＣｐ４＝Ｃｃ４をフェッチして、ＣＰＵ１＿１〜１＿３によるＳＩＭＤ型の並列動作とは異なる命令を、そのＳＩＭＤ動作と並列に実行する。
【００８１】
ＳＩＭＤ動作するＣＰＵの個数とそれ以外のＣＰＵの個数は、上述の例に依らず任意である。即ち、ＳＩＭＤ型で並列動作するＭ個のＣＰＵとそれぞれが独立に並列動作可能なＮ個のＣＰＵとを混在させることができる（ＭとＮは任意の整数）。さらに、ＳＩＭＤ型で並列動作する複数のＣＰＵによるグループを複数混在させることもできる。
【００８２】
図１〜図３には、各ＣＰＵ１＿１〜１＿４に接続される命令キャッシュメモリ（Ｉ＄）２＿１〜２＿４とデータキャッシュメモリ（Ｄ＄）３＿１〜３＿４が示されるが、これらをキャッシュフィルするメインメモリ等は図示が省略されている。命令キャッシュメモリ２＿１〜２＿４とデータキャッシュメモリ３＿１〜３＿４に共通に接続されるメインメモリ（主メモリ）、または２次キャッシュメモリとキャッシュコントローラを備えることができる。また、命令とデータを分離して、命令キャッシュメモリ２＿１〜２＿４に接続されるメイン命令メモリ（２次命令キャッシュメモリ）及び命令キャッシュコントローラと、データキャッシュメモリ３＿１〜３＿４に接続されるメインデータメモリ（２次データキャッシュメモリ）及びデータキャッシュコントローラとをそれぞれ備えても良い。また、データキャッシュメモリ３＿１〜３＿４に代えて、キャッシュ機能を備えないローカルデータメモリをそれぞれのＣＰＵ１＿１〜１＿４に接続してもよい。以上のようなメモリの階層構造、及び、それらのメモリを接続するバスの階層構造は任意である。
【００８３】
図４は、データ処理装置１００によるメディア処理システム１０００の構成例を示すブロック図である。メディア処理システム１０００は、２個の複数ＣＰＵブロック１００＿１と１００＿２と、画像処理ＩＰ１０１と、音声処理ＩＰ１０２と、ＤＭＡコントローラ１０３と、ＳＲＡＭ１０４と、フラッシュメモリ（Ｆｌａｓｈ）１０５と、タイマ等の周辺回路１０６と、外部インターフェース（Ｉ／Ｆ）１０７と、それらを相互に接続するシステムバス１０８とを含んで構成される。
【００８４】
複数ＣＰＵブロック１００＿１と１００＿２は、それぞれ、上述のデータ処理装置１００を実装したものである。詳しくは後述する。
【００８５】
画像処理ＩＰ（Intellectual Property）１０１と音声処理ＩＰ１０２とは、それぞれ画像処理と音声処理を行う専用ＩＰである。ＤＭＡ（Direct Memory Access）コントローラ１０３は、ＣＰＵを介さずにメモリ間のデータ転送を実行させるための制御回路ブロックである。ＳＲＡＭ（Static Random Access Memory）１０４と、フラッシュメモリ（Ｆｌａｓｈ）１０５は、それぞれ揮発性と不揮発性のメモリであり、ＳＲＡＭ１０５は主に処理の中間データやステータスを記憶し、フラッシュメモリ１０５は複数ＣＰＵブロック１００＿１と１００＿２で実行されるプログラムの命令コードや、定数データを記憶している。周辺回路１０６は、タイマ等の周辺回路ブロックであり、メディア処理システム１０００が提供する機能仕様に合わせて適宜選択的に搭載される。外部インターフェース（Ｉ／Ｆ：Interface）１０７は、外部との通信インターフェースであり、ネットワークインターフェースの他、画像や音声を入出力するヒューマンマシンインターフェースを提供するための機能モジュール、或いはそれらの機能モジュールと接続するためのインターフェース回路である。
【００８６】
メディア処理システム１０００は、特に制限されないが、ＳＯＣ（System On Chip）である。例えば、シリコンなどの単一半導体基板上に、公知のＣＭＯＳ（Complementary Metal-Oxide-Semiconductor field effect transistor）ＬＳＩ（Large Scale Integrated circuit）の製造技術を用いて形成される。
【００８７】
複数ＣＰＵブロック１００＿１と１００＿２について詳しく説明する。
【００８８】
図５は、メディア処理システム１０００に搭載される複数ＣＰＵブロックの構成例を示すブロック図である。複数ＣＰＵブロック１００＿１と１００＿２は、上述のデータ処理装置を実装したものであり、必ずしも同一の構成である必要はない。図５には、複数ＣＰＵブロック１００の一構成例が示される。
【００８９】
複数ＣＰＵブロック１００は、それぞれがＣＰＵと命令キャッシュメモリとデータキャッシュメモリとを備える複数（例えば４個）の単一ＣＰＵブロック１０＿１〜１０＿４と、２次キャッシュメモリ７と、キャッシュ監視部９と、セレクタ１３とを備える。単一ＣＰＵブロック１０＿１〜１０＿４は、それぞれ、ＣＰＵ１＿１〜１＿４と、命令キャッシュメモリ（Ｉ＄）２＿１〜２＿４と、データキャッシュメモリ（Ｄ＄）３＿１〜３＿４とを備える。命令キャッシュメモリ２＿１〜２＿４は、１つの単一ＣＰＵブロック１０内の１個のＣＰＵに接続されているだけではなく、同じ複数ＣＰＵブロック１００内の他の単一ＣＰＵブロック１０に含まれるＣＰＵ１＿１〜１＿４にも、命令キャッシュ共通バス５及び命令キャッシュセレクタ４＿１〜４＿４を介して接続されている。即ち、命令キャッシュ共通バス５は、各命令キャッシュメモリ２＿１〜２＿４に接続される４本のバスで構成され、命令キャッシュセレクタ４＿１〜４＿４は、当該４本のバスから１本を選択することによって、それぞれ対応するＣＰＵ１＿１〜１＿４と命令キャッシュメモリ２＿１〜２＿４との接続関係を制御する。キャッシュ監視部９は、各単一ＣＰＵブロック１０＿１〜１０＿４内の命令キャッシュメモリ２＿１〜２＿４のトランザクションを監視する機能、命令キャッシュセレクタ４＿１〜４＿４の選択情報１４を保持する機能、及び、選択情報１４を出力する機能を備えている。一方、データキャッシュメモリ３＿１〜３＿４は、それぞれの単一ＣＰＵブロック１０＿１〜１０＿４内で、対応するＣＰＵ１＿１〜１＿４にのみ接続されており、同じ複数ＣＰＵブロック１００内であっても他のＣＰＵには接続されていない。また、命令キャッシュメモリ２＿１〜２＿４とデータキャッシュメモリ３＿１〜３＿４は、同じ複数ＣＰＵブロック１００内の２次キャッシュメモリ７に接続されており、２次キャッシュメモリ７は複数ＣＰＵブロック１００外のシステムバス１０８に接続されている。キャッシュ監視部９内の選択情報１４は、例えばレジスタに保持され、システムバス１０８を介して、リード、及び、ライトできる機能を有している。
【００９０】
ここで図４には、同一構成のデータ処理装置（複数ＣＰＵブロック）１００＿１と１００＿２を含む構成例が示されるが、メディア処理システム１０００に搭載（実装）される複数ＣＰＵブロックの数は任意である。また、図５には、４個の単一ＣＰＵブロック１０＿１〜１０＿４を含む複数ＣＰＵブロック１００を例示したが、搭載（実装）される単一ＣＰＵブロックの数は適宜変更することができる。
【００９１】
＜ＯＳによるモード設定＞
命令キャッシュセレクタ４＿１〜４＿４の制御（モード設定）、すなわち、どのＣＰＵ１＿１〜１＿４がどの命令キャッシュメモリ２＿１〜２＿４を使用するかの設定は、ＯＳ（Operating System）またはユーザ（以降、ＯＳ）が決定し、その結果をキャッシュ監視部９内の選択情報１４にライトすることで、切替を行う。
【００９２】
具体的手順を以下に示す。
【００９３】
複数のＣＰＵ１＿１〜１＿４を使って、複数のアプリケーションを実行させる場合、どのＣＰＵにどのアプリケーションを割り当てるかは、ＯＳが決定し切替を行う。ＯＳは、アプリケーション毎に、何個のＣＰＵを使ったＳＩＭＤ型並列処理に適するか、どの程度の演算量（処理量）が必要か、演算（処理）を開始し終了すべきタイミング、アプリケーション間のデータや制御情報の相互依存関係などの情報に基づき、複数のアプリケーションを複数のＣＰＵに時分割で割り付ける。
【００９４】
ＳＩＭＤ型の並列処理に適するあるアプリケーションが複数のＣＰＵに割り当てられた場合に、当該複数のＣＰＵが同じ命令を実行するＳＩＭＤモードとなる。その結果として、４個全てのＣＰＵがＳＩＭＤモードになる場合や、４個のうち３個のＣＰＵがＳＩＭＤモードになり、もう１個のＣＰＵは独立して別のアプリケーションを実行する場合などがあり得る。例えば、画像処理において、カラーの画像情報をＲＧＢの３原色に分けたまま、各色のデータに対して同じ処理を行うような場合には、３個のＣＰＵをＳＩＭＤ型で並列動作させ、残り１個のＣＰＵではＯＳを動作させることができる。このような場合には、ＳＩＭＤモードとなった３個のＣＰＵに対しては、それらのＣＰＵに接続される命令キャッシュメモリが共通となるように、ＯＳがキャッシュ監視部９に適切な選択情報１４をライトする。ＯＳはタイマ等の機能を利用して適切なタイミングでＣＰＵ１＿１〜１＿４へのアプリケーションの割当を変更し、それに伴ってキャッシュ監視部９内の選択情報１４を更新する。その結果、全てがＳＩＭＤモードから抜ける場合や、新たなＣＰＵの組合せがＳＩＭＤモードになる場合がありうる。このとき、ＯＳは、各命令キャッシュメモリ２＿１〜２＿４に対して、例えばＤＶＦＳ制御を行うことにより、不使用の命令キャッシュメモリへ供給する電源の電圧を下げまたは遮断し、供給するクロックの周波数を下げまたは停止することにより、さらに消費電力を低減する。
【００９５】
＜フェッチアドレスの監視によるモード設定＞
ＯＳによるモード設定について上述した。この場合、ＯＳがどのアプリケーションをどのようなタイミングでどのＣＰＵに割り付けるかの制御を行う。これを実現するためには、ＯＳがアプリケーション毎の情報を利用してスケジューリングする必要がある。これに対して、ＯＳに詳細な制御を任せるのではなく、キャッシュ監視部９が命令キャッシュメモリ２＿１〜２＿４のトランザクションを監視することによって、ＳＩＭＤ型で並列動作するＣＰＵを自律的に抽出し、その結果に基づいて、キャッシュ監視部９内の選択情報１４を適切に更新することにより、モード設定を行うことができる。即ち、キャッシュ監視部９は、各命令キャッシュメモリ２＿１〜２＿４のトランザクションを常に監視し、複数のＣＰＵ１＿１〜１＿４が同じアドレスの命令を同じタイミングでフェッチする場合に、キャッシュ監視部９内の選択情報１４を変更し、１個の命令キャッシュメモリ２から複数のＣＰＵへ命令を供給するＳＩＭＤモードとなる。
【００９６】
ＳＩＭＤモードの構成は、上述の「ＯＳによるモード設定」の場合と同様であり、全て（例えば全４個）のＣＰＵがＳＩＭＤモードになる場合（図２参照）や、一部（例えば３個）のＣＰＵがＳＩＭＤモードになる場合（図３参照）がありうる。命令キャッシュメモリ２＿１〜２＿４に対してＤＶＦＳ制御を行うことにより、消費電力を低減することができる点についても、上述の「ＯＳによるモード設定」の場合と同様である。
【００９７】
キャッシュメモリのトランザクションの監視は、常に行うので、その結果に応じて、キャッシュ監視部９内の選択情報１４の更新も常に行われる。その結果、全てがＳＩＭＤモードから抜ける場合や、新たなＣＰＵの組合せがＳＩＭＤモードに遷移する場合がありうる。
【００９８】
〔実施形態２〕＜共通バス（バス調停／ブロードキャストの切替え・混在）＞
図６は、実施形態２に係るデータ処理装置１００の構成例を示すブロック図である。
【００９９】
実施形態２に係るデータ処理装置１００は、４個のＣＰＵ１＿１〜１＿４が、共通バス６を介してメモリ７と接続されることにより構成されている。４個のＣＰＵ１＿１〜１＿４はそれぞれ命令フェッチに当たってアドレスＡｐ１〜Ａｐ４を出力して、共通バス６に対してバス権を要求し、共通バス６では図示されないバス調停回路が所定の優先順位に基づいて調停を行い、バス権を獲得したＣＰＵから順に、メモリ７に対してアドレスＡｍを発行して命令コードＣｍを読み出してフェッチする。４個のＣＰＵ１＿１〜１＿４のうちの一部もしくは全部がＳＩＭＤ型で並列動作している場合には、本実施形態２では、共通バス６は、ＳＩＭＤ動作する複数のＣＰＵが要求するアドレスへのアクセスを１回だけ行い、読み出された命令コードＣｍを要求した複数のＣＰＵに並列に供給する（ブロードキャストする）。
【０１００】
図７は、図６のデータ処理装置１００において、４個全てのＣＰＵ１＿１〜１＿４がＳＩＭＤ型並列動作を行う動作例を示す説明図である。ＣＰＵ１＿１〜１＿４は、ＳＩＭＤ型で並列動作しているので、それぞれが命令フェッチのための発行するアドレス、Ａｐ１，Ａｐ２，Ａｐ３，ＡＰ４は、全て同じ値である。共通バス６は、このアドレスをＡｍとしてメモリ７をアクセスする。アクセスされたメモリ７は、対応する命令コードＣｍを読み出して共通バス６へ出力する。共通バス６は、入力された命令コードＣｍをそのままＣｐ１，Ｃｐ２，Ｃｐ３，Ｃｐ４として各ＣＰＵ１＿１〜１＿４に並列に供給する。各ＣＰＵ１＿１〜１＿４は、並列に供給された命令コードＣｐ１＝Ｃｐ２＝Ｃｐ３＝Ｃｐ４＝Ｃｍをフェッチして、同一の命令を実行する。
【０１０１】
これにより、複数のＣＰＵを独立に動作させたときのピーク性能を落とすことなく、複数のＣＰＵがＳＩＭＤ型の動作を行うときには、メモリ７へのアクセス頻度を低減して、消費電力を抑えることができる。複数のＣＰＵが独立に並列動作するときには、共通バスは通常のバス調停を行い、ＳＩＭＤ動作を行うときには、メモリへの１回のアクセスで読み出した命令コードを、ＳＩＭＤ型で並列動作する複数のＣＰＵに並列に供給する（ブロードキャストする）。
【０１０２】
図８は、図６のデータ処理装置１００において、一部のＣＰＵがＳＩＭＤ型並列動作を行う動作例を示す説明図である。複数のＣＰＵのうち３個のＣＰＵ１＿１〜１＿３がＳＩＭＤ型で並列動作しており、同じアドレスの命令コードをフェッチする要求を発生させ、他の１個のＣＰＵ１＿４がそのアドレスとは異なるアドレスの命令コードをフェッチする要求を発生させる。ＳＩＭＤ型で並列動作する３個のＣＰＵがフェッチを要求する命令コードを、当該同じアドレスに対する１回のアクセスでメモリ７から読み出し、読み出した命令コードを前記３個のＣＰＵに並列に供給する。残り１個のＣＰＵがフェッチを要求する命令コードは、メモリ７から前記１回のアクセスと競合しないタイミングで読み出し、読み出した命令コードを対応するＣＰＵに順次供給する。図８に示される、ＳＩＭＤ型で並列動作する３個のＣＰＵ１＿１〜１＿３が発行するアドレスＡｐ１，Ａｐ２，Ａｐ３は同じ値であり、ＣＰＵ１＿４が発行するアドレスＡｐ４は異なる（Ａｐ１＝Ａｐ２＝Ａｐ３≠Ａｐ４）。図８では太い実線で示されるように、Ａｍ＝Ａｐ１＝Ａｐ２＝Ａｐ３としてメモリ７にアクセスし、読み出されるＣｍを、ＣＰＵ１＿１〜１＿３に並列に供給する（ブロードキャストする）。このメモリアクセスと競合しないように調停された、別のタイミングにおいて、図８では破線で示されるように、Ａｍ＝Ａｐ４としてメモリ７にアクセスし、読み出されるＣｍをＣｐ４としてＣＰＵ１＿４に供給する。
【０１０３】
ＳＩＭＤ動作するＣＰＵの個数とそれ以外のＣＰＵの個数は、上述の例に依らず任意である。複数のＣＰＵのうちＭ個のＣＰＵが同じアドレスの命令コードをフェッチする要求を発生させ、他のＮ個のＣＰＵが異なるアドレスの命令コードをフェッチする要求を発生させたときには（ＭとＮは整数）、データ処理装置１００は以下のように動作する。即ち、Ｍ個のＣＰＵがフェッチを要求するアドレスの命令コードを、メモリ７から１回のアクセスで読み出し、読み出した命令コードをＳＩＭＤ動作するＭ個のＣＰＵに並列に供給（ブロードキャスト）し、他のＮ個のＣＰＵがそれぞれフェッチを要求するアドレスの命令コードは、メモリ７から順次読み出し、読み出した当該命令コードを対応するＣＰＵに順次供給する。
【０１０４】
これにより、ＳＩＭＤ型で動作するＭ個のＣＰＵと、それぞれが独立に並列動作可能なＮ個のＣＰＵとを混在させることができる。独立に並列動作するＮ個のＣＰＵに対しては、共通バスは通常のバス調停を行い、ＳＩＭＤ動作を行うＭ個のＣＰＵに対しては、共通バスはメモリへの１回のアクセスで読み出した命令コードをブロードキャストする。
【０１０５】
＜モード設定＞
本実施形態２において、データ処理装置１００は、複数のＣＰＵのうちどのＣＰＵが、ＳＩＭＤ動作するＭ個のＣＰＵとして機能するかを指定することが可能なモード設定機構を、共有バス６のバス調停回路内に備えることができる。モード設定機構によってＳＩＭＤ動作すると指定された複数のＣＰＵから同一アドレスに対する複数のアクセス要求が同時に発生したときには、それら複数のアクセス要求相互間の調停は行わず、当該同一アドレスによるメモリ７のアクセスを１回だけ実行して、その結果を指定された複数のＣＰＵに並列に供給する（ブロードキャストする）。バス調停は、そのアクセスとその他のアクセス要求との間で実行される。
【０１０６】
これにより、モード設定機構をマルチタスクＯＳ等によって管理させ、ＳＩＭＤ処理に適するメディア処理を割り付けるときに、対象とするＣＰＵを明示的に指定することができる。
【０１０７】
＜フェッチアドレスの監視＞
本実施形態２において、データ処理装置１００は、複数のＣＰＵが命令フェッチを要求するときに発行するアドレスを常に監視し、同じアドレスの命令コードのフェッチを同時に要求する複数のＣＰＵを、ＳＩＭＤ動作するＭ個のＣＰＵとして指定する。指定されたＣＰＵについては上述の「モード設定」と同様に、同じアドレスの命令コードをフェッチする複数のアクセス要求相互間の調停は行わず、当該同一アドレス対するメモリ７のアクセスを１回だけ実行して、その結果読み出された命令コードを、指定された複数のＣＰＵにブロードキャストする。バス調停は、そのアクセス要求とその他のアクセス要求との間で実行される。
【０１０８】
これにより、モード設定機構をＯＳ等によって管理させることなく、または複雑なモード設定機構を設ける必要なく、複数（Ｍ個）のＣＰＵに対してＳＩＭＤ動作することを動的かつ自律的に指定することができる。
【０１０９】
〔実施形態３〕＜ブロードキャストによる並列キャッシュフィル＞
図９は、実施形態３に係るデータ処理装置１００の構成例を示すブロック図である。
【０１１０】
実施形態３に係るデータ処理装置１００は、ＣＰＵ１＿１〜１＿４と、ＣＰＵ１＿１〜１＿４のそれぞれに対応する命令キャッシュメモリ（Ｉ＄）２＿１〜２＿４とデータキャッシュメモリ（Ｄ＄）３＿１〜３＿４と、共通バス６と、主メモリ７とを備える。
【０１１１】
ＣＰＵ１＿１〜１＿４は、それぞれ対応する命令キャッシュメモリ２＿１〜２＿４に対して命令フェッチのためのアドレスＡｐ１〜Ａｐ４を発行し、命令キャッシュメモリ２＿１〜２＿４から命令コードＣｐ１〜Ｃｐ４が供給されて動作する。命令キャッシュメモリ２＿１〜２＿４のいずれかでキャッシュミスが発生したときには、対応するキャッシュフィルアドレスＡｆ１〜Ａｆ４が共通バス６に対して発行され、主メモリ７へのアクセスが要求される。バス調停によってバス権を獲得したアクセス要求についてのアドレスが、アドレスＡｍ７となって主メモリ７がアクセスされ、データＣｍが読み出され、バス権を獲得したアクセス要求を発生した命令キャッシュメモリに対して、キャッシュフィルのためのデータ（命令コードＣｍ）が供給される。
【０１１２】
図１０は、図９のデータ処理装置１００において、全てのＣＰＵがＳＩＭＤ型並列動作を行う動作例を示す説明図である。全てのＣＰＵがＳＩＭＤ型並列動作を行う場合は、命令フェッチのために発行されるアドレスＡｐ１〜Ａｐ４は同じ値であり、読み出される命令コードＣｐ１〜Ｃｐ４も同じ値であり、命令キャッシュメモリ２＿１〜２＿４におけるキャッシュミスも同時に発生する。キャッシュミスの発生によって、複数の命令キャッシュメモリ２＿１〜２＿４が主メモリ７から同じ命令コードを読み出す要求を発生させたときには、主メモリ７からは１回のアクセスで読み出した命令コードを、複数の命令キャッシュメモリ２＿１〜２＿４に並列に供給（ブロードキャスト）する。即ちＡｍ＝Ａｆ１＝Ａｆ２＝Ａｆ３＝Ａｆ４によって主メモリ７を１回だけアクセスし、読み出されるＣｍをそのままＣｍ＝Ｃｆ１＝Ｃｆ２＝Ｃｆ３＝Ｃｆ４として各命令キャッシュメモリ２＿１〜２＿４に並列に供給（ブロードキャスト）する。ここで、「主メモリ７１回だけをアクセス」とは、キャッシュフィルに必要な一連のアドレスによる主メモリ７からの一連の命令コードの読み出しを指すものであり、各命令キャッシュメモリについて順次キャッシュフィルを行うのではないことを意味する。
【０１１３】
これにより、それぞれが命令キャッシュメモリを備える複数のＣＰＵが共通バスを介して主メモリに接続されるデータ処理装置において、複数のＣＰＵを独立に動作させたときのピーク性能を落とすことなく、主メモリへのアクセス頻度を低減して、消費電力を抑えることができる。複数のＣＰＵがＳＩＭＤ型の動作を行うときに、複数の命令キャッシュメモリで同時に発生するキャッシュミスに伴うキャッシュフィルを、主メモリから複数の命令キャッシュメモリに対して並列に実行することができるからである。
【０１１４】
図１１は、図９のデータ処理装置１００において、一部のＣＰＵがＳＩＭＤ型並列動作を行う動作例を示す説明図である。複数のＣＰＵのうち３個のＣＰＵ１＿１〜１＿３がＳＩＭＤ型で並列動作しており、同じアドレスの命令コードを命令キャッシュメモリ２＿１〜２＿３からフェッチして同一命令を実行している。他の１個のＣＰＵ１＿４は、そのアドレスとは異なるアドレスの命令コードを命令キャッシュメモリ２＿４からフェッチして実行している。キャッシュミスは、ＳＩＭＤ型で並列動作する３個のＣＰＵ１＿１〜１＿３に対応する命令キャッシュメモリ２＿１〜２＿３では同時に発生し、ＣＰＵ１＿４に対応する命令キャッシュメモリ２＿４ではそれとは無関係に発生する。ＳＩＭＤ型で並列動作する３個のＣＰＵ１＿１〜１＿３に対応する命令キャッシュメモリ２＿１〜２＿３では同時に発生したキャッシュミスは、同じキャッシュフィルアドレスを同時に要求する（Ａｆ１＝Ａｆ２＝Ａｆ３）。このとき、図１０では太い実線で示されるように、Ａｍ＝Ａｆ１＝Ａｆ２＝Ａｆ３として主メモリ７からキャッシュフィルに必要な一連の命令コードＣｍの読み出しを１回だけ行い、命令キャッシュメモリ２＿１〜２＿３に並列に供給する（ブロードキャストする）。ＣＰＵ１＿４に対応する命令キャッシュメモリ２＿４で発生するキャッシュミスについては、図１０では破線で示されるように、Ａｍ＝Ａｆ４として主メモリ７からキャッシュフィルに必要な一連の命令コードＣｍの読み出し、命令キャッシュメモリ２＿４に供給する。
【０１１５】
ＳＩＭＤ動作するＣＰＵの個数とそれ以外のＣＰＵの個数は、上述の例によらず任意である。複数のＣＰＵのうちＭ個のＣＰＵにそれぞれ接続されるＭ個の命令キャッシュメモリが同じ一連の命令コード群を主メモリから読み出してキャッシュフィルを行う要求を発生させ、他のＮ個のＣＰＵが別の一連の命令コード群を読み出してキャッシュフィルを行う要求を発生させたときには、データ処理装置１００は以下のように動作する。ここでＭとＮは任意の整数である。ＳＩＭＤ動作するＭ個のＣＰＵがキャッシュフィルを要求する一連の命令コード群を、主メモリから一連のアクセスで読み出し、読み出した当該一連の命令コード群をＳＩＭＤ動作するＭ個のＣＰＵに並列に供給する。ＳＩＭＤ動作しないそれ以外のＮ個のＣＰＵがキャッシュフィルを要求するそれぞれの一連の命令コード群は、主メモリから順次読み出し、対応する命令キャッシュメモリに順次供給する。
【０１１６】
これにより、ＳＩＭＤ型で動作するＭ個のＣＰＵと、それぞれが独立に並列動作可能なＮ個のＣＰＵとを混在させることができる。独立に並列動作するＮ個のＣＰＵでキャッシュミスが発生したときには、共有バスのバス調停を行いながら、対応する命令キャッシュメモリに対してそれぞれキャッシュフィルを行う。一方、ＳＩＭＤ動作を行うＭ個のＣＰＵでキャッシュミスが発生したときには、共有バスのバス調停の例外として、Ｍ個のＣＰＵのうちの１個のＣＰＵに対応する命令キャッシュメモリに対して行うキャッシュフィルを、Ｍ個すべての命令キャッシュメモリに対して並列に同じキャッシュフィルを行う。このキャッシュフィルは、主メモリから共通バスを介して行われる、一連の命令コード群のブロードキャストである。
【０１１７】
＜モード設定＞
本実施形態３において、データ処理装置１００は、複数のＣＰＵのうちどのＣＰＵが、ＳＩＭＤ動作するＭ個のＣＰＵとして機能するかを指定することが可能なモード設定機構を、共有バス６のバス調停回路内に備えることができる。モード設定機構によってＳＩＭＤ動作すると指定された複数のＣＰＵに対応する命令キャッシュメモリから同一キャッシュフィルアドレスの複数のアクセス要求が同時に発生したときには、それら複数のアクセス要求相互間の調停は行わない。当該同一キャッシュフィルアドレスによる主メモリ７からのキャッシュフィルを１回だけ実行して、その結果を指定された複数の命令キャッシュメモリに同時に並行してキャッシュフィルする。バス調停は、そのアクセスとその他のアクセス要求との間で実行される。
【０１１８】
これにより、モード設定機構をマルチタスクＯＳ等によって管理させ、ＳＩＭＤ処理に適するメディア処理を割り付けるときに、対象とするＣＰＵを明示的に指定することができる。
【０１１９】
＜フェッチアドレスの監視＞
本実施形態３において、データ処理装置１００は、複数の命令キャッシュメモリが要求するキャッシュフィルアドレスを常に監視し、同じアドレスのキャッシュフィルを要求する命令キャッシュメモリに対応するＣＰＵを、ＳＩＭＤ動作するＭ個のＣＰＵとして指定する。指定されたＣＰＵについては上述の「モード設定」と同様に、同時に同じアドレスについてされるキャッシュフィルのための複数のアクセス要求相互間の調停は行わず、当該同一アドレスによる主メモリ７からのキャッシュフィルを１回だけ実行して、その結果読み出された命令コードを、指定された複数の命令キャッシュメモリにブロードキャストする。バス調停は、そのアクセス要求とその他のアクセス要求との間で実行される。
【０１２０】
これにより、モード設定機構をＯＳ等によって管理させることなく、または複雑なモード設定機構を設ける必要なく、複数（Ｍ個）のＣＰＵに対してＳＩＭＤ動作することを動的かつ自律的に指定することができる。
【０１２１】
〔実施形態４〕＜命令バッファ＞
図１２は、実施形態４に係るデータ処理装置の構成例を示すブロック図である。
【０１２２】
実施形態４に係るデータ処理装置１００は、図１に示される実施形態１と同様に、ＣＰＵ１＿１〜１＿４と、ＣＰＵ１＿１〜１＿４のそれぞれに対応する命令キャッシュメモリ（Ｉ＄）２＿１〜２＿４とデータキャッシュメモリ（Ｄ＄）３＿１〜３＿４とを備え、ＣＰＵ１＿１〜１＿４と命令キャッシュメモリ２＿１〜２＿４との間には、命令キャッシュ共通バス５を備える。図１に示される実施形態１とは異なり、命令キャッシュ共通バス５には、命令バッファ５１がさらに含まれる。命令バッファ５１は、ＣＰＵ１＿１〜１＿４のうちのあるＣＰＵがフェッチした命令が、命令バッファ５１に登録されていなければ、命令バッファ５１に登録する機構をもつ。なお、登録時に、命令バッファ５１に空きがない場合は、最も過去に登録された命令を削除し、新しい命令を登録する。各ＣＰＵは、命令バッファに登録があれば命令バッファ５１から、命令バッファ５１に登録がなければ、対応する命令キャッシュメモリ２＿１〜２＿４から、命令フェッチを行う。
【０１２３】
ＳＩＭＤ型で並列動作する複数のＣＰＵは、多少時間差はあるが、同じ命令をフェッチするので、あるＣＰＵの命令フェッチで、命令バッファ５１に登録された命令を、他のＣＰＵがフェッチする可能性が高い。この場合、全ての命令キャッシュメモリを動作させる必要がないため、消費電力を低減させることが可能である。
【０１２４】
ＳＩＭＤ型の並列処理では、異なるデータに対して同一の命令、即ち同一の処理を実行し、データ依存の処理は一般的に含まれないため、同じ命令は同時にフェッチされ続けることとなる。しかし、実際のＳＩＭＤでは必ずしも同時性を保つことができない場合がある。例えば、データキャッシュメモリでキャッシュミスが発生すると、複数のデータキャッシュメモリで順次キャッシュフィルが実行されるので、キャッシュフィル完了後には同じ命令が必ずしも同じ時刻（サイクル）に実行されるとは限らない。このため、実施形態１に係るデータ処理装置１００において、ＳＩＭＤ型で並列動作する複数ＣＰＵの命令フェッチのタイミングにずれが発生すると、命令キャッシュメモリへのアクセスがばらばらに発生してしまい、消費電力を抑えることができなくなる場合がある。
【０１２５】
本実施形態４に係るデータ処理装置１００は、データバッファ５１を備えることにより、この問題を解決している。即ち、命令バッファ５１は、ＳＩＭＤ動作する複数のＣＰＵが、所定期間内に同じアドレスの命令コードをフェッチする要求を発生させたときには、対応する複数の命令キャッシュメモリのうちの１個の命令キャッシュメモリから当該同じアドレスに対する１回のアクセスで読み出した命令コードを、ＳＩＭＤ動作する複数のＣＰＵに供給することができるのである。
【０１２６】
これにより、ＳＩＭＤ型で動作する複数ＣＰＵの命令フェッチのタイミングがずれた場合でも、そのずれを吸収して、複数の命令キャッシュメモリのうちの１個のみをアクセス対象とし、命令フェッチのために命令キャッシュメモリのアクセスに要する消費電力を抑えることができる。ここで、「所定期間」は、本来同時に発生する命令フェッチのタイミング（サイクル）について、許容されるべきずれの期間（サイクル）によって規定される。命令バッファ５１のバッファサイズ、即ち保持することができる命令コードの数は、この所定期間を考慮して適切に調整される。
【０１２７】
図１３は、図１２のデータ処理装置１００において、一部のＣＰＵがＳＩＭＤ型並列動作を行う動作例を示す説明図である。ＣＰＵ１＿１〜１＿４のうちＣＰＵ１＿１〜１＿３が同じアドレスの命令コードをフェッチする要求を発生させ、他のＣＰＵ１＿４がそれとは異なるアドレスの命令コードをフェッチする要求を発生させる。このとき、Ａｐ１＝Ａｐ２＝Ａｐ３≠Ａｐ４となるが、上述のように、ＳＩＭＤ型並列動作する場合でもＡｐ１、Ａｐ２、Ａｐ３のフェッチを要求するタイミングがずれる場合がある。ここで、Ａｐ１、Ａｐ２、Ａｐ３の順にフェッチ要求が発生するものと仮定する。最初にＡｐ１のフェッチが要求されたとき、命令キャッシュ共通バス５は、ＣＰＵ１＿１〜１＿３に対応する命令キャッシュメモリ２＿１〜３のうちの１個の命令キャッシュメモリ、図１３では命令キャッシュメモリ２＿２から読み出した命令コードを、ＣＰＵ１＿１に供給するとともに、命令バッファ５１に保持する。次にＡｐ２のフェッチ要求が発生した時には、Ａｐ１とそれに対応する命令コードが命令バッファ５１に保持されている。フェッチ要求されたＡｐ２は保持されているＡｐ１と比較される。この比較の結果、フェッチ要求されたアドレスが一致するので、対応する命令コードは、命令キャッシュメモリ２＿２にアクセスすることなく、命令バッファ５１からＣＰＵ２＿２に供給される。その後、Ａｐ３のフェッチ要求が発生した時にも、Ａｐ１とそれに対応する命令コードが命令バッファ５１に保持されているので、フェッチ要求されたＡｐ３は保持されているＡｐ１と一致する。そのため、要求されたＡｐ３に対応する命令コードと同一である、Ａｐ１に対応する命令コードが、命令キャッシュメモリ２＿２にアクセスすることなく、命令バッファ５１からＣＰＵ２＿３に供給される。このように、ＳＩＭＤ並列動作するＣＰＵ１＿１〜１＿３からのフェッチ要求は、多少ずれたとしても、命令バッファ５１によってそのずれが吸収され、命令キャッシュメモリ２＿２へのアクセスは１回だけに抑えられる。一方、ＳＩＭＤ並列動作の対象外のＣＰＵ１＿４からのフェッチ要求に係るアドレスＡｐ４は、命令バッファ５１に保持されているフェッチアドレスとは一致しないため、命令キャッシュメモリ２＿４へアクセスすることにより、命令フェッチが行われる。
【０１２８】
ＳＩＭＤ動作するＣＰＵの個数とそれ以外のＣＰＵの個数は、上述の例に依らず任意である。複数のＣＰＵのうちＳＩＭＤ動作するＭ個のＣＰＵが所定期間内に同じアドレスの命令コードをフェッチする要求を発生させ、他のＮ個のＣＰＵがその期間内に別のアドレスの命令コードをフェッチする要求を発生させたときには、データ処理装置は以下のように動作する。ここで、ＭとＮは任意の整数である。ＳＩＭＤ動作するＭ個のＣＰＵに対応するＭ個の命令キャッシュメモリのうちの１個の命令キャッシュメモリから当該同じアドレスに対する１回のアクセスで読み出した命令コードを、ＳＩＭＤ動作する前記Ｍ個のＣＰＵに供給し、その他のＮ個のＣＰＵには、対応するＮ個の命令キャッシュメモリのそれぞれから対応する命令コードを供給する。この機能は、所定の数のフェッチアドレスと対応する命令コードを保持することができる命令バッファ５１を備えることにより、実現することができる。命令バッファ５１は、新たなフェッチ要求がされたとき、フェッチアドレスを自身が保持するフェッチアドレスと比較し、一致するものがあれば、命令キャッシュメモリにアクセスすることなく、自身が保持する対応する命令コードを、フェッチを要求したＣＰＵに供給する。一致するものがなければ、命令キャッシュメモリにアクセスして対応する命令コードを読み出し、フェッチを要求したＣＰＵに供給するとともに、命令バッファ内に記憶する。
【０１２９】
これにより、ＳＩＭＤ型で並列動作するＭ個のＣＰＵとそれぞれが独立に並列動作可能なＮ個のＣＰＵとを混在させることができる。さらに、ＳＩＭＤ型で並列動作する複数ＣＰＵの命令フェッチのタイミングがずれた場合でも、そのずれを吸収して、複数の命令キャッシュメモリのうちの１個のみをアクセス対象とし、命令フェッチのために命令キャッシュメモリのアクセスに要する消費電力を抑えることができる。
【０１３０】
〔実施形態５〕＜命令デコード共通バス＞
図１４は、実施形態５に係るデータ処理装置の構成例を示すブロック図である。
【０１３１】
実施形態５に係るデータ処理装置１００は、ＣＰＵ１＿１〜１＿４と、ＣＰＵ１＿１〜１＿４のそれぞれに対応する命令キャッシュメモリ（Ｉ＄）２＿１〜２＿４とデータキャッシュメモリ（Ｄ＄）３＿１〜３＿４と、共通バス６と、主メモリ７とを備える。
【０１３２】
ＣＰＵ１＿１〜１＿４は、それぞれ演算実行部（ＥＸ）１１＿１〜１１＿４と命令デコーダ（ＤＥ）１２＿１〜１２＿４とを備え、データ処理装置１００は、命令デコード共有バス８をさらに備える。命令デコード共有バス８は、演算実行部（ＥＸ）１１＿１〜１１＿４と命令デコーダ（ＤＥ）１２＿１〜１２＿４とを互いに接続し、ＣＰＵ１＿１〜１＿４の各命令デコーダ１２＿１〜１２＿４の出力を、任意のＣＰＵの演算実行部（ＥＸ）１１＿１〜１１＿４に供給することができるように構成されている。より具体的には、例えば、図５に示される命令キャッシュ共通バス５と命令キャッシュセレクタ（ＳＥＬ）４＿１〜４＿４の構成と同様に構成されることで実現される。
【０１３３】
命令デコード共通バス８は、ＣＰＵ１＿１〜１＿４が互いに異なるアドレスの命令コードをフェッチする要求を発生させたときには、それぞれ対応する命令デコーダ１２＿１〜１２＿４から当該アドレスに対応する命令コードのデコード結果を、対応する演算実行部１１＿１〜１１＿４に供給する。命令デコード共通バス８は、ＣＰＵ１＿１〜１＿４のうちの複数のＣＰＵが同じアドレスの命令コードをフェッチする要求を発生させたときには、それら複数のＣＰＵの命令デコーダのうちの１個の命令デコーダがデコードした当該同じアドレスの命令コードのデコード結果を、それら複数のＣＰＵの演算実行部すべてに並列に供給する。同じアドレスの命令コードのフェッチを要求する複数のＣＰＵは、ＳＩＭＤ型の並列動作をしていると判定されたＣＰＵである。ハードウェアによる判定に代えて、ＳＩＭＤ動作する複数のＣＰＵを明示的に指定する機構を設けても良い。ＳＩＭＤ動作する複数のＣＰＵのうちの１個のＣＰＵの命令デコーダのデコード結果を、ＳＩＭＤ動作する複数のＣＰＵ全ての演算実行部に供給するように構成し、その他の命令デコーダは動作を停止させることができる。動作を停止する命令デコード部に命令コードを供給する命令フェッチ部も同様に停止させても良い。
【０１３４】
これにより、複数のＣＰＵを独立に動作させたときのピーク性能を落とすことなく、複数のＣＰＵがＳＩＭＤ型の動作を行うときには、複数ＣＰＵの命令デコーダのうちの１個のみを動作させ、命令のフェッチに加えデコードに要する消費電力をもさらに抑えることができる。
【０１３５】
本実施形態５のデータ処理装置１００において、命令デコーダ１２＿１〜１２＿４のうち、命令デコード動作を行わない命令デコーダ、さらにはそれに接続される命令フェッチ部を低消費電力モードに遷移させることができるように構成するとより好適である。ここで、低消費電力モードとしては、例えば、電源供給を遮断し、供給される電源電圧を低くし、クロック信号の供給を遮断し、または供給されるクロック信号の周波数を低下させるなどの方法が採用され得る。例えばＤＶＦＳ制御を行うことにより、不使用の命令デコーダと命令フェッチ部に供給する電源の電圧を下げまたは遮断し、供給するクロックの周波数を下げまたは停止することにより、さらに消費電力を低減する。
【０１３６】
これにより、ＳＩＭＤ型の動作をさせるときに、命令デコードのための消費電力を、さらに低く抑えることができる。
【０１３７】
図１４には、ＣＰＵ１＿１〜１＿３がＳＩＭＤ並列動作しており、同じアドレスの命令をフェッチする要求を同時に発生し、残るＣＰＵ１＿４がそれとは独立に別のプログラムを実行する、即ち異なるアドレスの命令をフェッチする要求する例が示される。データ処理装置１００には、ＳＩＭＤ動作する複数のＣＰＵを明示的に指定する機構（不図示）が設けられ、命令デコーダ１２＿２のデコード結果Ｄｄ２が、ＳＩＭＤ動作するＣＰＵ１＿１〜１＿３の演算実行部１１＿１〜１１＿３に並列に供給され、他の命令デコーダ１２＿１と１２＿３およびそれらに接続される命令フェッチ部（不図示）は動作を停止されている。ＳＩＭＤ動作していないＣＰＵ１＿４の演算実行部１１＿４と命令デコーダ１２＿４は、ＳＩＭＤ動作するＣＰＵ１＿１〜１＿３とは独立に並列に動作する。
【０１３８】
ＣＰＵ１＿１〜１＿３はＳＩＭＤ並列動作しているので、それぞれ対応する命令キャッシュメモリ２＿１〜２＿３にフェッチ要求する命令のアドレスは、本来は同じアドレスである。しかし、命令デコーダ１２＿１と１２＿３およびそれらに接続される命令フェッチ部（不図示）は動作を停止されているので、ＣＰＵ１＿２が代表してアドレスＡｃ２によりその命令フェッチを要求し、命令キャッシュメモリ２＿２から命令コードＣｃ２をフェッチする。命令デコーダ１２＿２はフェッチされた命令コードＣｃ２をデコードした結果Ｄｄ２をＳＩＭＤ並列動作するＣＰＵ１＿１〜１＿３の演算実行部１１＿１〜１１＿３に並列に供給する。一方、ＳＩＭＤ並列動作していないＣＰＵ１＿４はこれらとは独立且つ並列に、アドレスＡｃ４により命令キャッシュメモリ２＿４から命令コードＣｃ４を読み出してフェッチし、命令デコーダ１２＿４がフェッチされた命令コードＣｃ４をデコードした結果Ｄｄ４を演算実行部１１＿４に供給する。
【０１３９】
以上のように、ＳＩＭＤ並列動作するＣＰＵ１＿１〜１＿３のうち、動作する１個を除く命令デコーダ１＿１と１＿３の動作を停止させることにより、消費電力を低減することができる。命令デコーダ１＿１と１＿３を低消費電力モードに遷移させることにより、消費電力はさらに低減される。また、動作を停止する命令デコーダ１＿１と１＿３に接続される命令フェッチ部（不図示）と命令キャッシュメモリ２＿１と２＿３も動作を停止しているため、消費電力の低減に寄与しており、これらも合わせて低消費電力モードに遷移させることにより、消費電力はさらに低減される。
【０１４０】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【０１４１】
例えば、ＣＰＵは、フォンノイマン型、ハーバードアーキテクチャなど、如何なるアーキテクチャのプロセッサであってもよい。
【符号の説明】
【０１４２】
１  ＣＰＵ
２  命令キャッシュメモリ（Ｉ＄）
３  データキャッシュメモリ（Ｄ＄）
４  命令キャッシュセレクタ（ＳＥＬ）
５  命令キャッシュ共通バス
５１  命令バッファ
６  共通バス
７  メモリ（メインメモリまたは２次キャッシュメモリ）
８  命令デコード共通バス
９  キャッシュ監視部
１０  単一ＣＰＵブロック
１１  演算実行部（ＥＸ）
１２  命令デコード部（ＤＥ）
１３  セレクタ
１４  選択情報
１００  データ処理装置（複数ＣＰＵブロック）
１０１  画像処理ＩＰ
１０２  音声処理ＩＰ
１０３  ＤＭＡコントローラ
１０４  ＳＲＡＭ
１０５  フラッシュメモリ（Ｆｌａｓｈ）
１０６  周辺回路（タイマ等）
１０７  外部インターフェース（Ｉ／Ｆ）
１０８  システムバス
１０００  メディア処理システム
【図１】
0006396715.tif 000002
【図２】
0006396715.tif 000003
【図３】
0006396715.tif 000004
【図４】
0006396715.tif 000005
【図５】
0006396715.tif 000006
【図６】
0006396715.tif 000007
【図７】
0006396715.tif 000008
【図８】
0006396715.tif 000009
【図９】
0006396715.tif 000010
【図１０】
0006396715.tif 000011
【図１１】
0006396715.tif 000012
【図１２】
0006396715.tif 000013
【図１３】
0006396715.tif 000014
【図１４】
0006396715.tif 000015