(57)【要約】【課題】消費電力を抑えつつ処理性能を確保する。【解決手段】データを処理する処理部１４と、メモリに対するデータ転送要求からデータ転送開始までの期間を含むデータ転送時間に関するデータ転送時間情報を検出する転送サイクルカウンタ１６と、転送サイクルカウンタ１６が検出したデータ転送時間情報を少なくとも参照して処理部１４の処理能力を制御するクロック制御部１７と、を備える。【選択図】図１
2014134958.tif 000002
【特許請求の範囲】
【請求項１】
データを処理する処理部と、
メモリに対するデータ転送要求からデータ転送開始までの期間を含むデータ転送時間に関するデータ転送時間情報を検出する転送時間検出部と、
前記転送時間検出部が検出したデータ転送時間情報を少なくとも参照して前記処理部の処理能力を制御する制御部と、
を備えるプロセッサ。
【請求項２】
前記制御部は、前記データ転送時間情報に基づいて未来のデータ転送時間である予測転送時間を予測し、予測して得た予測転送時間に基づいて前記処理部の処理能力を制御する請求項１に記載のプロセッサ。
【請求項３】
前記制御部は、過去の複数周期のデータ転送時間の変化に基づいて前記予測転送時間を予測する請求項２に記載のプロセッサ。
【請求項４】
前記制御部は、前記予測転送時間を参照して所定時間内に前記処理部がデータ処理を完了できるか否か判定し、所定時間内に前記処理部がデータ処理を完了できない場合、次の周期の前記処理部の処理能力を向上させる請求項２または３に記載のプロセッサ。
【請求項５】
前記処理部の処理時間に関する処理時間情報を検出する処理時間検出部を更に備え、
前記制御部は、前記予測転送時間と前記処理時間情報とを参照して前記処理部の処理能力を制御する請求項４に記載のプロセッサ。
【請求項６】
前記データ転送時間は、データ転送におけるデータ転送要求からデータ転送完了までの所要サイクル数である請求項１に記載のプロセッサ。
【請求項７】
前記処理部が処理するデータを転送するＤＭＡを更に備え、
前記転送時間検出部は、前記ＤＭＡが接続されたメモリに対するデータ転送要求からデータ転送開始までの期間を含むデータ転送時間に関するデータ転送時間情報を検出する請求項１に記載のプロセッサ。
【請求項８】
前記処理部は複数のプロセッサエレメントを備え、
前記制御部は、前記プロセッサエレメントの動作周波数を制御する請求項１に記載のプロセッサ。
【請求項９】
前記処理部は複数のプロセッサエレメントを備え、
前記制御部は、処理に使用するプロセッサエレメントの数を制御する請求項１に記載のプロセッサ。
【請求項１０】
データを処理する処理部と、
メモリに対するデータ転送要求からデータ転送開始までの期間における前記メモリまたはシステムバスの応答速度を検出する転送時間検出部と、
前記転送時間検出部が検出した応答速度を少なくとも参照して前記処理部の処理能力を制御する制御部と、
を備えるプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサに関する。
【背景技術】
【０００２】
携帯機器に搭載されるＳｏＣ（Ｓｙｓｔｅｍ−ｏｎ−ａ−ｃｈｉｐ：システムオンチップ）では、消費電力の増大が大きな問題になっている。消費電力増大の一因は、ＳｏＣの高性能化である。高性能化を実現するため、ＳｏＣが備えるプロセッサの処理時間の短縮が要求され、プロセッサの動作周波数が高くなる傾向にある。消費電力は動作周波数に比例するため、プロセッサの消費電力は大きくなる傾向にある。
【０００３】
別の消費電力増大の要因は、ＳｏＣの多機能化である。多機能化を目的としてＳｏＣに搭載するプロセッサ数が増えているため、プロセッサとＳｏＣが備える共有メモリのデータ転送量が混雑している。データ転送量の増加そのものも電力増加を招くが、共有メモリが混雑すると、プロセッサのデータ転送待ちが発生するため、プロセッサの処理時間が長くなり、プロセッサが無駄な電力を消費してしまう。
【０００４】
この消費電力の問題に対して、複数のＰＥ（プロセッサエレメント）をプロセッサ内部に備え、より多くのデータをより低い動作周波数で処理することにより、性能を維持しながら消費電力を抑える並列プロセッサが、一般的に知られている。代表的な並列プロセッサとして、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：グラフィックス  プロセッシング  ユニット）やＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）プロセッサが挙げられる。ここで、ＳＩＭＤプロセッサは、単一命令により複数データを同時に処理するプロセッサである。このような並列プロセッサにおいて、さらなる省電力化のために、プロセッサの動作状況に応じて動作周波数を制御する技術が知られている。
【０００５】
例えば、特許文献１のパケット処理装置では、並列プロセッサのデータ転送量が多い場合に、並列プロセッサの動作周波数を上げて処理性能を確保し、一方、並列プロセッサのデータ転送量が少ない場合に、並列プロセッサの動作周波数を下げて消費電力を抑える装置が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−０４９８８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
並列プロセッサのデータ転送量は、並列プロセッサの処理内容だけではなく、共有メモリの混雑具合によっても変動する。共有メモリが混雑すると、データ転送待ちが発生して、単位時間あたりのデータ転送量は少なくなる。共有メモリ混雑によるデータ転送量の低下は性能劣化の原因になるので、データ転送量の低下を軽減するために、データ転送待ちの発生を見越し、データ転送を早く開始しなければならない。したがって、共有メモリが混雑している場合は、動作周波数を下げず、データ処理を速やかに終える必要がある。
【０００８】
特許文献１の技術では、データ転送量が少なくなるほど動作周波数を下げてしまうため、データ転送開始時刻が遅くなり、実際にデータ転送が行われる時刻が遅くなってしまう。その結果、データ転送量が更に減り、それに応じて動作周波数が更に下がる。これにより、処理がますます遅くなってしまう。このように、特許文献１の技術では、動作周波数を下げることで消費電力を抑えることができるが、過剰にクロックが下がって要求される処理性能を確保できなくなる問題がある。
【０００９】
そこで本発明の一態様は、上記問題に鑑みてなされたものであり、消費電力を抑えつつ処理性能を確保することを可能とするプロセッサを提供することを課題とする。
【課題を解決するための手段】
【００１０】
（１）本発明の一態様は、データを処理する処理部と、メモリに対するデータ転送要求からデータ転送開始までの期間を含むデータ転送時間に関するデータ転送時間情報を検出する転送時間検出部と、前記転送時間検出部が検出したデータ転送時間情報を少なくとも参照して前記処理部の処理能力を制御する制御部と、を備えるプロセッサである。
【００１１】
（２）また、本発明の一態様は、上述のプロセッサであって、前記制御部は、前記データ転送時間情報に基づいて未来のデータ転送時間である予測転送時間を予測し、予測して得た予測転送時間に基づいて前記処理部の処理能力を制御する。
【００１２】
（３）また、本発明の一態様は、上述のプロセッサであって、前記制御部は、過去の複数周期のデータ転送時間の変化に基づいて前記予測転送時間を予測する。
【００１３】
（４）また、本発明の一態様は、上述のプロセッサであって、前記制御部は、前記予測転送時間を参照して所定時間内に前記処理部がデータ処理を完了できるか否か判定し、所定時間内に前記処理部がデータ処理を完了できない場合、次の周期の前記処理部の処理能力を向上させる。
【００１４】
（５）また、本発明の一態様は、上述のプロセッサであって、前記処理部の処理時間に関する処理時間情報を検出する処理時間検出部を更に備え、前記制御部は、前記予測転送時間と前記処理時間情報とを参照して前記処理部の処理能力を制御する。
【００１５】
（６）また、本発明の一態様は、上述のプロセッサであって、前記データ転送時間は、データ転送におけるデータ転送要求からデータ転送完了までの所要サイクル数である。
【００１６】
（７）また、本発明の一態様は、上述のプロセッサであって、前記処理部が処理するデータを転送するＤＭＡを更に備え、前記転送時間検出部は、前記ＤＭＡが接続されたメモリに対するデータ転送要求からデータ転送開始までの期間を含むデータ転送時間に関するデータ転送時間情報を検出する。
【００１７】
（８）また、本発明の一態様は、上述のプロセッサであって、前記処理部は複数のプロセッサエレメントを備え、前記制御部は、前記プロセッサエレメントの動作周波数を制御する。
【００１８】
（９）また、本発明の一態様は、上述のプロセッサであって、前記処理部は複数のプロセッサエレメントを備え、前記制御部は、処理に使用するプロセッサエレメントの数を制御する。
【００１９】
（１０）また、本発明の一態様は、データを処理する処理部と、メモリに対するデータ転送要求からデータ転送開始までの期間における前記メモリまたはシステムバスの応答速度を検出する転送時間検出部と、前記転送時間検出部が検出した応答速度を少なくとも参照して前記処理部の処理能力を制御する制御部と、を備えるプロセッサである。
【発明の効果】
【００２０】
本発明の一態様によれば、消費電力を抑えつつ処理性能を確保することができる。
【図面の簡単な説明】
【００２１】
【図１】本実施形態におけるプロセッサの構成を示す概略ブロック図である。
【図２】本実施形態におけるクロック制御部の構成を示す概略ブロック図である。
【図３】クロック制御部で使用する各信号のタイミングチャートの一例である。
【図４】本実施形態におけるクロック制御部の処理の流れの一例を示すフローチャートである。
【図５】図４のステップＳ１０５の処理の詳細の一例を示すフローチャートである。
【図６】図４のステップＳ１０７の処理の詳細の一例を示すフローチャートである。
【発明を実施するための形態】
【００２２】
以下、本発明の実施形態について、図面を参照して詳細に説明する。図１は、本実施形態におけるプロセッサ１の構成を示す概略ブロック図である。プロセッサ１は、システムバス２を介して共有メモリ３と接続されている。プロセッサ１は、ＤＭＡ１１と、データメモリ１２と、命令メモリ１３と、処理部１４と、処理サイクルカウンタ（処理時間検出部）１５と、転送サイクルカウンタ（転送時間検出部）１６と、クロック制御部（制御部）１７とを備える。
【００２３】
ＤＭＡ１１は、システムバス２を介して共有メモリ３からデータを読み出し、読み出したデータをデータメモリ１２に転送する。また、ＤＭＡ１１は、データメモリ１２からデータを読み出し、システムバス２を介して共有メモリ３に転送する。
ＤＭＡ１１は、データ転送を行うときに、不図示の調停回路に対してデータ転送を要求する要求信号（ＲＥＱ）を出力する。また、ＤＭＡ１１はその要求信号（ＲＥＱ）を転送サイクルカウンタへ出力する。不図示の調停回路は、データ転送可能であるならば、データ転送可能を示す許可信号（ＡＣＫ）をＤＭＡ１１に返す。これにより、ＤＭＡ１１はデータ転送を開始することができる。その際、ＤＭＡ１１は、許可信号（ＡＣＫ）を転送サイクルカウンタ１６へ出力する。また、処理部１４から共有メモリ３へデータが転送される場合、ＤＭＡ１１はデータが転送される最後のクロックで立ち上がり、データ転送終了時に立ち下がるデータ転送完了信号（ＬＡＳＴ）を生成する。そして、ＤＭＡ１１は生成したデータ転送完了信号（ＬＡＳＴ）を転送サイクルカウンタ１６へ出力する。一方、共有メモリ３から処理部１４へデータが転送される場合、システムバス２はデータ転送完了信号（ＬＡＳＴ）を生成する。そして、システムバス２は生成したデータ転送完了信号（ＬＡＳＴ）を転送サイクルカウンタ１６へ出力する。
【００２４】
データメモリ１２には、データが格納されている。
命令メモリ１３には、処理部１４が実行するためのプログラムが格納されている。
処理部１４は、データを処理する。ここで処理部１４は、プロセッサエレメント（以下、ＰＥともいう）１４−０〜１４−ｎ（ｎは正の整数）までのｎ個のＰＥ１４−ｉ（ｉは０からｎまでの整数）を備える。ＰＥ１４−ｉは、例えばＳＩＭＤである。ＰＥ１４−ｉには、命令メモリ１３から入力された一つの命令につき複数のデータがデータメモリ１２から入力される。
【００２５】
処理サイクルカウンタ１５は、予め定められた測定周期で、プロセッサのデータの処理にかかるデータ処理時間を示すデータ処理時間情報を検出する。具体的には、処理サイクルカウンタは、ＰＥ１４−ｉのデータ処理サイクル数をデータ処理時間情報の一例として計数（カウント）する。ここでデータ処理サイクル数は、例えば、所定の周期毎に各ＰＥ１４−ｉがデータ処理の実行に要したサイクル数である。但し、ＰＥ１４−ｉのうち動作が止まっているＰＥ１４−ｉのサイクル数は無視する。処理サイクルカウンタ１５は、検出したデータ処理時間情報を示すデータ転送時間信号をクロック制御部１７へ出力する。
【００２６】
転送サイクルカウンタ１６は、予め定められた処理サイクルカウンタ１５と同じ測定周期で、共有メモリ３に対するデータ転送要求からデータ転送開始までの期間を含むデータ転送時間に関するデータ転送時間情報を検出する。データ転送時間情報は、共有メモリ３の混雑度を反映する。具体的には、例えば、転送サイクルカウンタ１６は、共有メモリ３に対するデータ転送要求からデータ転送開始までの期間を含むデータ転送サイクル数をデータ転送時間情報の一例として検出する。本実施形態では、データ転送時間は一例として、共有メモリ３に対するデータ転送要求からデータ転送開始までの期間を含む、データ転送に要したサイクル数の所定の測定周期内における総和である。これにより、データ転送サイクル数に、共有メモリ３に対するデータ転送要求からデータ転送開始までの期間を含ませることにより、データ転送サイクル数に共有メモリ３の応答速度が反映される。共有メモリ３が混雑していない場合は、データ転送サイクル数は、転送されるデータ量に応じた値になる。一方、共有メモリが混雑している場合は、データ転送要求からデータ転送開始までの期間が長くなるため、データ転送サイクル数が多くなる。そして、転送サイクルカウンタ１６は、例えば検出したデータ転送時間を示すデータ転送時間信号をクロック制御部１７へ出力する。
【００２７】
クロック制御部１７は、例えば処理サイクルカウンタ１５から入力されたデータ処理時間信号が示すデータ処理時間と、転送サイクルカウンタ１６から入力されたデータ転送時間信号が示すデータ転送時間とに基づいて、処理部１４の処理能力を制御する。ここで処理部１４の処理能力は、例えば各ＰＥ１４−ｉの動作周波数または実際に動作するＰＥ１４−ｉの数である。これにより、処理部１４の処理能力が、共有メモリ３に対するデータ転送要求からデータ転送開始までの期間を含むデータ転送時間と、ＰＥ１４−ｉのデータ処理時間から決定される。
【００２８】
クロック制御部１７は、例えば１周期前を含む過去の複数の測定周期のデータ転送時間の変化に基づいて、次の測定周期におけるデータ転送時間の予測である予測転送時間を算出する。例えば、次の測定周期では、２周期前と１周期前の変化と同じだけデータ転送時間が変化すると予測する場合、クロック制御部１７は１周期前と２周期前の転送時間の差分を１周期前の転送時間に加えた時間を予測転送時間として算出する。なお、クロック制御部１７は、予測転送時間を算出する際に、一例として１周期前を含む複数の測定周期のデータ転送時間の変化に基づいたが、複数の測定周期は１周期前を含まなくてもよく、２以上の周期前の測定周期を含んでもよい。
【００２９】
クロック制御部１７は、処理部１４が所定の処理を実行終了するまでに最大でかけられる時間である要求処理時間を示す要求処理時間情報を予め保持する。データ処理時間が要求処理時間を上回っている場合（後述する図４のステップＳ１０２参照）、クロック制御部１７はプロセッサの処理が間に合っていないと判定して、処理部１４の処理能力（例えば、各ＰＥ１４−ｉの動作周波数）を上げる。
予測転送時間が要求処理時間を上回る場合（後述する図４のステップＳ１０３参照）、クロック制御部１７は処理部１４の処理能力（例えば各ＰＥ１４−ｉの動作周波数）を上げる。これにより、次の測定周期でデータ転送時間によりプロセッサの処理が間に合わなくなるのを防ぐことができる。このように、処理部１４が所定の処理を上記の要求処理時間以内に終わるように、クロック制御部１７は処理部１４の処理能力を制御する。
【００３０】
データ処理時間が予測転送時間を上回っている場合（後述する図４のステップＳ１０４参照）、クロック制御部１７は処理部１４の処理能力（例えば各ＰＥ１４−ｉの動作周波数）を上げる。これにより、次の測定周期で処理部１４の性能がボトルネックになるのを防ぐことができる。
データ処理時間が例えば予測転送時間の２分の１を下回っている場合、クロック制御部１７は処理部１４の処理能力（例えば各ＰＥ１４−ｉの動作周波数）を下げる。これにより、次の測定周期でデータ転送時間がボトルネックになるのを防ぐことができる。
ここで処理部１４の処理能力を変更する場合、各ＰＥ１４−ｉの動作周波数を変更するか、動作するＰＥ１４−ｉの数を変更するかの判断は、どちらを優先するか予め設定しておく。
【００３１】
図２は、本実施形態におけるクロック制御部１７の構成を示す概略ブロック図である。クロック制御部１７は、ＡＣＫカウント部１７１とＯＲ回路１７２とＴＲＡＮＳカウント部１７３とを備える。
ＡＣＫカウント部１７１は、ＡＣＫカウント値（ＡＣＫ＿ＣＯＵＮＴ）を管理する。ここで、ＡＣＫカウント値（ＡＣＫ＿ＣＯＵＮＴ）は、不図示の調停回路により許可されたデータ転送要求のうち、転送が完了していないデータ転送要求の数である。具体的には例えば、ＡＣＫカウント部１７１は、不図示の調停回路から入力された許可信号（ＡＣＫ）がハイレベルの場合、ＡＣＫカウント値（ＡＣＫ＿ＣＯＵＮＴ）を１増やす。これにより、あるデータ転送要求について不図示の調停回路がデータ転送を許可した場合にＡＣＫカウント値（ＡＣＫ＿ＣＯＵＮＴ）が１増加する。また、例えばＡＣＫカウント部１７１は、ＤＭＡ１１から入力されたデータ転送完了信号（ＬＡＳＴ）がハイレベルの場合、ＡＣＫカウント値（ＡＣＫ＿ＣＯＵＮＴ）を１減らす。これにより、あるデータについてデータ転送が完了した場合にＡＣＫカウント値（ＡＣＫ＿ＣＯＵＮＴ）が１減少する。不図示の調停回路から入力された許可信号（ＡＣＫ）と、ＤＭＡ１１から入力されたデータ転送完了信号（ＬＡＳＴ）が、同時にハイレベルの場合は、ＡＣＫカウント値（ＡＣＫ＿ＣＯＵＮＴ）を保持する。
【００３２】
ＡＣＫカウント部１７１は、ＡＣＫカウント値（ＡＣＫ＿ＣＯＵＮＴ）の値に応じて完了待ち信号（ＬＡＳＴ＿ＷＡＩＴ）を生成する。具体的には例えば、ＡＣＫカウント部１７１は、ＡＣＫカウント値（ＡＣＫ＿ＣＯＵＮＴ）が０ならば、完了待ち信号（ＬＡＳＴ＿ＷＡＩＴ）の信号レベルをローレベルに変更する。また例えば、ＡＣＫカウント部１７１は、ＡＣＫカウント値（ＡＣＫ＿ＣＯＵＮＴ）が非０ならば、完了待ち信号（ＬＡＳＴ＿ＷＡＩＴ）の信号レベルをハイレベルに変更する。ＡＣＫカウント部１７１は、生成した完了待ち信号（ＬＡＳＴ＿ＷＡＩＴ）をＯＲ回路１７２へ出力する。
【００３３】
ＯＲ回路１７２は、ＡＣＫカウント部１７１から入力された完了待ち信号（ＬＡＳＴ＿ＷＡＩＴ）とＤＭＡ１１から入力された要求信号（ＲＥＱ）の論理和を取ることで、論理和を示す転送待ち信号（ＴＲＡＮＳ＿ＷＡＩＴ）を生成する。これにより、転送待ち信号（ＴＲＡＮＳ＿ＷＡＩＴ）は、調停回路に対してデータ転送許可を要求するリクエスト期間中と、データ転送が許可されてからデータ転送が完了するまでのデータ転送待ち期間中の少なくともいずれかに該当するときにハイレベルになる。ＯＲ回路１７２は、生成した転送待ち信号（ＴＲＡＮＳ＿ＷＡＩＴ）をＴＲＡＮＳカウント部１７３へ出力する。
【００３４】
ＴＲＡＮＳカウント部１７３は、データ転送サイクル数（ＴＲＡＮＳ＿ＣＯＵＮＴ）を管理する。具体的には例えば、ＴＲＡＮＳカウント部１７３は、内部クロックの立ち上がり時に、ＯＲ回路１７２から入力された転送待ち信号（ＴＲＡＮＳ＿ＷＡＩＴ）がハイレベルの場合、データ転送サイクル数（ＴＲＡＮＳ＿ＣＯＵＮＴ）を１増加させる。データ転送サイクル数（ＴＲＡＮＳ＿ＣＯＵＮＴ）は、データ処理時間情報の一例である。ここでデータ転送サイクル数（ＴＲＡＮＳ＿ＣＯＵＮＴ）は、リクエスト期間中及びデータ転送待ち期間中のいずれかに該当するサイクル数である。これは、メモリが混雑していれば、リクエスト期間が伸びるか、またはデータ転送待ち期間が伸びるので、リクエスト期間及びデータ転送待ち期間のいずれかに該当する期間が、メモリの混雑度を表すからである。ＴＲＡＮＳカウント部１７３は、データ処理時間情報（ここでは、一例としてデータ転送サイクル数）を示すデータ転送時間信号をクロック制御部１７へ出力する。
【００３５】
図３は、クロック制御部１７で使用する各信号のタイミングチャートの一例である。同図において、上から順に、内部クロック、要求信号（ＲＥＱ）、データのアドレス（ＡＤＲ）、許可信号（ＡＣＫ）、実際にデータ転送される期間を示すデータ転送時間信号（ＶＡＬＩＤ）、共有メモリ３からデータメモリ１２へ転送されるデータ（ＤＡＴＡ）、データ転送完了信号（ＬＡＳＴ）、ＡＣＫカウント値（ＡＣＫ＿ＣＯＵＮＴ）、完了待ち信号（ＬＡＳＴ＿ＷＡＩＴ）、転送待ち信号（ＴＲＡＮＳ＿ＷＡＩＴ）、データ転送サイクル数（ＴＲＡＮＳ＿ＣＯＵＮＴ）の一例が示されている。ここで、データのアドレス（ＡＤＲ）内のＡは、アドレスの実体を示し、データ（ＤＡＴＡ）内のＤは、データの実体を示す。
【００３６】
同図のデータのアドレス（ＡＤＲ）において、要求信号（ＲＥＱ）がハイレベルのときに、データのアドレスの実体ＡがＤＭＡ１１から調停回路に出力されることが示されている。許可信号（ＡＣＫ）がハイレベルの場合に、破線の矢印Ａ３１に示すように、ＡＣＫカウント値（ＡＣＫ＿ＣＯＵＮＴ）が１増加する。これにより、ＡＣＫカウント値（ＡＣＫ＿ＣＯＵＮＴ）が０から１に変化する。データ転送時間信号（ＶＡＬＩＤ）は、データの実体が転送開始されるデータ転送開始時刻でハイレベルになり、データの実体が転送完了するデータ転送完了時刻でローレベルになる。また、データ転送完了信号（ＬＡＳＴ）は、データ転送完了時刻の１クロック前でハイレベルに立ち上がり、データ転送完了時刻でローレベルに立ち下がる。データ転送完了信号（ＬＡＳＴ）がハイレベルの場合に、破線の矢印Ａ３２に示すように、ＡＣＫカウント値（ＡＣＫ＿ＣＯＵＮＴ）が１減少する。これにより、ＡＣＫカウント値（ＡＣＫ＿ＣＯＵＮＴ）が１から０に変化する。
【００３７】
次に、許可信号（ＡＣＫ）がハイレベルの場合に、破線の矢印Ａ３３に示すように、ＡＣＫカウント値（ＡＣＫ＿ＣＯＵＮＴ）が１増加する。これにより、ＡＣＫカウント値（ＡＣＫ＿ＣＯＵＮＴ）が０から１に変化する。次に、データ転送完了信号（ＬＡＳＴ）がハイレベルの場合に、破線の矢印Ａ３４に示すように、ＡＣＫカウント値（ＡＣＫ＿ＣＯＵＮＴ）が１減少する。これにより、ＡＣＫカウント値（ＡＣＫ＿ＣＯＵＮＴ）が１から０に変化する。
【００３８】
完了待ち信号（ＬＡＳＴ＿ＷＡＩＴ）は、ＡＣＫカウント値（ＡＣＫ＿ＣＯＵＮＴ）が０のときにローレベルを示し、ＡＣＫカウント値（ＡＣＫ＿ＣＯＵＮＴ）が非０のときにハイレベルを示す。
転送待ち信号（ＴＲＡＮＳ＿ＷＡＩＴ）は、要求信号（ＲＥＱ）と完了待ち信号（ＬＡＳＴ＿ＷＡＩＴ）との論理和を示す。これにより、転送待ち信号（ＴＲＡＮＳ＿ＷＡＩＴ）は、要求信号（ＲＥＱ）がハイレベルである場合及び完了待ち信号（ＬＡＳＴ＿ＷＡＩＴ）が１レベル以上である場合の少なくともいずれかに該当する場合にハイレベルになる。これにより、調停回路に対してデータ転送許可を要求するリクエスト期間中、及びデータ転送が許可されてからデータ転送が完了するまでのデータ転送待ち期間中のうち少なくともいずれかに該当するときに転送待ち信号（ＴＲＡＮＳ＿ＷＡＩＴ）がハイレベルになる。
【００３９】
内部クロックが立ち上がるときに転送待ち信号（ＴＲＡＮＳ＿ＷＡＩＴ）がハイレベルの場合、データ転送サイクル数（ＴＲＡＮＳ＿ＣＯＵＮＴ）が１増加する。これにより、転送待ち信号（ＴＲＡＮＳ＿ＷＡＩＴ）がハイレベルのときの時間を計数することができる。これにより、データ転送サイクル数（ＴＲＡＮＳ＿ＣＯＵＮＴ）は、調停回路に対してデータ転送許可を要求するリクエスト期間中、及びデータ転送が許可されてからデータ転送が完了するまでのデータ転送待ち期間中のうち少なくともいずれかに該当する期間の長さを表す。
【００４０】
図４は、本実施形態におけるクロック制御部１７の処理の流れの一例を示すフローチャートである。同図は、ある測定周期におけるクロック制御部１７の処理の流れの一例である。
（ステップＳ１０１）まず、クロック制御部１７は、転送時間を予測する。具体的には例えば、クロック制御部１７は、１測定周期前の転送時間から２測定周期前の転送時間を引いた時間を１測定周期前の転送時間に加算することで、予測転送時間を算出する。
【００４１】
（ステップＳ１０２）次に、クロック制御部１７は、データ処理時間が要求処理時間よりも長いか否か判定する。データ処理時間が要求処理時間よりも長い場合（ＹＥＳ）、クロック制御部１７はステップＳ１０５の処理に進む。データ処理時間が要求処理時間よりも長くない場合（ＮＯ）、クロック制御部１７はステップＳ１０３の処理に進む。
（ステップＳ１０３）クロック制御部１７は、予測転送時間が要求処理時間より長いか否か判定する。予測転送時間が要求処理時間より長い場合（ＹＥＳ）、クロック制御部１７はステップＳ１０５の処理に進む。予測転送時間が要求処理時間より長くない場合（ＮＯ）、クロック制御部１７はステップＳ１０４の処理に進む。
【００４２】
（ステップＳ１０４）クロック制御部１７は、データ処理時間が予測転送時間より長いか否か判定する。データ処理時間が予測転送時間より長い場合（ＹＥＳ）、クロック制御部１７はステップＳ１０５の処理に進む。データ処理時間が予測転送時間より長くない場合（ＮＯ）、クロック制御部１７はステップＳ１０６の処理に進む。
（ステップＳ１０５）クロック制御部１７は、処理部１４の処理能力を強化する。その処理の詳細は、後述する図５で説明する。その後、クロック制御部１７はその処理を終了する。
【００４３】
（ステップＳ１０６）クロック制御部１７は例えば、データ処理時間が予測転送時間の２分の１以下であるか否か判定する。データ処理時間が予測転送時間の２分の１以下である場合（ＹＥＳ）、クロック制御部１７はステップＳ１０７の処理に進む。データ処理時間が予測転送時間の２分の１以下でない場合（ＮＯ）、クロック制御部１７はその処理を終了する。
（ステップＳ１０７）クロック制御部１７は、処理部１４の処理能力を低減させることで消費電力を抑制する。その処理の詳細は、後述する図６で説明する。
【００４４】
なお、図４のステップＳ１０４で、データ処理時間が予測転送時間より長くない場合（ＮＯ）、クロック制御部１７は処理部１４の処理能力を低減させることで消費電力を抑制してもよい。
また、図４のステップＳ１０６でデータ処理時間が予測転送時間の２分の１以下か否かという判定条件で判定したが、２分の１に限らず、４分の１でも、８分の１でもよく、１より小さい値であればよい。
【００４５】
図５は、図４のステップＳ１０５の処理の詳細の一例を示すフローチャートである。
（ステップＳ２０１）まず、クロック制御部１７は、ＰＥ１４−ｉの動作周波数の変更が優先であるか否かを示す周波数優先情報を参照して、ＰＥ１４−ｉの動作周波数の変更が優先であるか否か判定する。ここで、クロック制御部１７は、動作周波数の変更が優先であるか否かを示す周波数優先情報を予め保持する。動作周波数の変更が優先である場合（ＹＥＳ）、クロック制御部１７はステップＳ２０２の処理に進む。動作周波数の変更が優先でない場合（ＮＯ）、クロック制御部１７はステップＳ２０６の処理に進む。
【００４６】
（ステップＳ２０２）クロック制御部１７は、ＰＥ１４−ｉの動作周波数が動作しうる最高の周波数であるか否か判定する。ＰＥ１４−ｉの動作周波数が動作しうる最高の周波数である場合（ＹＥＳ）、クロック制御部１７はステップＳ２０３の処理に進む。ＰＥ１４−ｉの動作周波数が動作しうる最高の周波数でない場合（ＮＯ）、クロック制御部１７はステップＳ２０５の処理に進む。
【００４７】
（ステップＳ２０３）クロック制御部１７は、現在動作しているＰＥ数が動作しうる最多のＰＥ数であるか否か判定する。現在動作しているＰＥ数が動作しうる最多のＰＥ数である場合（ＹＥＳ）、クロック制御部１７はその処理を終了する。現在動作しているＰＥ数が動作しうる最多のＰＥ数でない場合（ＮＯ）、クロック制御部１７はステップＳ２０４の処理に進む。
【００４８】
（ステップＳ２０４）クロック制御部１７は例えば、動作させるＰＥ１４−ｉの数を２倍に変更する。その後、クロック制御部１７はその処理を終了する。
（ステップＳ２０５）クロック制御部１７は例えば、各ＰＥ１４−ｉの動作周波数を２倍に変更する。その後、クロック制御部１７はその処理を終了する。
（ステップＳ２０６）クロック制御部１７は、現在動作しているＰＥ数が動作しうる最多のＰＥ数であるか否か判定する。現在動作しているＰＥ数が動作しうる最多のＰＥ数である場合（ＹＥＳ）、クロック制御部１７はステップＳ２０７の処理に進む。現在動作しているＰＥ数が動作しうる最多のＰＥ数でない場合（ＮＯ）、クロック制御部１７はステップＳ２０９の処理に進む。
【００４９】
（ステップＳ２０７）クロック制御部１７は、ＰＥ１４−ｉの動作周波数が動作しうる最高の周波数であるか否か判定する。ＰＥ１４−ｉの動作周波数が動作しうる最高の周波数である場合（ＹＥＳ）、クロック制御部１７はその処理を終了する。ＰＥ１４−ｉの動作周波数が動作しうる最高の周波数でない場合（ＮＯ）、クロック制御部１７はステップＳ２０８の処理に進む。
【００５０】
（ステップＳ２０８）クロック制御部１７は例えば、各ＰＥ１４−ｉの動作周波数を２倍に変更する。その後、クロック制御部１７はその処理を終了する。
（ステップＳ２０９）クロック制御部１７は例えば、動作させるＰＥ１４−ｉの数を２倍に変更する。その後、クロック制御部１７はその処理を終了する。
【００５１】
なお、図５では、各ＰＥ１４−ｉの動作周波数または動作させるＰＥ１４−ｉの数を２倍に変更したが、２倍に限らず、１より大きい倍率であればよい。但し、図４のステップＳ１０６でデータ処理時間が予測転送時間の２分の１以下か否かという判定条件にしたので、その２分の１の逆数である２倍が好ましい。
【００５２】
図６は、図４のステップＳ１０７の処理の詳細の一例を示すフローチャートである。
（ステップＳ３０１）まず、クロック制御部１７は、ＰＥ１４−ｉの動作周波数の変更が優先であるか否かを示す周波数優先情報を参照して、ＰＥ１４−ｉの動作周波数の変更が優先であるか否か判定する。動作周波数の変更が優先である場合（ＹＥＳ）、クロック制御部１７はステップＳ３０２の処理に進む。動作周波数の変更が優先でない場合（ＮＯ）、クロック制御部１７はステップＳ３０６の処理に進む。
【００５３】
（ステップＳ３０２）クロック制御部１７は、ＰＥ１４−ｉの動作周波数が動作しうる最低の周波数であるか否か判定する。ＰＥ１４−ｉの動作周波数が動作しうる最低の周波数である場合（ＹＥＳ）、クロック制御部１７はステップＳ３０３の処理に進む。ＰＥ１４−ｉの動作周波数が動作しうる最低の周波数でない場合（ＮＯ）、クロック制御部１７はステップＳ３０５の処理に進む。
【００５４】
（ステップＳ３０３）クロック制御部１７は、現在動作しているＰＥ数が動作しうる最小のＰＥ数であるか否か判定する。現在動作しているＰＥ数が動作しうる最小のＰＥ数である場合（ＹＥＳ）、クロック制御部１７はその処理を終了する。現在動作しているＰＥ数が動作しうる最小のＰＥ数でない場合（ＮＯ）、クロック制御部１７はステップＳ３０４の処理に進む。
【００５５】
（ステップＳ３０４）クロック制御部１７は、動作させるＰＥ１４−ｉの数を２分の１倍に変更する。その後、クロック制御部１７はその処理を終了する。
（ステップＳ３０５）クロック制御部１７は、各ＰＥ１４−ｉの動作周波数を２分の１倍にする。その後、クロック制御部１７はその処理を終了する。
（ステップＳ３０６）クロック制御部１７は、現在動作しているＰＥ数が動作しうる最少のＰＥ数であるか否か判定する。現在動作しているＰＥ数が動作しうる最少のＰＥ数である場合（ＹＥＳ）、クロック制御部１７はステップＳ３０７の処理に進む。現在動作しているＰＥ数が動作しうる最少のＰＥ数でない場合（ＮＯ）、クロック制御部１７はステップＳ３０９の処理に進む。
【００５６】
（ステップＳ３０７）クロック制御部１７は、ＰＥ１４−ｉの動作周波数が動作しうる最低の周波数であるか否か判定する。ＰＥ１４−ｉの動作周波数が動作しうる最低の周波数である場合（ＹＥＳ）、クロック制御部１７はその処理を終了する。ＰＥ１４−ｉの動作周波数が動作しうる最低の周波数でない場合（ＮＯ）、クロック制御部１７はステップＳ３０８の処理に進む。
（ステップＳ３０８）クロック制御部１７は、各ＰＥ１４−ｉの動作周波数を２分の１倍に変更する。その後、クロック制御部１７はその処理を終了する。
（ステップＳ３０９）クロック制御部１７は、動作させるＰＥ１４−ｉの数を２分の１倍に変更する。その後、クロック制御部１７はその処理を終了する。
【００５７】
図６の処理は、図４のステップＳ１０６でクロック制御部１７がデータ処理時間が予測転送時間の２分の１以下であると判定した場合の処理であるので、クロック制御部１７が処理部１４の処理能力を２分の１にしても、データ処理時間によって処理に遅延が生じることがない。なお、図４のステップＳ１０６で、クロック制御部１７はデータ処理時間が予測転送時間のＭ分の１以下（Ｍは整数）であると判定してもよい。その場合、クロック制御部１７は、そのＭ分の１という割合にあわせて、処理部１４の処理能力をＭ分の１以下にすればよい。このように、クロック制御部１７はデータ処理時間と予測転送時間との関係に基づいて、処理部１４の処理能力の変化量を決定してもよい。
【００５８】
以上、本実施形態において、予測転送時間が要求処理時間より長い場合（図４のステップＳ１０３でＹＥＳの場合）、クロック制御部１７は、処理部１４の処理性能（例えば、動作周波数）を上げる。ここで予測転送時間が要求処理時間より長い場合とは、例えばシステムメモリまたはシステムバスの応答速度低下により、処理部１４が要求処理時間内にデータ転送を完了できない場合である。クロック制御部１７が処理部１４の処理性能を上げることで、システムメモリへのデータ転送要求タイミングが早くなり、システムメモリの応答速度低下の影響を減らし、性能低下を防ぐことができる。
【００５９】
データ処理時間が予測転送時間より長い場合（図４のステップＳ１０４でＹＥＳの場合）、次の測定周期で処理部１４の性能がボトルネックになるので、クロック制御部１７は処理部１４の処理能力（例えば各ＰＥ１４−ｉの動作周波数）を上げる。これにより、処理部１４の処理遅延を防ぐことができるので、性能低下を防ぐことができる。
一方、処理部１４が所定時間（例えば、予測転送時間の２分の１の時間）内にデータ処理を完了できる場合（図４のステップＳ１０６でＹＥＳの場合）、クロック制御部１７は、処理部１４の処理性能（例えば、動作周波数）を下げることで消費電力を抑えることができる。
【００６０】
クロック制御部１７がプロセッサのストールの発生を予測した場合（本実施形態では、一例としてデータ処理時間が予測転送時間の２分の１以下の場合、図４のステップＳ１０６でＹＥＳの場合）、クロック制御部１７は次の測定周期における処理部１４の処理性能（例えば、動作周波数）を下げることで、無駄な電力消費を抑えることができる。一方、共有メモリ３が混雑していてデータ処理時間が要求処理時間を越える場合（図４のステップＳ１０２参照）、すなわち要求処理時間内に処理が終わらない場合、次の測定周期における処理部１４の処理性能（例えば、動作周波数）を上げることで、性能未達を回避することができる。
【００６１】
以上の処理をまとめると、転送サイクルカウンタ１６は、共有メモリ３に対するデータ転送要求からデータ転送開始までの期間を含むデータ転送時間に関するデータ転送時間情報を検出する。クロック制御部１７は、転送サイクルカウンタ１６が検出したデータ転送時間情報（例えば、データ転送サイクル数）を少なくとも参照して、プロセッサの処理能力を制御する。これにより、クロック制御部１７は、データ転送要求からデータ転送開始までの期間を考慮して処理部１４の処理能力を制御することで、メモリの混雑度をより考慮して処理部１４の処理能力を制御することができる。例えば、データ転送時間が予め決められた基準よりも長い場合には、クロック制御部１７は処理部１４の処理能力を強化し、データ転送時間が予め決められた基準よりも短い場合には、クロック制御部１７は処理部１４の処理能力を低減して消費電力を低減させることができる。その結果、消費電力を抑えつつ処理性能を確保することができる。
【００６２】
また、例えば、クロック制御部１７は、データ転送時間情報（例えば、データ転送サイクル数）に基づいて未来のデータ転送時間を予測し、予測して得た予測転送時間に基づいて処理部１４の処理能力を制御する。その際クロック制御部１７は、一周期前のデータ転送時間を含む過去の複数周期のデータ転送時間の変化に基づいて上記予測転送時間を予測する。これにより、クロック制御部１７は未来の予測転送時間の予測精度を向上させることができるので、処理部１４の処理が所定時間内に完了しなくなる確率を低減させることができる。ここで、データ転送時間は、例えばデータ転送におけるデータ転送要求からデータ転送完了までの所要サイクル数である。
【００６３】
更に詳細には、クロック制御部１７は、例えば、上記予測転送時間（例えば、データ転送サイクル数）を参照して所定時間（例えば、要求処理時間）内に処理部１４がデータ処理を完了できるか否か判定する(図４のステップＳ１０３参照)。所定時間（例えば、要求処理時間）内に処理部１４がデータ処理を完了できない場合（図４のステップＳ１０３  ＹＥＳ参照）、クロック制御部１７は次の周期の処理部１４の処理能力を向上させる。これにより、メモリへのデータ転送要求タイミングが早くなり、メモリの応答速度低下の影響を減らし、性能低下を防ぐことができる。なお、所定時間（例えば、要求処理時間）内に処理部１４がデータ処理を完了できる場合（図４のステップＳ１０３  ＮＯ参照）、クロック制御部１７は次の周期の処理部１４の処理能力を低減させてもよい。
【００６４】
また、処理サイクルカウンタ１５は、プロセッサの処理時間に関する処理時間情報を検出する。クロック制御部１７は、予測転送時間と処理サイクルカウンタ１５が検出した処理時間情報とを参照して処理部１４の処理能力を制御する（図４のステップＳ１０４参照）。例えばデータ処理時間が予測転送時間より長い場合（図４のステップＳ１０４でＹＥＳの場合）、クロック制御部１７は次の測定周期で処理部１４の性能がボトルネックになるので、クロック制御部１７は処理部１４の処理能力（例えば各ＰＥ１４−ｉの動作周波数）を上げる。これにより、処理部１４の処理遅延を防ぐことができるので、性能低下を防ぐことができる。
【００６５】
また、ＤＭＡ１１は、処理部１４が処理するデータを転送する。転送サイクルカウンタ１６は、ＤＭＡ１１が接続された共有メモリ３に対するデータ転送要求からデータ転送開始までの期間を含むデータ転送時間に関するデータ転送時間情報を検出する。ここで、処理部１４は複数のＰＥ１４−ｉを更に備え、クロック制御部１７は、ＰＥ１４−ｉの動作周波数を制御するか、あるいは処理に使用するＰＥ１４−ｉの数を制御する。
【００６６】
なお、本実施形態では、測定周期は予め決められていたが、これに限らず、測定周期は可変であってもよい。これにより、測定期間毎に共有メモリ３の混雑状況が極端に変化するのを回避することができ、処理部１４の性能の過不足を抑えることができる。
また、クロック制御部１７は、上述した処理を行う通常モードに加えて、性能確保を優先するモードと、電力低減を優先するモードの動作モードを切り替え可能であってもよい。例えば、性能確保を優先するモードにおいて、クロック制御部１７はＰＥ１４−ｉの動作周波数を上げる場合は通常モードよりも大きく上げ（例えば、最大周波数まで上げ）、ＰＥ１４−ｉの動作周波数を下げる場合は段階的に下げてもよい。これにより、予測がはずれてＰＥ１４−ｉの動作周波数が低くなって処理が間に合いそうにない場合に、クロック制御部１７は次の測定周期で通常よりも動作周波数を大きく上げることによって遅れを取り返すことができる。その結果、クロック制御部１７は処理の遅れを取り戻して、ある期間内に処理が終わるようにすることができる。また、処理部１４がある処理を要求処理時間内に完了していない場合、クロック制御部１７は次の測定周期でＰＥ１４−ｉの動作周波数を通常より高くすることで、ある動作周期（ここで、動作周期は測定周期より長い）内の要求性能を満たすようにすることができる。
【００６７】
電力低減を優先するモードにおいて、クロック制御部１７はＰＥ１４−ｉの動作周波数を上げる場合は段階的に上げ、ＰＥ１４−ｉの動作周波数を下げる場合は通常モードよりも大きく下げ（例えば、最低周波数まで下げ）てもよい。これにより、予測がはずれてＰＥ１４−ｉの動作周波数が高くなって電力を余計に消費してしまった場合に、クロック制御部１７は次の測定周期で通常よりも動作周波数を大きく下げることによって電力消費を抑えることができる。その結果、クロック制御部１７はある期間内の消費電力を一定以内に収めることができる。
【００６８】
なお、転送時間検出部としての転送サイクルカウンタ１６は、共有メモリ３に対するデータ転送要求からデータ転送開始までの期間の共有メモリ（システムメモリ）３またはシステムバスの応答速度を検出してもよい。その場合、クロック制御部１７は、転送サイクルカウンタ１６が検出した応答速度を少なくとも参照して処理部１４の処理能力を制御してもよい。
【００６９】
以上、本発明の実施形態について図面を参照して詳述したが、具体的な構成はこの実施形態に限られるものではない。各実施形態における各構成及びそれらの組み合わせ等は一例であり、本発明の趣旨から逸脱しない範囲内で、構成の付加、省略、置換、およびその他の変更が可能である。また、本発明は実施形態によって限定されることはなく、特許請求の範囲によってのみ限定される。
【符号の説明】
【００７０】
１  プロセッサ
２  システムバス
３  共有メモリ
１１  ＤＭＡ
１２  データメモリ
１３  命令メモリ
１４  処理部
１４−０〜１４−ｎ  プロセッサエレメント（ＰＥ）
１５  処理サイクルカウンタ（処理時間検出部）
１６  転送サイクルカウンタ（転送時間検出部）
１７  クロック制御部（制御部）
１７１  ＡＣＫカウント部
１７２  ＯＲ回路
１７３  ＴＲＡＮＳカウント部
【図１】
2014134958.tif 000003
【図２】
2014134958.tif 000004
【図３】
2014134958.tif 000005
【図４】
2014134958.tif 000006
【図５】
2014134958.tif 000007
【図６】
2014134958.tif 000008