(57)【要約】【課題】複数のプロセッサコアが搭載された情報処理装置において性能電力比の向上を実現する。【解決手段】例えば、６４個のプロセッサコアＰＥ０〜ＰＥ６３や、オンチップメモリＯＮ＿ＭＥＭや、これらに共通に接続されるバスＢＳなどを備えた構成において、ＰＥ０〜ＰＥ６３を低電源電圧ＶＤＤＬ、低周波数クロック（ＣＬＫＬ）で動作させ、バスＢＳを高電源電圧ＶＤＤＨ、高周波数クロックＣＬＫＨで動作させる。ＰＥ０〜ＰＥ６３のそれぞれは、ＢＳとの間の電源電圧差および周波数差を吸収するため、バスインタフェースＢＳＩＦおよび分周器ＤＩＶを備える。ＤＩＶは、ＣＬＫＨからＣＬＫＬを生成し、ＢＳＩＦは、レベルシフト機能、データ幅変換機能、およびＢＳとの間のハンドシェイク機能などを備える。【選択図】図１
2010086030.tif 000002
【特許請求の範囲】
【請求項１】
第１プロセッサコアと、
第２プロセッサコアと、
前記第１プロセッサコア及び前記第２プロセッサコアが共通に接続されるバスとを有し、
前記第１プロセッサコアは、演算を行うための第１演算部を有し、
前記第２プロセッサコアは、演算を行うための第２演算部を有し、
前記バスには、前記第１演算部に供給される最も高い電圧の電源よりも高い電圧の電源が供給され、かつ前記第２演算部に供給される最も高い電圧の電源よりも高い電圧の電源が供給され、
前記バスには、前記第１演算部に供給される最も高い周波数のクロックよりも高い周波数のクロックが供給され、かつ前記第２演算部に供給される最も高い周波数のクロックよりも高い周波数のクロックが供給されることを特徴とする情報処理装置。
【請求項２】
請求項１記載の情報処理装置において、
前記第１プロセッサコアは、前記バスと前記第１演算部との間のデータの入出力を行うための第１インタフェース部をさらに有し、
前記第２プロセッサコアは、前記バスと前記第２演算部との間のデータの入出力を行うための第２インタフェース部をさらに有し、
前記第１インタフェース部には、前記第１演算部に供給される最も高い電圧の電源よりも高い電圧の電源が供給され、かつ前記第１演算部に供給される最も高い周波数のクロックよりも高い周波数のクロックが供給され、
前記第２インタフェース部には、前記第２演算部に供給される最も高い電圧の電源よりも高い電圧の電源が供給され、かつ前記第２演算部に供給される最も高い周波数のクロックよりも高い周波数のクロックが供給されることを特徴とする情報処理装置。
【請求項３】
請求項１記載の情報処理装置において、
前記第１プロセッサコアは、前記バスと前記第１演算部との間のデータの入出力を行うための第１インタフェース部をさらに有し、
前記第２プロセッサコアは、前記バスと前記第２演算部との間のデータの入出力を行うための第２インタフェース部をさらに有し、
前記第１演算部には、第１電源及び第１クロックが供給され、
前記第２演算部には、第２電源及び第２クロックが供給され、
前記バスには、前記第１電源及び前記第２電源よりも高い電圧の第３電源が供給され、かつ前記第１クロック及び前記第２クロックよりも高い周波数の第３クロックが供給され、
前記第１インタフェース部には、前記第１電源及び前記第３電源が供給され、かつ前記第１クロック及び前記第３クロックが供給され、
前記第２インタフェース部には、前記第２電源及び前記第３電源が供給され、かつ前記第２クロック及び前記第３クロックが供給されることを特徴とする情報処理装置。
【請求項４】
請求項３記載の情報処理装置において、
前記第１クロックの第１周期において、前記バスは、前記第１プロセッサコアとの間で複数回のデータの転送を行うことが可能であり、
前記第２クロックの第１周期において、前記バスは、前記第２プロセッサコアとの間で複数回のデータの転送を行うことが可能であることを特徴とする情報処理装置。
【請求項５】
請求項３記載の情報処理装置において、
前記第１プロセッサコアは、第１の時刻において、前記バスと前記第１プロセッサコアの間の第１データ転送を要求するための第１データ転送要求信号を前記バスに送信し、
前記第２プロセッサコアは、前記第１の時刻において、前記バスと前記第２プロセッサコアの間の第２データ転送を要求するための第２データ転送要求信号を前記バスに送信し、
前記バスは、第２の時刻において前記第１データ転送を行い、
前記バスは、前記第２の時刻とは異なる第３の時刻において前記第２データ転送を行い、
前記第１の時刻、前記第２の時刻及び前記第３の時刻は、前記第１クロックの１周期の範囲内にあり、
前記第１の時刻、前記第２の時刻及び前記第３の時刻は、前記第２クロックの１周期の範囲内にあることを特徴とする情報処理装置。
【請求項６】
請求項５記載の情報処理装置において、
前記第２の時刻は、前記第３の時刻より早く、
前記第１プロセッサコア及び前記第２プロセッサコアには、優先度が設定され、
前記第１プロセッサコアの優先度は、前記第２プロセッサコアの優先度よりも高いことを特徴とする情報処理装置。
【請求項７】
請求項３記載の情報処理装置において、
前記第１インタフェース部は、前記バスに第１データ転送要求信号を送信し、前記バスより前記第１データ転送要求信号に対応するアクノリッジ信号を受信するための第１コマンド生成ブロックをさらに有し、
前記第２インタフェース部は、前記バスに第２データ転送要求信号を送信し、前記バスより前記第２データ転送要求信号に対応するアクノリッジ信号を受信するための第２コマンド生成ブロックをさらに有し、
前記第１コマンド生成ブロック及び前記第２コマンド生成ブロックには、前記第３クロックが供給されることを特徴とする情報処理装置。
【請求項８】
請求項３記載の情報処理装置において、
前記第１インタフェース部は、前記第１電源及び前記第１クロックが供給される第１レジスタと、前記第３電源及び前記第３クロックが供給される第２レジスタとを具備する第１バスインタフェースをさらに有し、
前記第２レジスタは、前記バスとの間はｎビット幅（ｎは自然数）で接続され、前記第１レジスタとの間は、ｍビット幅（ｍはｎより大きい自然数）で接続され、
前記第２レジスタは、前記バスから受信する複数分のデータを蓄え、前記第１レジスタに送信することを特徴とする情報処理装置。
【請求項９】
請求項８記載の情報処理装置において、
前記第２レジスタから前記第１レジスタに送信されるデータは、前記第１クロックに同期して送信されることを特徴とする情報処理装置。
【請求項１０】
請求項８記載の情報処理装置において、
前記第１バスインタフェースは、第１データの振幅を第２データの振幅に変換し前記第２データの振幅を前記第１データの振幅に変換するための第１レベルシフタをさらに有し、
前記第２レジスタは、前記第１レベルシフタを経由して前記第１レジスタに前記第２データを送信することを特徴とする情報処理装置。
【請求項１１】
請求項８記載の情報処理装置において、
前記第１レジスタを制御するための第１コマンド生成ブロックと、
前記第２レジスタを制御するための第２コマンド生成ブロックとをさらに有し、
前記第１レジスタには前記第１クロックが供給され、前記第２レジスタには前記第３クロックが供給されることを特徴とする情報処理装置。
【請求項１２】
請求項１１記載の情報処理装置において、
前記第１コマンド生成ブロックからの第１命令の振幅を前記第２コマンド生成ブロックが生成する命令の振幅に変換し、前記第２コマンド生成ブロックからの第２命令を前記第１コマンド生成ブロックが生成する命令の振幅に変換する第２レベルシフタをさらに有し、
前記第１コマンド生成ブロックと前記第２コマンド生成ブロックとの間の通信は、前記第２レベルシフタを介して行われることを特徴とする情報処理装置。
【請求項１３】
請求項３記載の情報処理装置において、
前記第１演算部に前記第１クロックを供給し、前記第２演算部に前記第２クロックを供給するための第１発振回路と、
前記バス、前記第１インタフェース部及び前記第２インタフェース部に前記第３クロックを供給するための第２発振回路とをさらに有することを特徴とする情報処理装置。
【請求項１４】
請求項１３記載の情報処理装置において、
前記第１プロセッサコアは、前記第１クロックと前記第３クロックの間の位相を合わせるための第１クロック同期ブロックをさらに有し、
前記第２プロセッサコアは、前記第２クロックと前記第３クロックの間の位相を合わせるための第２クロック同期ブロックをさらに有することを特徴とする情報処理装置。
【請求項１５】
請求項３記載の情報処理装置において、
前記バス、前記第１インタフェース部及び前記第２インタフェース部に前記第３クロックを供給するための第１発振回路をさらに有し、
前記第１インタフェース部は、前記第３クロックを前記第１クロックに変換して前記第１演算部に供給するための第１分周器を有し、
前記第２インタフェース部は、前記第３クロックを前記第２クロックに変換して前記第２演算部に供給するための第２分周器を有することを特徴とする情報処理装置。
【請求項１６】
請求項３記載の情報処理装置において、
前記バスとの間のデータの入出力を行うための第３インタフェース部と、データを記憶するための記憶部とを具備するオンチップメモリをさらに有し、
前記記憶部には、前記第１電源及び前記第１クロックが供給され、
前記第３インタフェース部には、前記第３電源及び前記第３クロックが供給されることを特徴とする情報処理装置。
【請求項１７】
請求項３記載の情報処理装置において、
前記バスとの間のデータの入出力を行うための第４インタフェース部と、前記情報処理装置の外部のメモリと通信を行うための通信部を有するメモリコントローラをさらに有し、
前記通信部には、前記第１電源及び前記第１クロックが供給され、
前記第４インタフェース部には、前記第３電源及び前記第３クロックが供給されることを特徴とする情報処理装置。
【請求項１８】
請求項３記載の情報処理装置において、
第１、第２及び第３電源線をさらに有し、
前記第１プロセッサコア及び前記第２プロセッサコアは、前記バスに面して配置され、
前記第１電源線は、前記第１プロセッサコアに沿って配置され、前記第１プロセッサコアに前記第１電源を供給し、
前記第２電源線は、前記第２プロセッサコアに沿って配置され、前記第２プロセッサコアに前記第２電源を供給し、
前記第３電源線は、前記バスに沿って配置され、前記バスに前記第３電源を供給することを特徴とする情報処理装置。
【請求項１９】
第１プロセッサコアと、
第２プロセッサコアと、
前記第１プロセッサコア及び前記第２プロセッサコアが共通に接続されるバスとを有し、
前記第１プロセッサコアは、演算を行うための第１演算部を有し、
前記第２プロセッサコアは、演算を行うための第２演算部を有し、
前記第１演算部には、第１クロックが供給され、
前記第２演算部には、第２クロックが供給され、
前記バスには、前記第１クロック及び前記第２クロックより周波数の高い第３クロックが供給され、
前記第１クロックの１周期の間に、前記バスと前記第１プロセッサコアとの間で複数回のデータの入出力を行い、
前記第２クロックの１周期の間に、前記バスと前記第２プロセッサコアとの間で複数回のデータの入出力を行うことを特徴とする情報処理装置。
【請求項２０】
請求項１９記載の情報処理装置において、
前記第１プロセッサコアは、前記バスと前記第１演算部との間のデータの入出力を行うための第１インタフェース部をさらに有し、
前記第２プロセッサコアは、前記バスと前記第２演算部との間のデータの入出力を行うための第２インタフェース部をさらに有し、
前記第１演算部には、第１電源が供給され、
前記第２演算部には、第２電源が供給され、
前記バスには、前記第１電源及び前記第２電源よりも電圧の高い第３電源が供給され、
前記第１インタフェース部には、前記第１電源及び前記第３電源が供給され、かつ前記第１クロック及び前記第３クロックが供給され、
前記第２インタフェース部には、前記第２電源及び前記第３電源が供給され、かつ前記第２クロック及び前記第３クロックが供給されることを特徴とする情報処理装置。
【請求項２１】
請求項１９記載の情報処理装置において、
前記第１プロセッサコアは、第１の時刻において、前記バスと前記第１プロセッサコアの間の第１データ転送を要求するための第１データ転送要求信号を前記バスに送信し、
前記第２プロセッサコアは、前記第１の時刻において、前記バスと前記第２プロセッサコアの間の第２データ転送を要求するための第２データ転送要求信号を前記バスに送信し、
前記バスは、第２の時刻において前記第１データ転送を行い、
前記バスは、前記第２の時刻とは異なる第３の時刻において前記第２データ転送を行い、
前記第１の時刻、前記第２の時刻及び前記第３の時刻は、前記第１クロックの１周期の範囲内にあり、
前記第１の時刻、前記第２の時刻及び前記第３の時刻は、前記第２クロックの１周期の間にあることを特徴とする情報処理装置。
【請求項２２】
請求項１９記載の情報処理装置において、
前記第１プロセッサコアは、前記バスと前記第１演算部との間のデータの入出力を行うための第１インタフェース部をさらに有し、
前記第２プロセッサコアは、前記バスと前記第２演算部との間のデータの入出力を行うための第２インタフェース部をさらに有し、
前記第１インタフェース部は、前記バスから受信する複数回分のデータを蓄え、前記第１演算部に送信し、
前記第２インタフェース部は、前記バスから受信する複数回分のデータを蓄え、前記第２演算部に送信することを特徴とする情報処理装置。
【請求項２３】
第１プロセッサコアと、
第２プロセッサコアと、
前記第１プロセッサコア及び前記第２プロセッサコアが共通に接続されるバスとを有し、
前記第１プロセッサコアは、演算を行うための第１演算部と、前記バスと前記第１演算部との間のデータの入出力を行うための第１インタフェース部とを有し、
前記第２プロセッサコアは、演算を行うための第２演算部と、前記バスと前記第２演算部との間のデータの入出力を行うための第２インタフェース部とを有し、
前記第１演算部には、第１クロックが供給され、
前記第２演算部には、第２クロックが供給され、
前記バスには、前記第１クロック及び前記第２クロックより周波数の高い第３クロックが供給され、
前記第１インタフェース部は、前記バスに第１データ転送要求を送信し、前記バスから前記第１データ転送要求に対応する第１アクノリッジ信号を受信し、その後前記第１データ転送要求に対応する第１データ転送を行い、
前記第２インタフェース部は、前記バスに第２データ転送要求を送信し、前記バスから前記第２データ転送要求に対応する第２アクノリッジ信号を受信し、その後前記第２データ転送要求に対応する第２データ転送を行い、
前記第１データ転送要求の送信、前記第１アクノリッジ信号の受信及び前記第１データ転送は、前記第１クロックの１周期の間に行われ、
前記第２データ転送要求の送信、前記第２アクノリッジ信号の受信及び前記第２データ転送は、前記第２クロックの１周期の間に行われることを特徴とする情報処理装置。
【請求項２４】
請求項２３記載の情報処理装置において、
前記第１演算部には、第１電源が供給され、
前記第２演算部には、第２電源が供給され、
前記バスには、前記第１電源及び前記第２電源よりも電圧の高い第３電源が供給され、
前記第１インタフェース部には、前記第１電源及び前記第３電源が供給され、かつ前記第１クロック及び前記第３クロックが供給され、
前記第２インタフェース部には、前記第２電源及び前記第３電源が供給され、かつ前記第２クロック及び前記第３クロックが供給されることを特徴とする情報処理装置。
【請求項２５】
請求項２３記載の情報処理装置において、
前記第１プロセッサコアは、第１の時刻において、前記第１データ転送要求信号を前記バスに送信し、
前記第２プロセッサコアは、前記第１の時刻において、前記第２データ転送要求信号を前記バスに送信し、
前記バスは、第２の時刻において前記第１データ転送を行い、
前記バスは、前記第２の時刻とは異なる第３の時刻において前記第２データ転送を行い、
前記第１の時刻、前記第２の時刻及び前記第３の時刻は、前記第１クロックの１周期の範囲内にあり、
前記第１の時刻、前記第２の時刻及び前記第３の時刻は、前記第２クロックの１周期の間にあることを特徴とする情報処理装置。
【請求項２６】
請求項２３記載の情報処理装置において、
前記第１インタフェース部は、前記バスから受信する複数回分のデータを蓄え、前記第１演算部に送信し、
前記第２インタフェース部は、前記バスから受信する複数回分のデータを蓄え、前記第２演算部に送信することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置に関し、特に、複数の汎用プロセッサ、あるいは、複数の専用プロセッサを用いて高い処理性能を省電力で実現する処理方式に関するものである。
【背景技術】
【０００２】
例えば、複数の汎用プロセッサ、あるいは複数の専用プロセッサを用いて高い処理性能を実現する方式として、高い処理性能を持つ汎用プロセッサを多数集積する技術が存在する。このような技術として、例えば、非特許文献１や非特許文献２には、８０個のプロセッシングエンジン（ＰＥ）を搭載したネットワークチップが示されている。一例として、非特許文献２のネットワークチップは、１．０７Ｖの電源電圧、４．２７ＧＨｚのクロック周波数で動作し、９７Ｗの消費電力で１．０ＴＦＬＯＰＳの処理性能を備えている。
【０００３】
また、特許文献１には、ＣＰＵ部、メモリ部、周辺回路等の回路ブロックに対し個別に電源電圧を供給する電源供給部を有し、回路ブロックごとに個別に供給する電圧を可変にすることが可能なマイクロコントローラが記載されている。
【特許文献１】特開２００６−３９６２３号
【非特許文献１】S.Vangal、他１３名、“An 80-Tile 1.28TFLOPS Network-on-Chip in 65nm CMOS”、2007 IEEE International Solid-State Circuits Conference Digest of Technical Papers、２００７年２月、ｐ．９８−９９
【非特許文献２】S. Vangal、他１４名、“An 80-Tile Sub-100-W TeraFLOPS Processor in 65-nm CMOS”、IEEE Journal of Solid-State Circuits、Ｖｏｌ．４３、Ｎｏ．１、２００８年１月、ｐ．２９−４１
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来では、プロセス技術の進歩によりトランジスタの微細化を進めることで、動作周波数の高速化や、電源電圧を下げることによる低電力化が実現されてきた。ところが、最近はプロセスの微細化を行い電源電圧を下げても、スイッチング電流の減少よりもリーク電流の増加が勝り、これまでのような電力スケーリングが望めなくなってきた。さらに、プロセスの微細化を行うことでトランジスタ性能のバラつきも顕著となり、動作周波数の向上も頭打ちとなってきている。その一方で、プロセスの微細化により、現在のＳｏＣ（Ｓｙｓｔｅｍ−ｏｎ−ａ−Ｃｈｉｐ）では数十個のプロセッサコアが搭載可能となり、次世代のＳｏＣでは〜１００個のプロセッサコアが搭載されることが予想される。
【０００５】
このような背景のもとで、前述した非特許文献１および非特許文献２では、１チップ上に高性能なプロセッサコアを８０個集積することで非常に高い処理性能を実現している。しかし、この方式では絶対性能向上のためにプロセッサコアを高周波数（例えば数ＧＨｚ）で動かそうとすると、電源電圧も高くしなければならないため消費電力が増大し、結果として性能電力比は、大きく低下してしまう。
【０００６】
具体的には、図２３に示すように、電源電圧を高くすると周波数（＝処理性能）は電源電圧に対しリニアで向上するが、消費電力は電源電圧の３乗で増加するため、性能電力比（＝処理性能／電力）は２乗で悪化してしまう。例えば、非特許文献２に開示された数値を用いて性能（＝ＴＦＬＯＰＳ）あたりの電力（Ｗ）を計算すると、プロセッサコアの動作周波数が１ＧＨｚと５．６７ＧＨｚのときの比は０．３８となり、ほぼ３分の１に低下していることが分かる。特に、５．６７ＧＨｚ動作時には２００Ｗ以上の電力を消費しており、ＳｏＣの冷却も大きな課題となってしまう。このように、今後のＳｏＣにおいて、処理性能の向上はもちろんであるが、それを如何に省電力で実現するかということが重要になってきている。
【０００７】
また、特許文献１では、回路ブロック毎に個別に供給電圧を低減することにより、個別に消費電力を低減することが可能となる。しかし、特許文献１には、消費電力を低減しつつ性能電力比を向上する構成については記載も示唆もされていない。
【０００８】
本発明の前記ならびにそれ以外の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００９】
本願において開示される発明のうち、代表的な実施の形態の概要を簡単に説明すれば、次のとおりである。
【００１０】
すなわち、本発明の代表的な実施の形態による情報処理装置は、第１演算部を含む第１プロセッサコアと、第２演算部を含む第２プロセッサコアと、各プロセッサコアに共通接続されたバスとを有するものとなっている。そして、バスには、第１演算部への供給電源電圧や第２演算部への供給電源電圧よりも高い電源電圧が供給され、かつ、第１演算部への供給クロックや第２演算部への供給クロックよりも高周波数のクロックが供給されることが特徴となっている。このような構成を用いると、プロセッサコアでの消費電力を抑制しつつ、各プロセッサコアでの処理性能の低下をバスの高速動作によって補償でき、結果的に、高い処理性能と高い性能電力比を備えた情報処理装置を実現可能になる。
【発明の効果】
【００１１】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すると、プロセッサコアの性能電力比を向上させることができるため、それを多数並列動作させることで高い処理性能と高い性能電力比を実現できる。
【発明を実施するための最良の形態】
【００１２】
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらは互いに無関係なものではなく、一方は他方の一部または全部の変形例、詳細、補足説明等の関係にある。また、以下の実施の形態において、要素の数等（個数、数値、量、範囲等を含む）に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でも良い。
【００１３】
さらに、以下の実施の形態において、その構成要素（要素ステップ等も含む）は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではないことは言うまでもない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数値および範囲についても同様である。
【００１４】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１５】
（実施の形態１）
本実施の形態による情報処理装置は、高い処理性能と同時に高い性能電力比を実現するために、多数の汎用プロセッサコア、専用プロセッサコアには低い電源電圧を印加し低周波数で動作させ、グローバルクロック、バス、メモリ、ＰＬＬのような発振回路（以下ではこれら４要素をまとめてグローバル系と呼ぶことにする）には高い電源電圧を印加し高周波数で動作させる方式を用いている。この方式を用いると、プロセッサコアの電源電圧を低くすることで、プロセッサコア１つあたりの性能電力比を電源電圧に対して２乗で改善することができる。ただし、周波数の低下に伴って処理性能もリニアに低下してしまうが、これに関しては多数のプロセッサコアを並列動作させることで絶対性能を確保することができる。さらに、多数のプロセッサコアが並列動作することで発生する多量のデータ通信は、グローバル系を高速動作させることでその通信性能を確保することができる。
【００１６】
この方式は、一般的なマルチプロセッサコアのＳｏＣでは、プロセッサコアで消費する電力が大半を占め、グローバル系で消費する電力の割合が小さいという性質を利用している。したがって、グローバル系を高速動作させたとしても相対的に消費電力の増加は抑制され、ＳｏＣ全体として見た場合に性能電力比を向上させることができる。例えば、０．８Ｖで動作する６４個の汎用プロセッサコアが１．０Ｖと１ＧＨｚで動作するバスで接続されたＳｏＣを想定して試算した結果、汎用プロセッサコアの動作周波数を１０ＭＨｚから２０，４０，８０ＭＨｚと向上させた場合に、電力増加量は３，９，２０％となり、性能電力比は１．９４，３．６８，６．６６倍と向上することが分かった。以降、この方式を適用した情報処理装置のより詳細な構成例等に関して説明を行う。
【００１７】
図１は、本発明の実施の形態１による情報処理装置において、その構成の一例を示すブロック図である。図１では、ＳｏＣ上の主なＩＰ（Intellectual Property）をブロックで、信号線を実線で、クロックを点線で、電源を太線で示している。図１に示す情報処理装置（Ｓｏｃ）は、主なＩＰの一例として、汎用（あるいは専用）プロセッサコアＰＥ０〜ＰＥ６３、バスＢＳ、発振器ＰＬＬ、その他のモジュールＭＯＤ０〜ＭＯＤ７、オンチップメモリＯＮ＿ＭＥＭ、メモリコントローラＤＢＳＣ、高電圧信号用のバッファ回路ＢＵＦＨ等を備えている。ＤＢＳＣは、オフチップメモリＯＦＦ＿ＭＥＭと接続される。ＰＥ０〜ＰＥ６３，ＭＯＤ０〜ＭＯＤ７，ＯＮ＿ＭＥＭ，ＤＢＳＣのそれぞれは、バスインタフェースＢＳＩＦや分周器ＤＩＶなどを含んで構成される。なお、ここでは便宜的にＰＥを６４個、ＭＯＤを８個記載したが、その個数は０個以上の幾つであっても良い。
【００１８】
ＰＥ０〜ＰＥ６３，ＭＯＤ０〜ＭＯＤ７，ＯＮ＿ＭＥＭ，ＤＢＳＣは、それぞれ信号線ＳｉｇＰ０〜ＳｉｇＰ６３，ＳｉｇＭ０〜ＳｉｇＭ７，ＳｉｇＯＭ，ＳｉｇＤを介してＢＳと接続される。なお、便宜的にこれらの信号線は１本で代表したが、０本以上の何本であっても構わない。ＰＬＬからは各ＩＰに高電圧・高周波数のクロックＣＬＫＨがバッファ回路ＢＵＦＨによって分配される。なお、ここでは簡単のためにＢＵＦＨを代表して１個のみ記載したが、ＢＵＦＨはＣＬＫＨの伝播経路上に幾つあっても良い。ＰＬＬ，ＢＳ，ＯＮ＿ＭＥＭ，ＤＢＳＣには高電源電圧ＶＤＤＨが供給され、高電圧・高周波数で動作する。一方、ＰＥ０〜ＰＥ６３，ＭＯＤ０〜ＭＯＤ７には高電源電圧ＶＤＤＨと低電源電圧ＶＤＤＬの両方が供給される。ＰＥ０〜ＰＥ６３，ＭＯＤ０〜ＭＯＤ７は、後で述べるように、内部にあるＢＳＩＦ，ＤＩＶ以外にＶＤＤＬが供給され、低電圧・低周波数で動作する。ＢＳＩＦ，ＤＩＶにはＶＤＤＨ，ＶＤＤＬの両方が供給され、異なる電圧・周波数で動作するブロック間の仲介を行う。以下、異なる電圧・周波数で動作するブロック間の仲介を行うためのブロックをインタフェース部と呼び、本実施の形態ではＢＳＩＦ、ＤＩＶがインタフェース部ＢＩＣに該当する。ここで、それぞれの電源電圧は、例えば、ＶＤＤＨが１．０〜１．２Ｖ、ＶＤＤＬが０．６〜０．８Ｖなどである。
【００１９】
図２は、図１の一部を抜き出してＩＰ周りの結線の状態をより詳細に記載したものである。図２では、ＩＰとして、ＰＥ０，ＰＥ１、メモリ用調停ブロックＡＲＢＤ、メモリリード信号選択ブロックＳＥＬ＿Ｒ、メモリライト信号選択ブロックＳＥＬ＿Ｗ、ＤＢＳＣが示され、このうちＡＲＢＤ，ＳＥＬ＿Ｒ，ＳＥＬ＿Ｗが図１のＢＳに相当する。さらに、ＰＥ内部の電源結線を説明するために代表としてＰＥ０の内部のみを詳細に記述している。ここでは、多数の構成要素を代表して演算器ＡＬＵ、命令デコーダＩＮＳＴＤＥＣ、キャッシュＣＡＣＨＥを記載したが、これ以外の要素から構成されていても構わない。これらの回路群が、ＰＥの内部で実際に演算を行う。以下、このように実際に演算処理を行う回路群を、演算部ＣＰＵＬと呼ぶ。
【００２０】
ＰＥ０内部に供給される電源はＶＤＤＬ，ＶＤＤＨの２種類があるが、ＢＳＩＦ，ＤＩＶには周波数変換とレベル変換を行うためにＶＤＤＬ，ＶＤＤＨの２種類が供給される。それ以外のＡＬＵ，ＩＮＳＴＤＥＣ，ＣＡＣＨＥ等は低周波数（図示しないクロックＣＬＫＬ）で動作するためＶＤＤＬのみが供給される。また、この例では、ＰＥ０，ＰＥ１，ＤＢＳＣの３つの例で説明するが、勿論、ＰＥが３個以上であってもよく、またＤＢＳＣの代わりにＭＯＤや他のＰＥであっても構わない。ＡＲＢＤ，ＳＥＬ＿Ｒ，ＳＥＬ＿Ｗ，ＤＢＳＣは、ＶＤＤＨが供給され、高電圧・高周波数で動作する。一方、ＰＥ０，ＰＥ１は、ＶＤＤＨ，ＶＤＤＬの両方が供給され、ＢＳＩＦ，ＤＩＶ以外は低電圧・低周波数で動作する。ＢＳＩＦ，ＤＩＶは、異なる電圧振幅・異なる周波数で動作するブロックの仲介を行う。以上の説明では、電源電圧はＶＤＤＨとＶＤＤＬの２種類に限定しクロックをＣＬＫＨとＣＬＫＬの２種類に限定したが、３種以上の電源及びクロックを併用することも可能である。その場合は、バスＢＳに、最も高電圧の電源や、高周波数のクロックを供給することが望ましい。バスＢＳは、最も負荷がかかる回路であるため、バスＢＳに高電圧の電源及び高周波数のクロックを供給することにより、通信の高安定性及び高性能が実現できるからである。
【００２１】
以上の通り、本実施の形態の情報処理装置は、バスＢＳとインタフェース部ＢＩＣに演算部ＣＰＵＬより高電圧の電源及び高周波数のクロックが供給されることを特徴とする。この構成は、前述の特許文献１とは異なる方法で、消費電力を低減しつつ性能電力比を向上できるという顕著な効果を有する。その詳細を以下で説明する。
【００２２】
前述の通り、電源電圧を上昇させると、それに伴い性能電力比は電圧の２乗で悪化する。逆に、電圧を低下させることで、性能電力比を２乗で向上することが可能となる。従って、消費電力を低減するためには、供給電圧を低減することは極めて有効である。しかしながら、供給電圧を低減することは、演算性能をも低減することにつながる。そのため特許文献１においては、動作中は供給電圧を上昇させ、待機中に供給電圧を低減することで演算性能を実現している。しかしながらこの方式では、動作中のプロセッサコアに対する消費電力の低減は期待できない。
【００２３】
これに対し実施の形態１においては、バスＢＳ及びインタフェース部ＢＩＣよりも低電圧及び低周波数のクロックを演算部ＣＰＵＬに供給することで個々のプロセッサコアの消費電力を低減し、かつ複数個のプロセッサコアを並列にバスＢＳに接続することで、ＳｏＣ全体としての演算性能を向上している。このことにより、前述の性能電力比を大幅に向上することが可能となる。すなわち、供給する電圧を増加させ個々のプロセッサの演算性能を上昇させるのではなく、プロセッサの個数を増加させつつ供給する電圧を低減させることにより、性能電力比を向上させることを可能としたのである。
【００２４】
ここで、全ての構成要素に対し供給電圧やクロック周波数を低減することが可能なわけではない。特に、バスＢＳやインタフェース部ＢＩＣ等を含むグローバル系は、複数のプロセッサコアによる大量の負荷がかかる点と、プロセッサ間の通信速度を低下させてはかえって性能を悪化させることとなる点により、高電圧の電源及び高周波数のクロックを供給して、通信性能を保障することが性能向上につながる。それに対し、一般的なマルチコアプロセッサのＳｏＣにおいてはプロセッサコアで消費する電力が大半を占めており、前述の通りプロセッサコアの数を増加させることで性能を確保することも可能であるため、プロセッサコアにおける電源を低電圧としクロックを低周波数とすることで、大幅に消費電力を低減することが可能になる。このような理由により、本実施の形態の情報処理装置は、バスＢＳとインタフェース部ＢＩＣに演算部ＣＰＵＬより高電圧の電源及び高周波数のクロックが供給される構成とした。
【００２５】
図２において、ＰＥ０とＡＲＢＤの間は、ＰＥ０からＡＲＢＤに対するリクエスト信号（アドレス信号含む）Ｒｅｑ０Ａと、Ｒｅｑ０Ａに対するアクノリッジ信号Ａｃｋ０Ａと、ＡＲＢＤからＰＥ０に対するリクエスト信号（アドレス信号含む）ＲｅｑＡ０と、ＲｅｑＡ０に対するアクノリッジ信号ＡｃｋＡ０で結ばれる。ＰＥ１とＡＲＢＤの間は、ＰＥ１からＡＲＢＤに対するリクエスト信号（アドレス信号含む）Ｒｅｑ１Ａと、Ｒｅｑ１Ａに対するアクノリッジ信号Ａｃｋ１Ａと、ＡＲＢＤからＰＥ１に対するリクエスト信号（アドレス信号含む）ＲｅｑＡ１と、ＲｅｑＡ１に対するアクノリッジ信号ＡｃｋＡ１で結ばれる。ＰＥ０とＳＥＬ＿Ｒの間は、データ信号Ｄａｔａ０Ｒで、ＰＥ１とＳＥＬ＿Ｒの間はデータ信号Ｄａｔａ１Ｒでそれぞれ結ばれる。ＰＥ０とＳＥＬ＿Ｗの間は、データ信号Ｄａｔａ０Ｗで、ＰＥ１とＳＥＬ＿Ｗの間はデータ信号Ｄａｔａ１Ｗでそれぞれ結ばれる。
【００２６】
ＡＲＢＤとＤＢＳＣの間は、ＡＲＢＤからＤＢＳＣに対するリクエスト信号（アドレス信号含む）ＲｅｑＡＤと、ＲｅｑＡＤに対するアクノリッジ信号ＡｃｋＡＤと、ＤＢＳＣからＡＲＢＤに対するリクエスト信号（アドレス信号含む）ＲｅｑＤＡと、ＲｅｑＤＡに対するアクノリッジ信号ＡｃｋＤＡで結ばれる。ＡＲＢＤとＳＥＬ＿Ｒの間は、リード制御信号ＣｔｌＲで、ＡＲＢＤとＳＥＬ＿Ｗの間は、ライト制御信号ＣｔｌＷでそれぞれ結ばれる。ＳＥＬ＿ＲとＤＢＳＣの間は、データ信号ＤａｔａＤＲで、ＳＥＬ＿ＷとＤＢＳＣの間はデータ信号ＤａｔａＤＷでそれぞれ結ばれる。ここで、いずれの信号線も便宜的に１本で代表させたが、複数本で構成されても良い。また、この図は簡単のために２個のＰＥに対してＤＢＳＣ１個としたが、ｍ対ｎの任意の構成をとっても良い。
【００２７】
図３は、図２の第１の動作例として、ＰＥ０からＤＢＳＣに対してリードリクエストが発行された際の動作波形を示している。高振幅・高周波数で駆動されるＣＬＫＨの時刻Ｔ０において、ＰＥ０からＤＢＳＣに対してリードリクエストとアドレスが発行されたとすると、時刻Ｔ０においてＲｅｑ０ＡはＩｎｖａｌｉｄ状態からリード命令Ｒ０Ａへと変化する。ＡＲＢＤは、Ｒ０Ａを受けて他からのリードリクエストがなければアクノリッジ信号を返し、時刻Ｔ１ではＡｃｋ０ＡがＩｎｖａｌｉｄからアクノリッジ命令Ａ０Ａへと変化している。続いて、ＡＲＢＤは、ＤＢＳＣに対しリードリクエストとアドレスの発行を行い、時刻Ｔ２ではＲｅｑＡＤがリード命令ＲＡＤに変化している。ＤＢＳＣは、ＲＡＤを受けて他からのリクエストがなければアクノリッジ信号を返すため、時刻Ｔ３ではＡｃｋＡＤがＩｎｖａｌｉｄからアクノリッジ命令ＡＡＤへと変化している。
【００２８】
次いで、ＤＢＳＣは、リードリクエストが発行されたアドレスに応じてＯＦＦ＿ＭＥＭへの読み出し動作を行い（この例では２クロックを要したと仮定している）、該当データが得られた時点でＡＲＢＤへ読み出し結果通知リクエスト命令ＲＤＡを発行し、同時にＤａｔａＤＲに読出し結果Ｄａｔａ０を出力する。従って、時刻Ｔ６では、ＲｅｑＤＡがＩｎｖａｌｉｄからＲＤＡへと、ＤａｔａＤＲがＩｎｖａｌｉｄからＤａｔａ０へと変化している。ＡＲＢＤは、ＲＤＡを受けて、他からのリクエストがなければアクノリッジ信号ＡＤＡを返し、ＤａｔａＤＲをＳＥＬ＿Ｒ内のバッファに格納する。このとき時刻Ｔ７では、ＡｃｋＤＡがＩｎｖａｌｉｄからＡＤＡへと変化している。
【００２９】
引き続き、ＡＲＢＤは、ＰＥ０に対し読み出し結果通知リクエスト命令ＲＡ０を発行すると共に、ＤＢＳＣとＰＥ０を接続するためＣｔｌＲをＳＰＥ０に変化させ、Ｄａｔａ０Ｒに先ほど格納したＤａｔａ０を出力する。このとき、時刻Ｔ８では、ＲｅｑＡ０がＩｎｖａｌｉｄからＲＡ０へと、ＣｔｌＲがＩｎｖａｌｉｄからＳＰＥ０へと、Ｄａｔａ０ＲがＩｎｖａｌｉｄからＤａｔａ０へと変化している。以降は、ＰＥ０が要求したデータ量の読み出しが完了するまでこの動作が繰り返される。図３の例では、Ｄａｔａ０とＤａｔａ１からなる２回の読出し動作が行われている。
【００３０】
図４は、図２の第２の動作例として、ＰＥ０とＰＥ１から同時にＤＢＳＣに対してリードリクエストが発行された際の動作波形を示している。高振幅・高周波数で駆動するＣＬＫＨの時刻Ｔ０において、ＰＥ０およびＰＥ１からＤＢＳＣに対してリードリクエストとアドレスが発行されたとすると、時刻Ｔ０において、Ｒｅｑ０ＡはＩｎｖａｌｉｄ状態からリード命令Ｒ０Ａへと、Ｒｅｑ１ＡはＩｎｖａｌｉｄ状態からリード命令Ｒ１Ａへと変化する。ＡＲＢＤは、Ｒ０Ａ，Ｒ１Ａを同時に受けるので、スケジューリングポリシーに基づき、例えばＰＥ０とＰＥ１に対して交互にリード動作を許可する。このスケジューリングポリシーは予め決めておいても良いし、動的に変更しても良い。この例では、時刻Ｔ１でＰＥ０に対してアクノリッジ信号を返し、時刻Ｔ３でＰＥ１に対してアクノリッジ信号を返しており、時刻Ｔ１ではＡｃｋ０ＡがＩｎｖａｌｉｄからアクノリッジ命令Ａ０Ａへと、時刻Ｔ３ではＡｃｋ１ＡがＩｎｖａｌｉｄからアクノリッジ命令Ａ１Ａへと変化している。
【００３１】
引き続きＡＲＢＤは、ＤＢＳＣに対しＰＥ０とＰＥ１のリードリクエストとアドレスの発行を連続して行うので、ＲｅｑＡＤは、時刻Ｔ２でＰＥ０からのリードリクエスト命令を反映したリード命令ＲＡＤに、時刻Ｔ４でＰＥ１のリードリクエスト命令を反映したリード命令ＲＡＤに、時刻Ｔ６で再びＰＥ０のリードリクエスト命令を反映したリード命令ＲＡＤに、時刻Ｔ８でＰＥ１のリードリクエスト命令を反映したリード命令ＲＡＤに変化する。ＤＢＳＣは、ＲＡＤを受けて他からのリクエストがなければアクノリッジ信号を返すため、ＡｃｋＡＤは、時刻Ｔ３でＩｎｖａｌｉｄからＰＥ０からのリードリクエスト命令に対応するアクノリッジ命令ＡＡＤへと、時刻Ｔ５でＰＥ１からのリードリクエスト命令に対応するアクノリッジ命令ＡＡＤへと、時刻Ｔ７でＰＥ０からのリードリクエスト命令に対応するアクノリッジ命令ＡＡＤへと、時刻Ｔ９でＰＥ１からのリードリクエスト命令に対応するアクノリッジ命令ＡＡＤへと順番に変化する。
【００３２】
ＤＢＳＣは、リードリクエストが発行されたアドレスに応じてＯＦＦ＿ＭＥＭへの読み出し動作を行い（この例では２クロックを要したと仮定している）、該当データが得られた時点でＡＲＢＤへ読み出し結果通知リクエスト命令ＲＤＡを発行し、同時にＤａｔａＤＲに読出し結果を出力する。ここでは、時刻Ｔ６にてＲｅｑＤＡがＩｎｖａｌｉｄからＰＥ０からのリードリクエスト命令に対応するＲＤＡへと、ＤａｔａＤＲがＩｎｖａｌｉｄからＤａｔａ００へと変化し、時刻Ｔ８にてＲｅｑＤＡがＰＥ１からのリードリクエスト命令に対応するＲＤＡへと、ＤａｔａＤＲがＤａｔａ１０へと変化し、時刻Ｔ１０にてＲｅｑＤＡがＰＥ０からのリードリクエスト命令に対応するＲＤＡへと、ＤａｔａＤＲがＤａｔａ０１へと順番に変化している。
【００３３】
ＡＲＢＤは、ＲＤＡを受けて、他からのリクエストがなければアクノリッジ信号ＡＤＡを返し、ＤａｔａＤＲをＳＥＬ＿Ｒ内のバッファに格納する。このとき、ＡｃｋＤＡは、時刻Ｔ７でＩｎｖａｌｉｄからＡＤＡへと、時刻Ｔ９でＩｎｖａｌｉｄからＡＤＡへと、時刻Ｔ１１でＩｎｖａｌｉｄからＡＤＡへと順に変化している。引き続きＡＲＢＤは、ＰＥ０とＰＥ１に対し読み出し結果通知リクエスト命令ＡＡ０，ＡＡ１を連続して発行すると共に、ＤＢＳＣとＰＥ０，ＰＥ１を連続して接続するためＣｔｌＲをＳＰＥ０，ＳＰＥ１と連続して変化させ、Ｄａｔａ０Ｒ，Ｄａｔａ１Ｒに先ほど格納したＤａｔａ００，Ｄａｔａ１０を順番に出力する。このとき時刻Ｔ８では、ＲｅｑＡ０がＩｎａｖｌｉｄからＲＡ０へと、ＣｔｌＲがＩｎｖａｌｉｄからＳＰＥ０へと、Ｄａｔａ０ＲがＩｎｖａｌｉｄからＤａｔａ００へと変化し、時刻Ｔ１０ではＲｅｑＡ１がＩｎｖａｌｉｄからＲＡ１へと、ＣｔｌＲがＳＰＥ１へと、Ｄａｔａ１ＲがＩｎｖａｌｉｄからＤａｔａ１０へと変化している。以降は、ＰＥ０，ＰＥ１が要求したデータ量の読み出しが完了するまでこの動作が繰り返される。
【００３４】
図５は、図１あるいは図２のプロセッサコアＰＥの構成例を示している。ここでは、例としてＰＥ０で説明を行うが、これ以外のＰＥ、あるいはＭＯＤも同様の構成をとる。また、ＰＥ０を構成するモジュールのうち、演算器、キャッシュなど一般的なものは簡単のため記載せず、本実施の形態により設けられたモジュールのみを記載している。図５のＰＥ０は、モジュールとして、コマンド生成ブロックＣＭＤ＿０，ＣＭＤ＿１、データレジスタＤＲＥＧ＿Ｌ，ＤＲＥＧ＿Ｈ、レベルシフタＬＳ＿Ｃ，ＬＳ＿Ｄ、分周器ＤＩＶを含んでいる。ここで、コマンド生成ブロック、データレジスタ、およびレベルシフタは、図１または図２におけるバスインタフェースＢＳＩＦを構成する。
【００３５】
ＣＭＤ＿０，ＤＲＥＧ＿Ｌは、低電圧電源ＶＤＤＬが供給され、低振幅・低周波数クロックＣＬＫＬに同期して動作する。ＣＭＤ＿０は、ＤＲＥＧ＿Ｌに対してデータラッチ用の制御信号ＣｔｌＬを出力する。ＣＭＤ＿１，ＤＲＥＧ＿Ｈは、高電圧電源ＶＤＤＨが供給され、高振幅・高周波数クロックＣＬＫＨに同期して動作する。ＣＭＤ＿１は、ＤＲＥＧ＿Ｈに対してデータラッチ用の制御信号ＣｔｌＨを出力する。ＬＳ＿Ｃ，ＬＳ＿Ｄは、ＶＤＤＬ，ＶＤＤＨの両方が供給され、異なる振幅で動作するモジュール間のレベル変換を行う。また、ＤＩＶは、ＶＤＤＬ，ＶＤＤＨの両方が供給され、前述したレベル変換機能を備えることに加え、高周波数クロックＣＬＫＨから低周波数クロックＣＬＫＬへの周波数の変換も行う。
【００３６】
ＣＭＤ＿０とＬＳ＿Ｃの間は、ＣＭＤ＿０からＬＳ＿Ｃに対するリクエスト信号（アドレス信号含む）Ｒｅｑ０Ｌと、Ｒｅｑ０Ｌに対するアクノリッジ信号Ａｃｋ０Ｌと、ＬＳ＿ＣからＣＭＤ＿０に対するリクエスト信号（アドレス信号含む）ＲｅｑＬ０と、ＲｅｑＬ０に対するアクノリッジ信号ＡｃｋＬ０で接続される。ＬＳ＿ＣとＣＭＤ＿１の間は、ＬＳ＿ＣからＣＭＤ＿１に対するリクエスト信号（アドレス信号含む）Ｒｅｑ０Ｈと、Ｒｅｑ０Ｈに対するアクノリッジ信号Ａｃｋ０Ｈと、ＣＭＤ＿１からＬＳ＿Ｃに対するリクエスト信号（アドレス信号含む）ＲｅｑＨ０と、ＲｅｑＨ０に対するアクノリッジ信号ＡｃｋＨ０で接続される。ＤＲＥＧ＿ＬとＬＳ＿Ｄの間は、データ入出力信号Ｄａｔａ０ＲＬ，Ｄａｔａ０ＷＬで接続される。ＬＳ＿ＤとＤＲＥＧ＿Ｈの間は、データ入出力信号Ｄａｔａ０ＲＨ，Ｄａｔａ０ＷＨで接続される。ＣＭＤ＿１，ＤＲＥＧ＿ＨとバスＢＳとを接続する信号Ｒｅｑ０Ａ，Ａｃｋ０Ａ，ＲｅｑＡ０，ＡｃｋＡ０，Ｄａｔａ０Ｒ，Ｄａｔａ０Ｗは、図２で説明したものと同一である。ＤＩＶには、高振幅・高周波数クロックＣＬＫＨと、低振幅・低周波数クロックＣＬＫＬが接続される。
【００３７】
以上で述べた信号のうち、Ｒｅｑ０Ｌ，Ａｃｋ０Ｌ，ＲｅｑＬ０，ＡｃｋＬ０，Ｄａｔａ０ＲＬ，Ｄａｔａ０ＷＬ，Ｒｅｑ０Ｈ，Ａｃｋ０Ｈ，ＲｅｑＨ０，ＡｃｋＨ０，Ｄａｔａ０ＲＨ，Ｄａｔａ０ＷＨは、低周波数で動作する。また、Ｒｅｑ０Ａ，Ａｃｋ０Ａ，ＲｅｑＡ０，ＡｃｋＡ０，Ｄａｔａ０Ｒ，Ｄａｔａ０Ｗは、高周波数で動作する。ここで、周波数の差を吸収するため、Ｄａｔａ０ＲＬ，Ｄａｔａ０ＷＬ，Ｄａｔａ０ＲＨ，Ｄａｔａ０ＷＨは、例えば５１２ｂｉｔなどの広いビット幅で構成され、Ｄａｔａ０Ｒ，Ｄａｔａ０Ｗは１２８ｂｉｔなどの狭いビット幅で構成される。なお、便宜的にこれらの信号線は１本で代表したが、０本以上の何本であっても構わない。
【００３８】
以上の通り、図５の構成例において、データレジスタＤＲＥＧ＿Ｈは、バスとの間は狭いビット幅であるＤａｔａ０Ｒ、Ｄａｔａ０Ｗで接続され、データレジスタＤＲＥＧ＿Ｌとの間はより広いビット幅であるＤａｔａ０ＲＨ，Ｄａｔａ０ＲＬ、Ｄａｔａ０ＷＨ，Ｄａｔａ０ＷＬで接続される。そして、図６で後述するように、データレジスタＤＲＥＧ＿Ｈはバスとの間での複数回分の通信のデータを蓄え、データレジスタＤＲＥＧ＿Ｌと通信することが可能である。この構成により、演算部ＣＰＵＬとインタフェース部ＢＩＣ及びバスＢＳとの間の動作周波数が異なっても、その動作周波数の差を吸収し正常な通信を行うことが可能となる。さらにレベルシフタＬＳ＿Ｃ及びＬＳ＿Ｄにより、演算部ＣＰＵＬとインタフェース部ＢＩＣ及びバスＢＳとの間で動作電圧が異なっても、その差を吸収し正常な通信を行うことが可能となる。
【００３９】
よって、図５の構成に基づいて、動作周波数及び電源電圧を演算部ＣＰＵＬとインタフェース部ＢＩＣ及びバスＢＳとの間で異ならせる構成を実現することが可能となる。
【００４０】
ここで、Ｄａｔａ０Ｒ及びＤａｔａ０Ｗのビット幅（自然数ｎとする）と、Ｄａｔａ０ＲＨ，Ｄａｔａ０ＲＬ、Ｄａｔａ０ＷＨ及びＤａｔａ０ＷＬとの間のビット幅（自然数ｍとする）との大きさの差は、ｎ＜ｍであれば特に限定されないが、ｍはｎの整数倍であるとより好適である。バスＢＳとＤＲＥＧ＿Ｈとの複数回の通信により、ＤＲＥＧ＿ＨとＤＲＥＧ＿Ｌとの間のビット幅ｍに等しいデータ量を蓄えることができ、効率的に通信を行えるためである。
【００４１】
さらに、ＣＭＤ＿１は、高周波数ＣＬＫＨで動作しているため、上記複数回のデータを蓄える通信を行う際に、高速でバスより送信されるＡｃｋ０ＡやＲｅｑＡ０をＣＬＫＨに同期して受け取ることが可能となる。そのため、Ｄａｔａ０ＲまたはＤａｔａ０Ｗの通信を、高速に行うことが可能となる。
【００４２】
図６は、図５の動作例として、ＰＥ０からＤＢＳＣに対してリードリクエストが発行された際の動作波形を示している。高振幅・高周波数で動作するクロックＣＬＫＨと低振幅・低周波数で動作するクロックＣＬＫＬの周波数比は１６：１としている。まず、ＣＭＤ＿０からＣＭＤ＿１に対してリードリクエスト命令が発行されたとすると、時刻Ｔ０においてＲｅｑ０ＬがＩｎｖａｌｉｄからリードリクエスト命令Ｒ０ＤＬへと変化し、ＬＳ＿Ｃを通過後はハイレベルの同リードリクエスト命令Ｒ０ＤＨへと変換される。ＣＭＤ＿１は、Ｒ０ＤＨを受けるとバスに対しリードリクエスト命令を発行する。ここでは、Ｒ０ＤＨ（Ｒ０ＤＬ）が２５６ｂｉｔの読出し命令、バスのデータ幅が１２８ｂｉｔであると仮定し、Ｒ０ＤＨ（Ｒ０ＤＬ）に伴いバスに対して２回のリードアクセス命令Ｒ０Ａを発行する。このＲ０Ａに対してバス内のモジュールがアクノリッジ信号Ａ０Ａを返す。ここでは仮に１クロック後にＡ０Ａが返されると仮定している。従って、時刻Ｔ１においてＲｅｑ０ＡはＩｎｖａｌｉｄからＲ０Ａに変化し、時刻Ｔ３に再びＲ０Ａが発行されている。Ａｃｋ０Ａは時刻Ｔ２にＩｎｖａｌｉｄからＡ０Ａに変化しており、時刻Ｔ４にも再びＩｎｖａｌｉｄからＡ０Ａに変化している。
【００４３】
ここではＲ０Ａの発行が２回完了したので、Ａｃｋ０Ｈにアクノリッジ命令Ａ０ＡＨが返される。Ａ０ＡＨはＬＳ＿Ｃによって低振幅の同命令Ａ０ＡＬへと変換される。従って、時刻Ｔ６にＡｃｋ０ＨはＩｎｖａｌｉｄからＡ０ＡＨへと変化しており、それに伴ってＡｃｋ０ＬもＡ０ＡＬと変化している。Ｒ０Ａが発行されてからあるクロック数が経過すると（ここでは８クロック後）、ＲｅｑＡ０にバスよりリードアクセスの結果を通知するリクエスト命令ＲＡ０が続けて（ここでは２回）発行されるとともに、Ｄａｔａ０Ｒは、読出し結果Ｄａｔａ０からＤａｔａ１へと続けて変化する。これに対して、ＣＭＤ＿１は、ＡｃｋＡ０にアクノリッジ命令ＡＡ０を順次（ここでは２回）出力し、ＤＲＥＧ＿Ｈに対してはデータ取込み命令Ｓ０Ａを順次（ここでは２回）発行する。これによって、ＤＲＥＧ＿Ｈでは、例えば、１２８ｂｉｔのデータが２回取り込まれ、２５６ｂｉｔのデータとして纏められる。
【００４４】
以上の例では２回の通信により１２８ｂｉｔのデータを２５６ｂｉｔのデータにまとめたが、これは２回に限定されない。バスとＤＲＥＧ＿Ｈとの間の複数回の通信によるデータを蓄え、ＤＲＥＧ＿ＨとＤＲＥＧ＿Ｌの間のビット幅で通信を行うことを特徴とし、これにより動作周波数の差を吸収することが可能となる。
【００４５】
以上でＣＭＤ＿０から発行されたリードリクエスト命令は完了したので、ＣＭＤ＿１は、ＣＭＤ＿０に向けて、同命令に応じたリクエスト信号ＲｅｑＨ０としてリードリクエストの結果通知命令ＲＡ０Ｈを発行する。同時に、ＤＲＥＧ＿Ｈは、ＤＲＥＧ＿Ｌに向けて前述したＤａｔａ０とＤａｔａ１を纏めたデータＤａｔａ０〜１Ｈを出力する。ＲＡ０Ｈは、ＬＳ＿Ｃによって同命令ＲＡ０Ｌへと変換され、また、Ｄａｔａ０〜１ＨはＬＳ＿Ｄによって低振幅のＤａｔａ０〜１Ｌへと変換される。ＣＭＤ＿０は、ＲＡ０Ｌを受取ると、同命令に対するアクノリッジ命令ＡＡ０Ｌを返し、ＤＲＥＧ＿Ｌに対してはＣｔｌＬとしてデータ取込み制御信号ＳＤ０を発行する。これにより、ＤＲＥＧ＿ＬにリードされたＤａｔａ０，Ｄａｔａ１が格納される。
【００４６】
以上の動作を実現することで、ＣＬＫＬで動作するＰＥ０（ＣＭＤ＿０）から見ると、リードリクエスト命令（Ｒ０ＤＬ）を発行して１クロック後にはリードリクエスト結果通知（ＲＡ０Ｌ）が返され、さらにその１クロック後にはリクエストを要求したデータが格納されることになる。ここで、Ｄａｔａ０〜１Ｈ，Ｄａｔａ０〜１ＬはＣＬＫＨに同期して送信される（Ｔ１４など）。一方、受信側はＣＬＫＬに同期して受信する（Ｔ１５など）。
【００４７】
なお、ここでは、ＰＥ０からＤＢＳＣに対してリードリクエストが発行された場合で動作の説明を行ったが、ＰＥ０からＤＢＳＣに対してライトリクエストが発行された場合は、データの流れが逆になるものの、図６とほぼ同様の動作となる。簡単に説明すると、まず、ＰＥ０は、ライトしたいデータをＤＲＥＧ＿Ｌに蓄えた後に、リクエスト信号Ｒｅｑ０Ｌとしてライトリクエスト命令を発行する。このＤＲＥＧ＿Ｌのデータはレベル変換を経てＤＲＥＧ＿Ｈに転送される。その後、ＰＥ０は、ＣＭＤ＿０とＣＭＤ＿１間、ならびにＣＭＤ＿１とバス間において適宜ハンドシェイク（リクエスト命令やアクノリッジ命令の送受信）を行いながら、バスの使用権が得られた段階で、ＤＲＥＧ＿Ｈのデータをバスのビット幅毎に分割しながらＣＬＫＨの周期で順次バスに転送する。このデータは、ＤＢＳＣの制御を受けながらオフチップメモリＯＦＦ＿ＭＥＭに順次書き込まれる。
【００４８】
図７は図２のＰＥ０，ＰＥ１，ＡＲＢＤ，ＳＥＬ＿Ｒ，ＳＥＬ＿Ｗの構成例をより詳細に示したものである。ＰＥ０，ＰＥ１は図５のＰＥ０と同様の構成であり、ＰＥ０，ＰＥ１とＡＲＢＤ，ＳＥＬ＿Ｒ，ＳＥＬ＿Ｗ間の結線は図２と同様である。
【００４９】
図８、図９は、図７の動作例として、ＰＥ０，ＰＥ１から同時にＤＢＳＣに対してリードリクエストが発行された際の動作波形を示している。高振幅・高周波数で動作するクロックＣＬＫＨと低振幅・低周波数で動作するクロックＣＬＫＬの周波数比は図５と同様に１６：１としている。図８において、まず、ＰＥ０においてＣＭＤ＿０ＬからＣＭＤ＿０Ｈに対してリードリクエスト命令が発行されたとすると、時刻Ｔ０においてＲｅｑ０ＬがＩｎｖａｌｉｄからリードリクエスト命令Ｒ０ＤＬへと変化し、ＬＳ＿Ｃ０を通過後はハイレベルの同リードリクエスト命令Ｒ０ＤＨへと変換される。ＣＭＤ＿０Ｈは、Ｒ０ＤＨを受けるとバスに対しリードリクエスト命令を発行する。ここでは、Ｒ０ＤＨ（Ｒ０ＤＬ）が１２８ｂｉｔの読出し命令、バスのデータ幅が１２８ｂｉｔであると仮定し、Ｒ０ＤＨ（Ｒ０ＤＬ）に伴いバスに対して１回のリードアクセス命令Ｒ０Ａを発行する。このＲ０Ａに対してバス内のモジュールがアクノリッジ信号Ａ０Ａを返す。ここでは仮に１クロック後にＡ０Ａが返されると仮定している。従って、時刻Ｔ１においてＲｅｑ０ＡはＩｎｖａｌｉｄからＲ０Ａに変化している。また、Ａｃｋ０Ａは時刻Ｔ２にＩｎｖａｌｉｄからＡ０Ａに変化している。ここではＲ０Ａの発行が１回完了したので、Ａｃｋ０Ｈにアクノリッジ命令Ａ０ＡＨが返される。Ａ０ＡＨはＬＳ＿Ｃ０によって低振幅の同命令Ａ０ＡＬへと変換される。従って、時刻Ｔ４にＡｃｋ０ＨはＩｎｖａｌｉｄからＡ０ＡＨへと変化しており、それに伴ってＡｃｋ０ＬもＡ０ＡＬと変化している。
【００５０】
この図８の動作と並行して、ＰＥ１においても以下のように同様の動作が行われている。図９において、まず、ＰＥ１を起点としてＣＭＤ＿１ＬからＣＭＤ＿１Ｈに対してリードリクエスト命令が発行されたとすると、時刻Ｔ０においてＲｅｑ１ＬがＩｎｖａｌｉｄからリードリクエスト命令Ｒ１ＤＬへと変化し、ＬＳ＿Ｃ１を通過後はハイレベルの同リードリクエスト命令Ｒ１ＤＨへと変換される。ＣＭＤ＿１Ｈは、Ｒ１ＤＨを受けるとバスに対しリードリクエスト命令を発行する。ここでは、Ｒ１ＤＨ（Ｒ１ＤＬ）が１２８ｂｉｔの読出し命令、バスのデータ幅が１２８ｂｉｔであると仮定し、Ｒ１ＤＨ（Ｒ１ＤＬ）に伴いバスに対して１回のリードアクセス命令Ｒ１Ａを発行する。このＲ１Ａに対してバス内のモジュールがアクノリッジ信号Ａ１Ａを返す。ここでは、ＰＥ０からも同様のリードリクエストがＡＲＢＤへ発行されることから、ＰＥ０からのリードリクエスト信号が優先されたとし３クロック後にＡ１Ａが返されると仮定している。従って、時刻Ｔ１においてＲｅｑ１ＡはＩｎｖａｌｉｄからＲ１Ａに変化している。また、Ａｃｋ１Ａは時刻Ｔ４にＩｎｖａｌｉｄからＡ１Ａに変化している。ここではＲ１Ａの発行が１回完了したので、Ａｃｋ１Ｈにアクノリッジ命令Ａ１ＡＨが返される。Ａ１ＡＨはＬＳ＿Ｃ１によって低振幅の同命令Ａ１ＡＬへと変換される。従って、時刻Ｔ６にＡｃｋ１ＨはＩｎｖａｌｉｄからＡ１ＡＨへと変化しており、それに伴ってＡｃｋ１ＬもＡ１ＡＬと変化している。
【００５１】
ＰＥ０とＰＥ１から同時に発行されたリードリクエスト信号を受取ったＡＲＢＤは，前述したように設定された優先度に基づいてＰＥ０とＰＥ１にアクノリッジ信号を返す。それと共に、それぞれのリードリクエストをＤＢＳＣへと送信する。ここでは、ＰＥ０が優先され、ＰＥ０からのリードリクエスト、ＰＥ１からのリードリクエストの順でＤＢＳＣへ送信すると仮定する。
【００５２】
従って、図８および図９に示すように、ＰＥ０とＰＥ１からＲ０ＡとＲ１Ａが発行されてからあるクロック数が経過すると（ここでは８クロック後）、ＲｅｑＡ０とＲｅｑＡ１に、バスよりリードアクセスの結果を通知するリクエスト命令ＲＡ０とＲＡ１が続けて（ここでは２回）発行されるとともに、Ｄａｔａ０Ｒ，Ｄａｔａ１Ｒは、Ｉｎｖａｌｉｄから読出し結果Ｄａｔａ０，Ｄａｔａ１へとそれぞれ変化する。これに対して、ＰＥ０において、ＣＭＤ＿０Ｈは、ＡｃｋＡ０にアクノリッジ命令ＡＡ０を発行し、ＤＲＥＧ＿０Ｈへのデータ取り込み信号ＣｔｌＨ０に対してはデータ取込み命令Ｓ０Ａを発行する。これによって、ＤＲＥＧ＿０Ｈでは、例えば、１２８ｂｉｔのデータが１回取り込まれる。一方、ＰＥ１において、ＣＭＤ＿１Ｈは、ＡｃｋＡ１にアクノリッジ命令ＡＡ１を発行し、ＤＲＥＧ＿１Ｈへのデータ取り込み信号ＣｔｌＨ１に対してはデータ取込み命令Ｓ１Ａを発行する。これによって、ＤＲＥＧ＿１Ｈでは、例えば、１２８ｂｉｔのデータが１回取り込まれる。
【００５３】
以上でＣＭＤ＿０Ｌ，ＣＭＤ＿１Ｌからそれぞれ発行されたリードリクエスト命令は完了したので、ＣＭＤ＿０Ｈ，ＣＭＤ＿１Ｈは、ＣＭＤ＿０Ｌ，ＣＭＤ＿１Ｌに向けて、同命令に応じたリクエスト信号ＲｅｑＨ０，ＲｅｑＨ１としてリードリクエストの結果通知命令ＲＡ０Ｈ，ＲＡ１Ｈをそれぞれ発行する。同時に、ＤＲＥＧ＿０Ｈ，ＤＲＥＧ＿１Ｈは、ＤＲＥＧ＿０Ｌ，ＤＲＥＧ＿１Ｌに向けて前述したＤａｔａ０Ｈ，Ｄａｔａ１Ｈをそれぞれ出力する。ＲＡ０Ｈ，ＲＡ１Ｈは、ＬＳ＿Ｃ０，ＬＳ＿Ｃ１によって同命令ＲＡ０Ｌ，ＲＡ１Ｌへとそれぞれ変換され、また、Ｄａｔａ０Ｈ，Ｄａｔａ１ＨはＬＳ＿Ｄ０，ＬＳ＿Ｄ１によって低振幅のＤａｔａ０Ｌ，Ｄａｔａ１Ｌへとそれぞれ変換される。ＣＭＤ＿０Ｌ，ＣＭＤ＿１Ｌは、ＲＡ０Ｌ，ＲＡ１Ｌを受取ると、同命令に対するアクノリッジ命令ＡＡ０Ｌ，ＡＡ１Ｌをそれぞれ返し、ＤＲＥＧ＿０Ｌ，ＤＲＥＧ＿１Ｌに対してはＣｔｌ０Ｌ，Ｃｔｌ１Ｌとしてデータ取込み制御信号ＳＤ０，ＳＤ１をそれぞれ発行する。これにより、ＤＲＥＧ＿０Ｌ，ＤＲＥＧ＿１Ｌに、リードされたＤａｔａ０，Ｄａｔａ１がそれぞれ格納される。
【００５４】
以上の動作を実現することで、ＣＬＫＬで動作するＰＥ０（ＣＭＤ＿０Ｌ），ＰＥ１（ＣＭＤ＿１Ｌ）から見ると、リードリクエスト命令（Ｒ０ＤＬ，Ｒ１ＤＬ）を発行して１クロック後にはリードリクエスト結果通知（ＲＡ０Ｌ，ＲＡ１Ｌ）が返され、さらにその１クロック後にはリクエストを要求したデータが格納されることになる。
【００５５】
図１０は、図８と図９の対比のため、図８と図９の一部を抜粋した動作波形である。図１０に示した通り、図７の構成例では、Ｔ０においてＰＥ０からリードリクエスト命令Ｒ０ＤＬが発行され、かつＰＥ１からリードリクエスト命令Ｒ１ＤＬが発行された場合に、時刻Ｔ９においてＤａｔａ０ＲがＩｎｖａｌｉｄから読み出し結果Ｄａｔａ０へと変化し、時刻Ｔ１１においてＤａｔａ１ＲがＩｎｖａｌｉｄから読み出し結果Ｄａｔａ１へと変化している。
【００５６】
このように図７の構成例においては、複数のプロセッサコアからＣＬＫＬに合わせてリード要求があった場合に、ＣＬＫＨに合わせて読み出し結果をデータ転送する。以上の例ではＰＥ０とＰＥ１から同時にリードリクエスト命令が発行されたが、これはリードリクエスト命令に限定されない。例えば、リードリクエスト命令とライトリクエスト命令の組み合わせであっても良いし、ライトリクエスト命令のみであっても良い。すなわち、図７の構成例は、低周波数のクロックＣＬＫＬ０（またはＣＬＫＬ１）に対応する時刻に複数のデータ転送要求（リードリクエスト、ライトリクエスト、またはこれらの組み合わせ）があった場合に、それぞれに対応するデータ転送を、高周波数のクロックＣＬＫＨ０（またはＣＬＫＨ１）に合わせて、異なるタイミングで行うことを特徴とする。このような動作は、演算部に低周波数のクロックが供給され、バスに高周波数のクロックが供給される構成により可能となる。さらに、ＣＭＤ＿０Ｈ（ＣＭＤ＿１Ｈ）が、高周波数ＣＬＫＨ０（ＣＬＫＨ１）で動作しているため、上記通信を行う際に返信されるＡｃｋ０Ａ（Ａｃｋ１Ａ）をＣＬＫＨ０（ＣＬＫＨ１）に同期して受け取ることが可能となる。そのため、Ｄａｔａ０ＲまたはＤａｔａ０Ｗ（Ｄａｔａ１ＲまたはＤａｔａ１Ｗ）の通信を、高速に行うことが可能となる。
【００５７】
このような構成により、演算部が低電圧・低周波数で動作していても、バスの高周波数に基づき高速にデータ転送を行うことが可能となり、ＳｏＣ全体で見た演算性能を向上させることが可能となる。
【００５８】
また、従来のマルチコアではバスを介して接続されるＰＥ数が数個程度であったため、それぞれのＰＥからメモリへアクセスできるバス構成とすることで、複数のＰＥから同時にメモリアクセスが発生したとしても、アクセスレイテンシをある程度は抑えることができた。しかし、ＰＥ数が数十個にもなると従来のバス構成では面積オーバヘッド、アクセスレイテンシが大きくなってしまう。そこで、本実施の形態で述べたようにバスを演算部に対し高電圧・高周波数で動作させることにより、図７〜図９の例で示したとおり、各ＰＥからメモリへのアクセスパスを複数設けなくとも、各ＰＥから見たメモリアクセスレイテンシを従来と同程度に小さくすることができる。さらに、各プロセッサコアＰＥ０，ＰＥ１に設定された優先度に従い、優先度の高いプロセッサコアに対するデータ転送を優先的に行う構成により、より優先度の高いプロセッサコアからのデータ転送要求に対し、低レイテンシのアクセスを可能とする。
【００５９】
以上の図７〜図１０の実施の形態は、図５、図６の実施の形態と併用することが可能である。すなわち、それぞれのプロセッサコアが、バスＢＳとＤＲＥＧ＿Ｈとの間の複数回の通信によるデータを蓄え、ＤＲＥＧ＿ＨとＤＲＥＧ＿Ｌの間のビット幅で通信を行い、かつ、低周波数のクロックＣＬＫＬ０（またはＣＬＫＬ１）に対応する時刻に複数のデータ転送要求（リードリクエスト、ライトリクエスト、またはこれらの組み合わせ）があった場合に、それぞれに対応するデータ転送を、高周波数のクロックＣＬＫＨ０（またはＣＬＫＨ１）に合わせて、異なるタイミングで行うことが可能である。例えば、バスの周波数が演算部の周波数の４倍である場合には、２回分のデータをレジスタに蓄える通信を、２つのコアに対し行うことが可能である。この構成により、より演算性能を向上させることが可能となる。
【００６０】
ここで、図５〜図１０の実施の形態を別の観点から捉えると、以下のように考えることもできる。すなわち、各プロセッサコアの演算部に低周波数のクロックＣＬＫＬを、バスに高周波数のクロックＣＬＫＨを供給し、低周波数のクロックＣＬＫＬの１周期の間に、バスと各プロセッサコアとの間で、複数回のデータ通信を行うことを特徴とする。この特徴によれば、図５、図６のように、低周波数のクロックの１周期の間に、バスＢＳとバスインタフェースＢＳＩＦ（インタフェース部ＢＩＣ）の間で複数回分のデータを蓄えて演算部に送信する通信方式も可能となり、あるいは図７〜図１０のように低周波数のクロックの１周期の間に、複数のプロセッサコアＰＥとバスＢＳとの間で通信を行うことも可能となる。よって、ＳｏＣ全体で見た演算性能を向上することも可能となる。
【００６１】
さらに図５〜図１０の実施の形態を別の観点から捉えると、以下のように考えることもできる。すなわち、各プロセッサコアの演算部に低周波数のクロックＣＬＫＬを、バスに高周波数のクロックＣＬＫＨを供給し、低周波数のクロックＣＬＫＬの１周期の間に、インタフェース部ＢＩＣがバスＢＳにデータ転送要求を発行し、インタフェース部ＢＩＣはバスＢＳから前記データ転送要求に対応するアクノリッジ信号を受信し、その後前記データ転送要求に対応するデータ転送を行う。この特徴からも、図５、図６のように、低周波数のクロックの１周期の間に、バスＢＳとインタフェース部ＢＩＣの間で複数回分のデータを蓄えて演算部に送信する通信方式も可能となり、あるいは図７〜図１０のように低周波数のクロックの１周期の間に、複数のプロセッサコアＰＥとバスＢＳとの間で通信を行うことも可能となる。よって、ＳｏＣ全体で見た演算性能を向上させることが可能となる。
【００６２】
図１１は、図１あるいは図２のメモリコントローラＤＢＳＣの構成例を示している。ここでは、例としてＤＢＳＣで説明を行うが、これがオンチップメモリＯＮ＿ＭＥＭであっても、外部メモリＯＭＥＭをオンチップメモリと読み替えることで同様の動作をすると考えて良い。また、ＤＢＳＣを構成するモジュールのうち、アドレス生成、バッファなど一般的なものは簡単のため記載せず、本実施の形態により設けられたモジュールのみを記載している。図１１のＤＢＳＣは、モジュールとして、命令用のレベルシフタ兼バッファブロックＬＳＢＦ＿Ｃと、データ用のレベルシフタ兼バッファブロックＬＳＢＦ＿Ｄを含んでいる。ＬＳＢＦ＿Ｃ，ＬＳＢＦ＿Ｄで行うレベルシフトは、ＶＤＤＨとＶＤＤＬ間のレベルシフトではなく、ＶＤＤＨとＯＭＥＭの動作電圧間のレベルシフトである。ただし、ＯＭＥＭがＶＤＤＨで動作する場合には、レベルシフトを行う必要はなく、以下に説明するようなデータフローの制御のみを行う。
【００６３】
ＬＳＢＦ＿Ｃ，ＬＳＢＦ＿Ｄは、いずれも高電圧ＶＤＤＨが供給され、高振幅・高周波数クロックＣＬＫＨに同期して動作する。ＬＳＢＦ＿Ｃとバスの間は、ＬＳＢＦ＿Ｃからバスに対するリクエスト信号（アドレス信号含む）ＲｅｑＤＡと、ＲｅｑＤＡに対するアクノリッジ信号ＡｃｋＤＡと、バスからＬＳＢＦ＿Ｃに対するリクエスト信号（アドレス信号含む）ＲｅｑＡＤと、ＲｅｑＡＤに対するアクノリッジ信号ＡｃｋＡＤで接続される。ＬＳＢＦ＿ＣとＯＭＥＭの間は、ＬＳＢＦ＿ＣからＯＭＥＭに対するリクエスト信号（アドレス信号含む）ＲｅｑＭと、ＲｅｑＭに対するアクノリッジ信号ＡｃｋＭで接続される。ＬＳＢＦ＿Ｄとバスの間は、データ入出力信号ＤａｔａＤＲ，ＤａｔａＤＷで接続される。ＬＳＢＦ＿ＤとＯＭＥＭの間は、データ入出力信号ＤａｔａＭＲ，ＤａｔａＭＷで接続される。なお、便宜的にこれらの信号線は１本で代表したが、０本以上の何本であっても構わない。
【００６４】
図１２は、図１１の動作例として、バスからＯＭＥＭに対して２回リードリクエストが発行された際の動作波形を示している。まず、バスからＤＢＳＣに対してリードリクエスト命令ＲＡＤが発行されたとすると、時刻Ｔ０においてＲｅｑＡＤがＩｎｖａｌｉｄからリードリクエスト命令ＲＡＤへと変化し、時刻Ｔ２においてもＲｅｑＡＤが２回目のＲＡＤへと変化する。ＬＳＢＦ＿Ｃは、ＲＡＤを受けるとバスに対しアクノリッジ命令ＡＡＤを発行し、ＯＭＥＭに対してはリードリクエスト命令ＲＤＭを発行する。このＲＤＭに対してＯＭＥＭは、要求されたデータＤａｔａ０の出力を行うのと共にアクノリッジ信号ＡＤＭを返す。ここでは仮にＲＤＭを受けてから１クロック後にＡＤＭが返されると仮定している。
【００６５】
従って、時刻Ｔ１においてＡｃｋＡＤはＩｎｖａｌｉｄからＡＡＤに変化し、時刻Ｔ２においてＲｅｑＭはＩｎｖａｌｉｄからＲＤＭへと、ＤａｔａＭＲはＩｎｖａｌｉｄからＤａｔａ０へと変化し、時刻Ｔ３においてＡｃｋＭはＩｎｖａｌｉｄからＡＤＭへと変化する。ＬＳＢＦ＿Ｃは、ＯＭＥＭにＡＤＭを発行するのと同時にＬＳＢＦ＿Ｄに対してデータ格納命令ＳＭＥＭを発行する。ＬＳＢＦ＿Ｄは、それを受けてＤａｔａＭＲの値Ｄａｔａ０を自身のローカルバッファに格納する。ＬＳＢＦ＿Ｃは、ＤａｔａＭＲがＬＳＢＦ＿Ｄのローカルバッファに格納された後にバスに対してリードリクエストの結果通知命令ＲＤＡを発行する。この例では他モジュールからのリクエストがないため、１クロック後にバスからＬＳＢＦ＿Ｃに同命令に対するアクノリッジ命令ＡＤＡが発行される。
【００６６】
図１３は、図１、図２、図５における分周器ＤＩＶの第１の構成例を示している。図１３のＤＩＶは、歯抜け型クロック分周器ＤＩＶ＿Ｃｌｋ０とレベルシフタＬＳ＿Ｃｌｋから構成される。ＤＩＶ＿Ｃｌｋ０は、高振幅・高周波数クロックＣＬＫＨが入力され、それを、指定された周期で波形を間引いた高振幅・歯抜けクロックＣＬＫＭ０に変換する。この周期は、例えば、４、８、１６などである。ＣＬＫＭ０は、さらにＬＳ＿Ｃｌｋを通過し低振幅の歯抜けクロックＣＬＫＬ０へと変換される。この様子を示したのが図１４である。このような歯抜けによる周波数変換は実装が容易であるため、歯抜けクロックで低振幅・低周波数動作するブロックのタイミング設計に特に問題がなければ、小面積で実現できるメリットがある。さらに、低振幅・低周波数動作するブロックのタイミング設計に余裕があり、かつ、クロック信号線のタイミングのずれが少なく、ＣＬＫＬ０が伝播途中で消失することがなければ、低振幅・低周波数動作するブロックの電源電圧と周波数を適宜変更することでさらに低電力化を図ることが可能である。
【００６７】
図１５は、図１、図２、図５における分周器ＤＩＶの第２の構成例を示している。図１５のＤＩＶは、デューティ比５０％のクロック分周器ＤＩＶ＿Ｃｌｋ１とレベルシフタＬＳ＿Ｃｌｋから構成される。ＤＩＶ＿Ｃｌｋ１には、高振幅・高周波数クロックＣＬＫＨが入力され、指定された周期で分周された高振幅・低周波数クロックＣＬＫＭ１に変換される。この周期は、例えば、４、８、１６などである。ＣＬＫＭ１は、さらにＬＳ＿Ｃｌｋを通過し低振幅・低周波数クロックＣＬＫＬ１へと変換される。この様子を示したのが図１６である。このようなデューティ比５０％を保持した周波数変換は、実装やタイミング設計が図１３の場合ほど容易ではないが、低振幅・低周波数動作するブロックの電源電圧と周波数を適宜変更することで低電力化が可能である。
【００６８】
（実施の形態２）
図１７は、本発明の実施の形態２による情報処理装置において、その構成の一例を示すブロック図である。図１７の構成例は、図１の構成例と比較して、図１の発振器ＰＬＬの代わりに、高振幅・高周波数クロックＣＬＫＨの発振器ＰＬＬＨと、低振幅・低周波数クロックＣＬＫＬの発振器ＰＬＬＬとを個別に搭載している。ＰＬＬＨには高電圧ＶＤＤＨが供給され、ＰＬＬＬには低電圧ＶＤＤＬが供給される。ＰＬＬＨとＰＬＬＬは、クロックコントローラＣＫＣＴＬからのクロック制御信号ＣｌｋＥｎによって制御される。ＣＬＫＨは高振幅、高周波数用のバッファ回路ＢＵＦＨによって伝播され、ＣＬＫＬは低振幅、低周波数用のバッファ回路ＢＵＦＬによって伝播される。なお、ＢＵＦＨ，ＢＵＦＬともに代表して１個のみを記載したが、ＢＵＦＨはＣＬＫＨの伝播経路上に、そして、ＢＵＦＬはＣＬＫＬの伝播経路上にいくら配置しても構わない。
【００６９】
特に図１７の構成例は、発振器ＰＬＬＬを設けることにより、個々のプロセッサコアＰＥに低周波数・低振幅のクロックを発生するための機構を無くすことが可能であるという効果を有する。この効果は特に、大量のプロセッサコアを搭載する際に有効となる。それぞれのプロセッサコアにおいて当該機構が不要となるため、回路面積を大幅に低減することが可能となるからである。
【００７０】
図１８は、図１７のプロセッサコアＰＥの構成例を示している。ここでは、例としてＰＥ０で説明を行うが、これ以外のＰＥ、あるいはＭＯＤも同様の構成をとる。図１８のＰＥ０は、図５に示したＰＥ０と比較して、ＤＩＶがクロック同期ブロックＳＹＮに置換されたこと以外は図５と同様である。ＳＹＮには、高電圧ＶＤＤＨ、低電圧ＶＤＤＬが供給される。そして、高振幅・高周波数クロックＣＬＫＨと、低振幅・低周波数クロックＣＬＫＬの２つが入力され、ＣＬＫＨに同期するよう位相の調整された低振幅・低周波数クロックＣＬＫＬ２を出力する。なお、ＣＭＤ＿０，ＤＲＥＧ＿Ｌには、図５におけるＣＬＫＬの代わりにこのＣＬＫＬ２が供給される。
【００７１】
図１９は、図１７、図１８の動作例として、クロック制御信号ＣｌｋＥｎの通知を受けた場合のＣＬＫＨ，ＣＬＫＬ，ＣＬＫＬ２の動作例を示している。時刻Ｔ１において、ＣｌｋＥｎがオンとなりＰＬＬＨ，ＰＬＬＬからクロックＣＬＫＨ，ＣＬＫＬが出力される。理想的には、ＰＥ０に到着したＣＬＫＨ，ＣＬＫＬに位相差のないことが望ましいが、現実的にＴ２−Ｔ１の位相差が生じてしまったとする。このような場合は、ＳＹＮがバッファなどにより遅延を調整し、この例では位相が遅れているＣＬＫＨから見て位相差の少ないＣＬＫＬ２を出力する。
【００７２】
以上のように、本実施の形態２の情報処理装置は、ＳｏＣの配線領域に余裕があり、高振幅・高周波数クロックと、低振幅・低周波数クロックを別々に実装することができるのであれば、ＰＥやＭＯＤ内部での分周が不要になるので、小面積化または低電力化が実現できる。
【００７３】
（実施の形態３）
図２０は、本発明の実施の形態３による情報処理装置において、その構成の一例を示すブロック図である。ＳｏＣの面積に余裕があるのであれば、オンチップメモリモジュールを２つ（ＯＮ＿ＭＥＭ０，ＯＮ＿ＭＥＭ１）搭載することが可能になる。ＯＮ＿ＭＥＭ内部の電源結線を述べるため、代表してＯＮ＿ＭＥＭ０のみの内部を記述している。ＯＮ＿ＭＥＭ０の主な構成要素としてはバスインタフェースＢＳＩＦおよび分周器ＤＩＶを含むインタフェース部ＢＩＣ２や、アドレスコントローラＡＤＲＣおよびメモリセルアレイＡＲＹを含む記憶部ＭＥＭＢなどがあるが、これ以外の要素から構成されていても構わない。ＯＮ＿ＭＥＭ０に供給される電源はＶＤＤＨ，ＶＤＤＬの２種類があるが、周波数変換とレベル変換を行うＢＳＩＦ，ＤＩＶを含むインタフェース部ＢＩＣ２には、ＶＤＤＨ，ＶＤＤＬの２種類が供給され、ＡＤＲＣ，ＡＲＹを含む記憶部ＭＥＭＢにはＶＤＤＬのみが供給される。ＢＳＩＦ，ＤＩＶは、例えば、図５と同様の構成を用いることができる。
【００７４】
多数のプロセッサコアは、全体で１つのクラスタを構成することは稀で、一般的には複数のクラスタに分けられそれぞれのクラスタが別の処理を行うのが普通である。それらのグループがオンチップメモリへアクセスする頻度に応じて、ＯＮ＿ＭＥＭ０とＯＮ＿ＭＥＭ１へ適宜振り分けられることで，オンチップメモリ１個から見たアクセス頻度を低減させることができる。例えば、６４個のＰＥと７個のＭＯＤをオンチップメモリへのアクセス頻度が偏らないように２つのグループに分けることで、オンチップメモリの周波数を半分にしても従来同様のスループットを維持することができる。この際、例えばＯＮ＿ＭＥＭ０において、ＢＳＩＦは、高周波数で動作するバスＢＳと接続され、命令やデータのキューを管理するため高周波数で動作するが、それ以外の構成要素（例えばＡＤＲＣ，ＡＲＹなどを有する記憶部ＭＥＭＢ）は低周波数で動作することができる。
【００７５】
以上のようにすれば、ＰＥ，ＭＯＤに加えてオンチップメモリ（記憶部ＭＥＭＢ）も低振幅，低周波数で動作できるようになるので、さらに低電力化が可能となる。本実施の形態３では、搭載するオンチップメモリモジュールを２つとしたが、それ以上であっても構わないし、逆にメモリへのアクセス負荷が小さいのであれば１個でも構わない。なお、本実施の形態３は、勿論、実施の形態２と組み合わせて用いることも可能である。
【００７６】
（実施の形態４）
図２１は、本発明の実施の形態４による情報処理装置において、その構成の一例を示すブロック図である。ＳｏＣの面積に余裕があるのであれば、メモリコントローラを２つ（ＤＢＳＣ０，ＤＢＳＣ１）搭載することが可能になる。ＤＢＳＣ０，ＤＢＳＣ１は、例えば、図５と同様のバスインタフェースＢＳＩＦや分周器ＤＩＶを有するインタフェース部ＢＩＣ３と、ＢＳＩＦで電圧とレジスタ幅を変換された内部コマンド信号ＩＮＴ＿ＣＭＤと内部データ信号ＩＮＴ＿ＤＡＴＡを外部メモリＯＦＦ＿ＭＥＭ＿ＤＰへ外部コマンド信号ＥＸＴ＿ＣＭＤと外部データ信号ＥＸＴ＿ＤＡＴＡとして送受信するメモリアクセスコントローラＭＡＣＣとを備える。このとき、ＭＡＣＣは外部メモリＯＦＦ＿ＭＥＭ＿ＤＰとのアクセス・レスポンスなどの各種レイテンシを吸収するためにバッファやＦＩＦＯなどの構造をとることもある。このようにすれば、ＰＥ，ＭＯＤに加え、メモリコントローラ（メモリアクセスコントローラＭＡＣＣ）も低振幅、低周波数で動作できるようになるので、さらに低電力化が可能となる。
【００７７】
本実施の形態４では、オフチップメモリＯＦＦ＿ＭＥＭ＿ＤＰをデュアルポートとしＤＢＳＣ０，ＤＢＳＣ１と接続したが、オフチップメモリを２つ搭載しＤＢＳＣ０，ＤＢＳＣ１とそれぞれ接続しても良い。また、本実施の形態４では搭載するメモリコントローラを２つとしたが、それ以上であっても構わないし、逆に１個であっても構わない。さらに、メモリコントローラとオフチップメモリとの接続形態も、シングルポート、デュアルポート、トリプルポートなどを適宜組み合わせて構わない。なお、本実施の形態４は、勿論、実施の形態２および／または実施の形態３と組み合わせて用いることも可能である。
【００７８】
（実施の形態５）
図２２は、本発明の実施の形態５による情報処理装置において、そのチップレイアウトの一例を示す概略図である。図２２において、太い実線は低電圧の電源幹線のうちモジュール界面に配置されるものを示し、斜線は高電圧の電源幹線のうちモジュール界面に配置されるものを示す。低電圧の電源幹線は、プロセッサコア毎に各プロセッサコアの周囲に沿って配置され、高電圧の電源幹線は、当該プロセッサコアを取り囲むように配置されたバスに沿って配置されるのが特徴となっている。
【００７９】
この特徴により、２種の電源を配置する際のレイアウトを効率よく行うことが可能となり、レイアウトの容易性又は回路規模の点で有利となる。特に、低電圧の電源幹線は個々のプロセッサに供給されるため、安定していることが要求される。そのため、本実施の形態のレイアウトを用いて個別に低電圧の電源を供給することで、各プロセッサコアを低電圧の電源ＶＤＤＬで動作させることをより安定して行うことが可能となる。
【００８０】
以上に述べたように、本発明の各実施の形態を用いると、代表的には、性能電力比の高いプロセッサコアを多数並列動作させることで絶対性能を確保しつつ省電力化が可能となるという効果が得られる。
【００８１】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【産業上の利用可能性】
【００８２】
本実施の形態による情報処理装置は、特に、１個の半導体チップに多数のプロセッサが搭載された情報処理装置に適用して有益な技術であり、これに限らず、各種マルチプロセッサシステム全般に対して広く適用可能である。
【図面の簡単な説明】
【００８３】
【図１】本発明の実施の形態１による情報処理装置において、その構成の一例を示すブロック図である。
【図２】図１の情報処理装置において、そのＩＰ周りの詳細な構成例を示すブロック図である。
【図３】図２の動作例を示す波形図である。
【図４】図２の他の動作例を示す波形図である。
【図５】図１あるいは図２の情報処理装置において、そのプロセッサコアの詳細な構成例を示すブロック図である。
【図６】図５の動作例を示す波形図である。
【図７】図２の情報処理装置において、そのプロセッサコアの詳細な構成例を示すブロック図である。
【図８】図７の動作例を示す波形図である。
【図９】図７の動作例を示す波形図である。
【図１０】図７の動作例を示す波形図である。
【図１１】図１あるいは図２の情報処理装置において、そのメモリコントローラの構成例を示すブロック図である。
【図１２】図１１の動作例を示す波形図である。
【図１３】図１、図２、図５の情報処理装置において、その分周器の構成例を示すブロック図である。
【図１４】図１３の動作例を示す波形図である。
【図１５】図１、図２、図５の情報処理装置において、その分周器の他の構成例を示すブロック図である。
【図１６】図１５の動作例を示す波形図である。
【図１７】本発明の実施の形態２による情報処理装置において、その構成の一例を示すブロック図である。
【図１８】図１７の情報処理装置において、そのプロセッサコアの詳細な構成例を示すブロック図である。
【図１９】図１７、図１８におけるクロック同期ブロックの動作例を示す波形図である。
【図２０】本発明の実施の形態３による情報処理装置において、その構成の一例を示すブロック図である。
【図２１】本発明の実施の形態４による情報処理装置において、その構成の一例を示すブロック図である。
【図２２】本発明の実施の形態５による情報処理装置において、そのチップレイアウトの一例を示す概略図である。
【図２３】ＬＳＩにおける電源電圧と周波数と性能電力比の関係を示す説明図である。
【符号の説明】
【００８４】
ＡＤＲＣ  アドレスコントローラ
ＡＬＵ  演算器
ＡＲＢＤ  調停ブロック
ＡＲＹ  メモリセルアレイ
ＢＩＣ  インタフェース部
ＢＳ  バス
ＢＳＩＦ  バスインタフェース
ＢＵＦＨ，ＢＵＦＬ  バッファ回路
ＣＡＣＨＥ  キャッシュ
ＣＫＣＴＬ  クロックコントローラ
ＣＭＤ  コマンド生成ブロック
ＣＰＵＬ  演算部
ＤＢＳＣ  メモリコントローラ
ＤＩＶ  分周器
ＤＲＥＧ  データレジスタ
ＩＮＳＴＤＥＣ  命令デコーダ
ＬＳ  レベルシフタ
ＬＳＢＦ  レベルシフタ兼バッファブロック
ＭＡＣＣ  メモリアクセスコントローラ
ＭＥＭＢ  記憶部
ＭＯＤ  モジュール
ＯＦＦ＿ＭＥＭ  オフチップメモリ
ＯＭＥＭ  外部メモリ
ＯＮ＿ＭＥＭ  オンチップメモリ
ＰＥ  プロセッサコア
ＰＬＬ，ＰＬＬＬ，ＰＬＬＨ  発振器
ＳＥＬ  選択ブロック
ＳＹＮ  クロック同期ブロック
【図１】
2010086030.tif 000003
【図２】
2010086030.tif 000004
【図３】
2010086030.tif 000005
【図４】
2010086030.tif 000006
【図５】
2010086030.tif 000007
【図６】
2010086030.tif 000008
【図７】
2010086030.tif 000009
【図８】
2010086030.tif 000010
【図９】
2010086030.tif 000011
【図１０】
2010086030.tif 000012
【図１１】
2010086030.tif 000013
【図１２】
2010086030.tif 000014
【図１３】
2010086030.tif 000015
【図１４】
2010086030.tif 000016
【図１５】
2010086030.tif 000017
【図１６】
2010086030.tif 000018
【図１７】
2010086030.tif 000019
【図１８】
2010086030.tif 000020
【図１９】
2010086030.tif 000021
【図２０】
2010086030.tif 000022
【図２１】
2010086030.tif 000023
【図２２】
2010086030.tif 000024
【図２３】
2010086030.tif 000025