IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社Preferred Networksの特許一覧 ▶ 国立大学法人神戸大学の特許一覧

特開2024-137388情報処理装置、命令挿入装置及び情報処理装置の制御方法
<>
  • 特開-情報処理装置、命令挿入装置及び情報処理装置の制御方法 図1
  • 特開-情報処理装置、命令挿入装置及び情報処理装置の制御方法 図2
  • 特開-情報処理装置、命令挿入装置及び情報処理装置の制御方法 図3
  • 特開-情報処理装置、命令挿入装置及び情報処理装置の制御方法 図4
  • 特開-情報処理装置、命令挿入装置及び情報処理装置の制御方法 図5
  • 特開-情報処理装置、命令挿入装置及び情報処理装置の制御方法 図6
  • 特開-情報処理装置、命令挿入装置及び情報処理装置の制御方法 図7
  • 特開-情報処理装置、命令挿入装置及び情報処理装置の制御方法 図8
  • 特開-情報処理装置、命令挿入装置及び情報処理装置の制御方法 図9
  • 特開-情報処理装置、命令挿入装置及び情報処理装置の制御方法 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024137388
(43)【公開日】2024-10-07
(54)【発明の名称】情報処理装置、命令挿入装置及び情報処理装置の制御方法
(51)【国際特許分類】
   G06F 9/30 20180101AFI20240927BHJP
   G06F 15/177 20060101ALI20240927BHJP
【FI】
G06F9/30 380
G06F9/30 350Z
G06F15/177 C
【審査請求】未請求
【請求項の数】21
【出願形態】OL
(21)【出願番号】P 2023048895
(22)【出願日】2023-03-24
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成30年度、国立研究開発法人新エネルギー・産業技術総合開発機構「高効率・高速処理を可能とするAIチップ・次世代コンピューティングの技術開発/革新的AIエッジコンピューティング技術の開発/FPGA IPと可変精度演算コアの融合による超低消費電力エッジヘビーコンピューティング向けSoCの研究開発」委託研究、産業技術力強化法第17条の適用を受ける特許出願
(71)【出願人】
【識別番号】515130201
【氏名又は名称】株式会社Preferred Networks
(71)【出願人】
【識別番号】504150450
【氏名又は名称】国立大学法人神戸大学
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】田形 健二
(72)【発明者】
【氏名】牧野 淳一郎
【テーマコード(参考)】
5B033
5B045
【Fターム(参考)】
5B033BE07
5B033FA00
5B045JJ39
(57)【要約】
【課題】情報処理装置の動作の開始時、動作の停止時、又は、動作の開始時及び動作の停止時における消費電力量の急激な変化を軽減することで回路を正常に動作させる。
【解決手段】情報処理装置は、複数の演算命令を処理する1以上の演算ブロックと、前記複数の演算命令の処理期間において、前記複数の演算命令に含まれる最初の演算命令の処理期間を含む第1期間において処理される前記演算命令の比率が、前記第1期間より後の第2期間において処理される前記演算命令の比率より低くなるように、前記演算命令より消費電力が小さい他の命令を前記複数の演算命令の間に挿入して前記1以上の演算ブロックに出力する命令挿入部と、を有する。
【選択図】図4
【特許請求の範囲】
【請求項1】
複数の演算命令を処理する1以上の演算ブロックと、
前記複数の演算命令の処理期間において、前記複数の演算命令に含まれる最初の演算命令の処理期間を含む第1期間において処理される前記演算命令の比率が、前記第1期間より後の第2期間において処理される前記演算命令の比率より低くなるように、前記演算命令より消費電力が小さい他の命令を前記複数の演算命令の間に挿入して前記1以上の演算ブロックに出力する命令挿入部と、を有する、
情報処理装置。
【請求項2】
前記命令挿入部は、前記最初の演算命令の処理以降において、前記演算命令の比率が徐々に高くなるように前記他の命令を挿入する、
請求項1に記載の情報処理装置。
【請求項3】
前記演算命令の増加率を示す傾斜情報を書き換え可能に保持する傾斜保持部を有し、
前記命令挿入部は、前記傾斜保持部に保持された前記傾斜情報に基づいて、前記演算命令の比率を徐々に高くする、
請求項2に記載の情報処理装置。
【請求項4】
前記他の命令は、前記演算命令の処理結果に影響を与えない命令である、
請求項1に情報処理装置。
【請求項5】
前記他の命令は、前記演算命令に非依存な命令である、
請求項1に情報処理装置。
【請求項6】
前記複数の演算命令は、前記1以上の演算ブロックに演算を実行させる命令である、
請求項1に情報処理装置。
【請求項7】
2以上の前記演算ブロックを有し、
SIMD(Single Instruction Multiple Data)プロセッサとして動作する、
請求項1に記載の情報処理装置。
【請求項8】
前記命令挿入部は、前記複数の演算命令に含まれる最後の演算命令の後に、前記複数の演算命令の処理結果に影響を与えない複数の他の命令を前記1以上の演算ブロックに出力する、
請求項1乃至請求項7のいずれか1項に記載の情報処理装置。
【請求項9】
前記複数の他の命令は、少なくとも第1命令と前記第1命令より消費電力が大きな第2命令とを含む、
請求項8に記載の情報処理装置。
【請求項10】
前記命令挿入部は、前記第1命令の比率が前記第2命令の比率より徐々に高くなるように、前記複数の他の命令を前記1以上の演算ブロックに出力する、
請求項9に記載の情報処理装置。
【請求項11】
前記命令挿入部は、前記複数の演算命令の処理期間において、前記複数の演算命令に含まれる最後の演算命令の処理期間を含む第3期間において処理される前記演算命令の比率が、前記第3期間より前の前記第2期間において処理される前記演算命令の比率より低くなるように、前記他の命令を前記複数の演算命令の間に挿入して前記1以上の演算ブロックに出力する、
請求項1乃至請求項7のいずれか1項に記載の情報処理装置。
【請求項12】
複数の演算命令を処理する1以上の演算ブロックと、
前記複数の演算命令の処理期間後における第1期間において処理される第2命令の比率が、前記第1期間より後の第2期間において処理される前記第2命令の比率より高くなるように、前記第2命令及び前記第2命令より消費電力が小さい第1命令を前記1以上の演算ブロックに出力する命令挿入部と、を有し、
前記第1命令及び前記第2命令は、前記複数の演算命令の処理結果に影響を与えない、
情報処理装置。
【請求項13】
前記命令挿入部は、前記第2命令の比率が徐々に低くなるように前記第1命令及び前記第2命令を前記1以上の演算ブロックに出力する、
請求項12に記載の情報処理装置。
【請求項14】
前記第1命令及び第2命令は、前記演算命令に非依存な命令である、
請求項12に情報処理装置。
【請求項15】
2以上の前記演算ブロックを有し、
SIMD(Single Instruction Multiple Data)プロセッサとして動作する、
請求項12乃至請求項14のいずれか1項に記載の情報処理装置。
【請求項16】
データ転送命令に基づいてデータ転送を処理するデータ転送部を有し、
前記データ転送部は、前記データ転送の処理期間において、最初のデータ転送を含む第1期間におけるデータ転送の頻度を、前記第1期間より後の第2期間におけるデータ転送の頻度より低くする、
情報処理装置。
【請求項17】
前記データ転送部は、前記最初のデータ転送の処理期間以降におけるデータ転送の頻度を徐々に高くする、
請求項16に記載の情報処理装置。
【請求項18】
少なくとも1つのメモリと、
少なくとも1つのプロセッサとを備え、
前記少なくとも1つのプロセッサは、
情報処理装置が処理する複数の演算命令を受け、前記複数の演算命令の処理期間において、前記複数の演算命令に含まれる最初の演算命令の処理期間を含む第1期間において処理される前記演算命令の比率が、前記第1期間より後の第2期間において処理される前記演算命令の比率より低くなるように、前記演算命令より消費電力が小さい他の命令を前記複数の演算命令の間に挿入して前記情報処理装置に処理させる演算命令列を生成する、
命令挿入装置。
【請求項19】
前記少なくとも1つのプロセッサは、前記複数の演算命令に含まれる最後の演算命令の後に、前記複数の演算命令の処理結果に影響を与えない複数の他の命令を前記情報処理装置に処理させる演算命令列を生成する、
請求項18に記載の命令挿入装置。
【請求項20】
演算命令を処理する1以上の演算ブロックを有する情報処理装置の制御方法であって、
複数の演算命令の処理期間において、前記複数の演算命令に含まれる最初の演算命令の処理期間を含む第1期間において処理される前記演算命令の比率が、前記第1期間より後の第2期間において処理される前記演算命令の比率より低くなるように、前記演算命令より消費電力が小さい他の命令を前記複数の演算命令の間に挿入して前記1以上の演算ブロックに出力する、
情報処理装置の制御方法。
【請求項21】
前記複数の演算命令に含まれる最後の演算命令の後に、前記複数の演算命令の処理結果に影響を与えない複数の他の命令を前記1以上の演算ブロックに出力する、
請求項20に記載の情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、情報処理装置、命令挿入装置及び情報処理装置の制御方法に関する。
【背景技術】
【0002】
プロセッサ等の情報処理装置は、半導体プロセスの進化に伴い、回路規模が増加し、消費電力が増加する傾向にある。今後、半導体プロセスのさらなる進化により、消費電力は増加していくと予想される。
【0003】
情報処理装置は、回路規模が大きく、同時に動作する回路が多いほど、動作の開始時又は動作の停止時に回路の消費電力量が急激に変化しやすいため、瞬間的に大きな電圧降下や上昇が発生するおそれがあり、あるいは、電源系統にノイズが発生するおそれがある。そして、電圧降下、上昇又は電源ノイズが発生した場合、回路が正常に動作しないおそれがある。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本開示では、情報処理装置の動作の開始時、動作の停止時、又は、動作の開始時及び動作の停止時における消費電力量の急激な変化を軽減することで回路を正常に動作させる。
【課題を解決するための手段】
【0005】
本発明の実施形態の情報処理装置は、複数の演算命令を処理する1以上の演算ブロックと、前記複数の演算命令の処理期間において、前記複数の演算命令に含まれる最初の演算命令の処理期間を含む第1期間において処理される前記演算命令の比率が、前記第1期間より後の第2期間において処理される前記演算命令の比率より低くなるように、前記演算命令より消費電力が小さい他の命令を前記複数の演算命令の間に挿入して前記1以上の演算ブロックに出力する命令挿入部と、を有する。
【図面の簡単な説明】
【0006】
図1】本発明の一実施形態におけるプロセッサの一例を示すブロック図である。
図2】プロセッサ及び外部メモリが搭載されるボードの一例を示すブロック図である。
図3】第1命令及び第2命令の例を示す説明図である。
図4図1のプロセッサの動作の例を示すタイミング図である。
図5】本発明の別の実施形態におけるプロセッサの一例を示すブロック図である。
図6】本発明の別の実施形態におけるプロセッサの一例を示すブロック図である。
図7図6のプロセッサのDMA転送の例を示すタイミング図である。
図8】本発明の別の実施形態における情報処理装置の一例を示すブロック図である。
図9図8のコンパイラが生成した命令コードと命令挿入部が生成した命令コードの例を示す説明図である。
図10図2及び図8に示したホストのハードウェア構成の一例を示すブロック図である。
【発明を実施するための形態】
【0007】
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。以下で説明する情報処理装置の一形態であるプロセッサは、サーバ等のコンピュータに搭載され、プログラムを実行することで、一例として、ニューラルネットワークの訓練又は推論において畳み込み演算等を実行してもよい。なお、以下で説明するプロセッサは、科学技術計算などに使用されてもよい。また、図1図5図6図8に含まれる矩形又は台形で示す複数のブロックのうち、2以上のブロックは、1つにマージされてもよい。すなわち、1つのブロックの機能が他のブロックで実現されてもよい。複数のブロックの各々は、例えば、1又は複数の回路により実現される。
【0008】
図1は、本発明の一実施形態におけるプロセッサの一例を示すブロック図である。図1に示すプロセッサ100は、制御部110及び複数の演算ブロック120を有する。なお、プロセッサ100は、1個の演算ブロック120を有してもよい。例えば、プロセッサ100は、バスBUSを介して外部メモリ200に接続される。プロセッサ100は、情報処理装置の一例である。なお、図1に示すプロセッサ100は、本発明の実施形態が適用される基本的な構成を示している。プロセッサ100は、後述する図2に示す構成を有してもよい。
【0009】
制御部110は、命令フェッチ部111、命令バッファ112、命令デコーダ113、第1命令保持部114、第2命令保持部115、同期制御部116、命令発行判定部117、起動/停止制御部118及びセレクタ119を有する。起動/停止制御部118及びセレクタ119は、演算命令の処理が開始されるときに第1命令を挿入し、演算命令の処理が停止されるときに、第1命令及び第2命令を挿入する命令挿入部の一例である。命令挿入部は、命令挿入回路として実現されてもよい。
【0010】
なお、制御部110は、制御回路110として実現されてもよい。命令フェッチ部111、命令バッファ112、命令デコーダ113、第1命令保持部114、第2命令保持部115、同期制御部116、命令発行判定部117、起動/停止制御部118及びセレクタ119は、それぞれ命令フェッチ回路111、命令バッファ回路112、命令デコーダ回路113、第1命令保持回路114、第2命令保持回路115、同期制御回路116、命令発行判定回路117、起動/停止制御回路118及びセレクタ回路119として実現されてもよい。
【0011】
演算ブロック120は、1個又は複数のコア121と内部メモリ124とを有する。コア121は、複数の演算器122とレジスタファイル123とを有する。例えば、演算器122は、加算器、乗算器、積和演算器又はロードストアユニット等のいずれかでもよく、複数種の演算器でもよい。内部メモリ124は、例えば、アクセスレイテンシが固定のSRAM(Static Random Access Memory)等である。また、例えば、演算ブロック120は、複数のステージを含むパイプラインにより構成され、複数のステージは、互いに異なる命令を並列に実行可能である。
【0012】
命令フェッチ部111は、バスBUSに接続された外部メモリや図示しないメモリ等に保持されている命令をフェッチし、フェッチした命令を命令バッファ112に出力する。命令バッファ112は、命令フェッチ部111から供給される命令を保持するキューを有し、キューに保持した順に命令を命令デコーダ113に出力する。また、命令バッファ112は、命令発行判定部117にキューの先頭にある命令(先頭命令)を出力する。
【0013】
命令デコーダ113は、命令バッファ112から供給される命令(演算命令又はデータ転送命令等)をデコードすることで、演算ブロック120を制御する命令の制御情報を生成し、生成した制御情報をセレクタ119に出力する。命令の制御情報は、命令情報の一例である。命令が演算命令の場合、制御情報は、命令を実行する演算器(加算器又は乗算器等)の識別情報と、レジスタファイル123において演算に使用するレジスタの番号等とを含む。命令がデータ転送命令(ロード命令又はストア命令等)の場合、制御情報は、オペランドデータを保持するメモリ(内部メモリ124、外部メモリ200等)のアドレスと、レジスタファイル123においてオペランドデータを保持するレジスタの番号等とを含む。命令デコーダ113がデコードする命令は、1以上の演算ブロック120により演算を実際に実行させて演算の実行結果を得るための命令であり、演算で使用するデータ又は演算結果を1以上の演算ブロックのレジスタファイル123に対して転送する命令である。
【0014】
なお、命令が間接アドレスを使用するデータ転送命令の場合、制御情報は、メモリのアドレスの代わりに、メモリのアドレスを格納するレジスタの番号を含んでもよい。さらに、データ転送命令が内部メモリ124と外部メモリ200との間でのデータの転送を示す場合、制御情報は、転送元アドレスと転送先アドレスと転送するデータ数とを含んでもよい。
【0015】
以下では、セレクタ119を介して演算ブロック120に出力される命令の制御情報は、単に命令とも称される。命令デコーダ113は、後述する第1命令及び第2命令をデコードする機能を持たない。すなわち、第1命令及び第2命令は、プロセッサ100の命令セットアーキテクチャに含まれない。
【0016】
第1命令保持部114は、例えば、第1命令をデコード済みの制御情報として保持するレジスタ等である。例えば、演算ブロック120が第1命令を実行するときの消費電力が、命令デコーダ113に供給されるNOP(No OPeration)命令以外の演算命令のうち、消費電力が最も小さい演算命令(例えば、加算命令)の消費電力より小さくなるように第1命令を設定してもよい。例えば、命令デコーダ113に供給されるNOP命令以外の演算命令は、演算ブロック120のコア121を動作させる命令である。
【0017】
第1命令の制御情報は、第1命令情報としてプロセッサ100の外部から供給され、書き換え可能に第1命令保持部114に保持されてもよい。また、複数種の第1命令の制御情報が第1命令保持部114に保持され、複数種の第1命令の制御情報のいずれかが第1命令情報により選択されてセレクタ119に出力されてもよい。第1命令は、他の命令の一例であり、第1命令の制御情報は、他の命令の命令情報の一例である。第1命令の例は、図3で説明される。以下では、セレクタ119に供給される第1命令の制御情報と、第1命令の制御情報に応じてセレクタ119から演算ブロック120に出力される演算制御情報EXは、第1命令とも称される。命令デコーダ113から出力される命令の制御情報に応じて、セレクタ119から演算ブロック120に出力される演算制御情報EXは、演算命令とも称される。
【0018】
第2命令保持部115は、例えば、第2命令をデコード済みの制御情報として保持するレジスタ等である。例えば、演算ブロック120が第2命令を実行するときの消費電力は、演算ブロック120が第1命令を実行するときの消費電力よりも大きい。例えば、第1命令の消費電力は、第2命令の消費電力より小さく(第1命令<第2命令)、演算命令の消費電力より小さい(第1命令<演算命令)。以下では、演算ブロック120が第1命令を実行するときの消費電力は、第1命令の消費電力とも称され、演算ブロック120が第2命令を実行するときの消費電力は、第2命令の消費電力とも称される。
【0019】
第2命令の制御情報は、第2命令情報としてプロセッサ100の外部から供給され、書き換え可能に第2命令保持部115に保持されてもよい。また、複数種の第2命令の制御情報が第2命令保持部115に保持され、複数種の第2命令の制御情報のいずれかが第2命令情報により選択されてセレクタ119に出力されてもよい。以下では、セレクタ119に供給される第2命令の制御情報と、第2命令の制御情報に応じてセレクタ119から演算ブロック120に出力される演算制御情報EXは、第2命令とも称される。第2命令は、他の命令の一例であり、第2命令の制御情報は、他の命令の命令情報の一例である。第2命令の例は、図3で説明される。
【0020】
同期制御部116は、ロード命令等のデータ転送命令に対応してセレクタ119から受ける同期情報SYNCに基づいて、データ転送命令によりレジスタファイル123に転送されたデータを使用する演算命令が演算器122により実行可能であることを判定した場合、実行可能情報を命令発行判定部117に出力する。例えば、データ転送命令と、データ転送命令によりレジスタファイル123に転送されたデータを使用して演算を実行する演算命令とは、共通の識別情報を含んでもよい。
【0021】
同期制御部116は、同期情報SYNCを受けるまで、データ転送命令に対応する演算命令の実行可能情報の出力を抑止する。同期制御部116により、データ転送命令によるレジスタファイル123へのデータの転送と、転送されたデータを使用して演算を実行する演算命令とを待ち合わせることができる。すなわち、演算処理に使用するデータが内部メモリ124又は外部メモリ200からレジスタファイル123に転送されるのを待ってから演算処理を開始することができる。
【0022】
同期制御部116は、演算命令に対応してセレクタ119又は演算ブロック120から受ける同期情報SYNCに基づいて、レジスタファイル123に格納された演算命令の実行結果データを内部メモリ124又は外部メモリ200に転送可能であることを判定した場合、転送可能情報を命令発行判定部117に出力する。同期制御部116は、同期情報SYNCを受けるまで、演算命令に対応するデータ転送命令の実行可能情報の出力を抑止する。同期制御部116により、演算命令の実行結果データのレジスタファイル123への格納と、データ転送命令によるレジスタファイル123からのデータの読み出しとを待ち合わせることができる。すなわち、演算処理の完了を待ってから内部メモリ124又は外部メモリ200へのデータ転送を開始することができる。
【0023】
なお、先行の演算命令と後続の演算命令との間にデータの依存性がある場合、セレクタ119は、先行の演算命令の演算結果がレジスタファイル123に格納されるタイミング(RAW(Read After Write)又はWAW(Write After Write))又は先行の演算命令がレジスタファイル123からデータを読み出すタイミング(WAR(Write After Read))に応じて同期情報SYNCを出力してもよい。この場合、先行の演算命令と後続の演算命令とは、共通の識別情報を含んでもよい。そして、同期制御部116は、同期情報SYNCに基づいて、後続の演算命令が実行可能であることを判定した場合、実行可能情報を命令発行判定部117に出力する。
【0024】
命令発行判定部117は、命令バッファ112のキューの先頭にある演算命令(先頭命令)を受け、先頭命令に対応する実行可能情報を同期制御部116から受けた場合、先頭命令が演算器122により実行可能であると判定する。命令発行判定部117は、先頭命令が実行可能な場合、起動/停止制御部118に先頭命令の実行を許可する起動情報を出力する。
【0025】
命令発行判定部117は、先頭命令に対応する実行可能情報を同期制御部116から受けるまで、起動情報の出力を抑止し、先頭命令が演算ブロック120に供給されることを待たせる。命令発行判定部117は、命令バッファ112のキューが空になったことを示す空情報を命令バッファ112から受けた場合、演算器122の動作を停止する停止情報を起動/停止制御部118に出力する。
【0026】
起動/停止制御部118は、命令発行判定部117からの起動情報に基づいて演算器122の起動を制御し、命令発行判定部117からの停止情報に基づいて演算器122の停止を制御する。起動/停止制御部118は、起動情報を命令発行判定部117から受けた場合、命令バッファ112から順次供給される演算命令の間に第1命令保持部114が保持する第1命令を挿入するように(混ぜ込むように)セレクタ119を制御する。
【0027】
このとき、起動/停止制御部118は、第1傾斜情報に基づいて演算命令の比率が第1命令の比率に対して徐々に増加するようにセレクタ119を制御する。ここで、比率は、区間に占める割合でもよく、期間に占める割合でもよい。例えば、第1傾斜情報は、演算命令の比率が100%になるまでのサイクル数でもよく、演算命令の比率の増加率でもよい。第1傾斜情報は、プロセッサ100の設計時に固定の情報に設定されてもよい。第1傾斜情報は、演算命令の増加率を示す傾斜情報の一例である。
【0028】
第1傾斜情報は、例えば、プロセッサ100の起動時等に書き換え可能なI/Oレジスタ又はステータスレジスタ等に保持されてもよい。この場合、第1傾斜情報をソフトウェアにより変更することができ、プロセッサ100の動作環境(温度、電圧)等に応じて、演算器122の起動制御を適切に実施することができる。なお、第1傾斜情報は、動作環境、ユーザの設定等に基づいて変更されてもよい。
【0029】
起動/停止制御部118は、停止情報を命令発行判定部117から受けた場合、第1命令保持部114が保持する第1命令の間に第2命令保持部115が保持する第2命令を挿入するように(混ぜ込むように)セレクタ119を制御する。
【0030】
このとき、起動/停止制御部118は、第2傾斜情報に基づいて第1命令の比率が第2命令の比率に対して徐々に増加するようにセレクタ119を制御する。例えば、第2傾斜情報は、第1命令の比率が100%になるまでのサイクル数でもよく、第1命令の比率の増加率でもよい。第2傾斜情報は、プロセッサ100の設計時に固定の情報に設定されてもよい。第2傾斜情報は、第1命令の増加率を示す傾斜情報の一例である。
【0031】
第2傾斜情報は、例えば、プロセッサ100の起動時等に書き換え可能なレジスタに保持されてもよい。この場合、第2傾斜情報をソフトウェアにより変更することができ、プロセッサ100の動作環境(温度、電圧)等に応じて、演算器122の停止制御を適切に実施することができる。なお、第2傾斜情報は、動作環境、ユーザの設定等に基づいて変更されてもよい。
【0032】
第1傾斜情報及び第2傾斜情報を保持するI/Oレジスタ等は、傾斜保持部の一例である。傾斜保持部は、傾斜保持回路として実現されてもよい。なお、第1傾斜情報及び第2傾斜情報が互いに同じサイクル数等に設定される場合、第1傾斜情報及び第2傾斜情報の代わりに1つの傾斜情報が起動/停止制御部118に供給されてもよい。
【0033】
セレクタ119は、起動/停止制御部118からの選択信号に基づいて、命令デコーダ113からの制御情報、第1命令保持部114からの第1命令の制御情報又は第2命令保持部115からの第2命令の制御情報のいずれかを選択する。
【0034】
セレクタ119は、レジスタファイル123にデータを格納するデータ転送命令を命令デコーダ113から受けた場合、受けたデータ転送命令を転送制御情報TRとして演算ブロック120に出力する。また、セレクタ119は、データ転送命令の対象データがレジスタファイル123に格納されるまでに要するサイクル数を算出する。そして、セレクタ119は、算出したサイクル数をデータ転送命令の識別情報とともに同期情報SYNCとして同期制御部116に出力する。
【0035】
セレクタ119は、命令バッファ112から出力される演算命令に基づいて演算器122が起動される場合、起動/停止制御部118からの指示に基づいて、命令デコーダ113からの演算命令及び第1命令保持部114からの第1命令を所定の比率で選択する。セレクタ119は、選択した命令を演算制御情報EXとして演算ブロック120に順次出力する。
【0036】
セレクタ119は、命令バッファ112に保持される演算命令がなくなり、演算器122の動作が停止される場合、起動/停止制御部118からの指示に基づいて、第1命令保持部114からの第1命令及び第2命令保持部115からの第2命令を所定の比率で選択する。セレクタ119は、選択した命令を演算制御情報EXとして演算ブロック120に順次出力する。
【0037】
演算ブロック120は、セレクタ119から受けるデータ転送命令に応じて、レジスタファイル123と内部メモリ124との間のデータ転送、又は、内部メモリ124と外部メモリ200との間のデータ転送を実施する。なお、プロセッサ100又は外部メモリ200は、バスBUSに接続される図示しないDMAC(Direct Memory Access Controller)を有してもよい。この場合、内部メモリ124と外部メモリ200との間のデータ転送は、DMACにより実施されてもよい。例えば、プロセッサ100BがDMAC160を有する例は、図6に示される。また、レジスタファイル123と内部メモリ124との間のデータ転送を実施するデータ転送命令と、内部メモリ124と外部メモリ200との間のデータ転送を実施するデータ転送命令とが、命令セットアーキテクチャに含まれてもよい。
【0038】
演算ブロック120は、セレクタ119から受ける演算命令に応じて、演算に使用するデータをレジスタファイル123のレジスタのいずれかから読み出し、演算対象の演算器122に演算を実施させる。そして、演算ブロック120は、演算結果をレジスタファイル123のレジスタのいずれかに書き込む。
【0039】
例えば、演算ブロック120は、セレクタ119から受ける第1命令又は第2命令に応じて、演算に使用するデータをレジスタファイル123のレジスタのいずれかから読み出し、演算対象の演算器122に演算を実施させる。但し、演算ブロック120は、第1命令又は第2命令による演算結果をレジスタに格納しない。すなわち、第1命令及び第2命令は、命令デコーダ113がデコードする演算命令の演算結果に影響を与えずに電力を消費するダミーの演算命令である。また、第1命令及び第2命令は、命令デコーダ113がデコードする演算命令の内容(オペランド等)に非依存に決定されるダミーの演算命令でもよい。これらのダミーの演算命令は、他の命令の一例である。
【0040】
なお、この実施形態では、例えば、1つの演算命令に応じて複数の演算ブロック120の複数の演算器122が並列に動作して演算命令を並列に実行してもよい。すなわち、プロセッサ100は、SIMD(Single Instruction Multiple Data)プロセッサとして動作してもよい。
【0041】
図2は、プロセッサ100及び外部メモリ200が搭載されるボードの一例を示すブロック図である。図2に示すボード300には、図1のプロセッサ100と外部メモリ200とが搭載される。この場合、ボード300が1つの情報処理装置として動作する。
【0042】
外部メモリ200は、例えば、ホスト400に接続される。なお、複数のボード300がホスト400に接続され、複数のボード300に搭載される多数の演算ブロック120が1つのデータ転送命令及び1つの演算命令を並列に実施してもよい。この場合、複数のボード300が1つの情報処理装置として動作する。
【0043】
ホスト400は、外部メモリ200に命令列と命令の実行に使用するデータとを格納し、各演算ブロック120に演算を実行させ、外部メモリ200から各演算ブロック120の演算結果を取得する。また、ホスト400は、プロセッサ100の起動時又はプロセッサ100の動作後の動作モード等の変更時に、図1に示した第1傾斜情報、第2傾斜情報、第1命令情報及び第2命令情報の1つ又は複数を各演算ブロック120の制御部110に設定可能である。
【0044】
第1傾斜情報、第2傾斜情報、第1命令情報及び第2命令情報は、例えば、I/Oレジスタの設定コマンドを使用してI/Oレジスタに設定され、制御部110で使用されてもよい。第1傾斜情報、第2傾斜情報、第1命令情報及び第2命令情報の各々は、全ての制御部110に共通に設定されてもよく、所定数の制御部110のグループ毎に設定されてもよい。
【0045】
プロセッサ100は、複数の演算ブロック120と第1メモリ131とをそれぞれ有する複数の第1ブロック130を有する。また、プロセッサ100は、複数の第1ブロック130と第2メモリ141とをそれぞれ有する複数の第2ブロック140を有する。さらに、プロセッサ100は、複数の第2ブロック140の第2メモリ141と外部メモリ200との間に配置された第3メモリ151を有する。そして、制御部110は、複数の第1ブロック130に共通に設けられる。
【0046】
図2に示すように、プロセッサ100は、外部メモリ200から演算ブロック120の内部メモリ124(図1)との間に、階層化された第3メモリ151、第2メモリ141及び第1メモリ131を有する。そして、演算命令は、外部メモリ200から第3メモリ151、第2メモリ141及び第1メモリ131を介して複数の演算ブロック120の内部メモリ124に並列に供給され、各演算器122により実行される。
【0047】
データ転送命令は、外部メモリ200から第3メモリ151、第2メモリ141及び第1メモリ131を介して複数の演算ブロック120に並列に供給される。そして、各演算ブロック120により、レジスタファイル123と内部メモリ124との間のデータ転送等が実施される。
【0048】
図3は、第1命令及び第2命令の例を示す説明図である。以下では、レジスタファイル123のレジスタR0、R1、R2が使用される例が示される。レジスタR0、R1、R2に保持されるデータは、データR0、R1、R2とも称される。
【0049】
例えば、命令フェッチ部111によりフェッチされる通常の加算命令ADDは、レジスタR1、R2の読み出しイネーブル(Read Enable=1)が設定され、レジスタR1、R2に保持された演算対象のデータR1、R2が演算器122に読み出され、演算器122は、読み出したデータR1、R2を加算する。データR1、R2の加算後、レジスタR0の書き込みイネーブル(Write Enable=1)が設定され、加算結果がレジスタR0に格納される。
【0050】
第1命令は、レジスタR1、R2の読み出しディセーブル(Read Enable=0)が設定され、レジスタR0の書き込みディセーブル(Write Enable=0)が設定されることを除き、加算命令ADDと同様である。第1命令(加算命令ADD)は、レジスタR1、R2からのデータの読み出しがなく、レジスタR0へのデータの書き込みがないため、通常の加算命令ADDよりも消費電力が小さい。第1命令(NOP)が通常の加算命令ADDよりも消費電力が小さいのは明らかである。なお、第1命令は、NOP命令でもよく、コア121を実質的に動作させない命令でもよい。例えば、第1命令として、レジスタファイル123と内部メモリ124との間でデータを転送するデータ転送命令が使用されてもよい。この場合、レジスタファイル123又は内部メモリ124からのデータの読み出し時に読み出しディセーブルが設定され、内部メモリ124又はレジスタファイル123へのデータの書き込み時に書き込みディセーブルが設定される。また、第1命令は、同一の命令に限定されず、複数種の命令が使用されてもよい。
【0051】
第2命令は、レジスタR0の書き込みディセーブル(Write Enable=0)が設定されることを除き、加算命令ADDと同様である。第2命令は、レジスタR1、R2からのデータの読み出しがあるため、第1命令より消費電力が相対的に大きい。なお、第2命令は、加算命令だけでなく、乗算命令、シフト演算命令、データ転送命令などの命令が使用されてもよい。また、第2命令として、レジスタファイル123と内部メモリ124との間でデータを転送するデータ転送命令が使用されてもよい。この場合、レジスタファイル123又は内部メモリ124からのデータの読み出し時に読み出しイネーブルが設定され、内部メモリ124又はレジスタファイル123へのデータの書き込み時に書き込みディセーブルが設定される。また、第2命令は、例えば、加算命令、乗算命令、加算命令を順次実行するような複数種の命令が組み合わされて使用されてもよい。
【0052】
図4は、図1のプロセッサ100の動作の例を示すタイミング図である。すなわち、図4は、演算処理装置の一例であるプロセッサ100の制御方法の一例を示す。図4では、演算命令の供給開始時に第1命令を挿入する例と、演算命令の供給停止時に第1命令及び第2命令を挿入する例とが示される。図4に示す演算命令列への命令の挿入は、演算命令の供給開始時、演算命令の供給停止時、又は、演算命令の供給開始時及び演算命令の供給停止時に行われる。図4における第1命令又は第2命令を挿入する場合の動作例の命令列により示される期間(区間)は、複数の演算命令の処理期間(処理区間)を示す。すなわち、処理期間は、時間的概念に限らず、所定数の命令が処理される処理区間の概念を含む。比較例として、演算命令の供給開始時に第1命令を挿入しない例と、演算命令の供給停止時に第1命令及び第2命令を挿入しない例とが示される。
【0053】
以下では、命令デコーダ113により順次デコードされる複数の演算命令(NOP命令を含まない)は、通常の命令と称される。通常の命令は、加算命令、乗算命令、除算命令、積和演算命令、行列演算命令、データ転送命令等である。図4に示す例では、第1命令としてNOP命令が使用されるが、第1命令は、NOP命令に限定されず、NOP命令と同等の消費電力を有する命令でもよい。例えば、第2命令が通常の命令より消費電力が小さい場合、第1命令の代わりに第2命令が挿入されてもよく、第1命令及び第2命令が挿入されてもよい。説明の簡単化のため、通常の命令、第1命令及び第2命令は1サイクルで実行されるとする。
【0054】
まず、命令デコーダ113からセレクタ119に通常の命令が供給され、演算処理が開始される場合、起動/停止制御部118は、第1傾斜情報に基づいて、通常の命令の間に第1命令を挿入する。第1傾斜情報は、第1命令に対する通常の命令の挿入頻度を徐々に高くする情報を含む。第1命令に対する通常の命令(演算命令)の挿入頻度が高いほど、通常の命令の比率(処理比率、実行比率)は高くなる。これにより、演算処理の開始時に消費電力が徐々に増加するため、電源電圧の電圧降下を軽減することができ、電源ノイズを軽減することができる。この結果、プロセッサ100の誤動作を抑制して、動作マージンを向上することができる。なお、演算処理の開始時に消費電力が互いに異なる複数種の第1命令が挿入されてもよい。互いに異なる複数種の第1命令として、クロックを停止させて演算ブロック120に処理をさせないNOP命令と、レジスタファイル123からのデータの読み出しを行い、演算ブロック120のその他の回路を動作させないNOP命令等がある。演算命令の供給が開始される動作において最初に供給される通常の命令は、最初の演算命令の一例である。演算命令の供給が開始される動作において、最初の通常の命令の処理期間を含む期間は、第1期間の一例であり、第1期間より後の期間は、第2期間の一例である。典型的には、消費電力が徐々に増加する期間は、第1期間の一例であり、第1期間の後の第1命令を挟むことなく通常の命令が連続して供給される期間は、第2期間の一例である。なお、第1期間は、通常の命令の間に第1命令が挿入されるため、第1期間において処理される通常の命令の比率は、第2期間において処理される通常の命令の比率より低くなる。第1の処理期間及び第2の処理期間等の所定数の命令が処理又は供給される期間は、予め所定長の期間または所定長の区間に区切って定義されてもよい。
【0055】
また、命令デコーダ113からセレクタ119への通常の命令の供給が停止され、演算処理が停止する場合、起動/停止制御部118は、第2傾斜情報に基づいて、第1命令の間に第2命令を挿入する。第2傾斜情報は、第2命令に対する第1命令の挿入頻度を徐々に高くする情報を含む。第2命令に対する第1命令の挿入頻度が高いほど、第2命令の比率(処理比率、実行比率)は、演算処理を停止する前に処理される通常の命令の比率より小さくなる。これにより、演算処理の停止時に消費電力が徐々に減少するため、電源ノイズを軽減することができる。この結果、プロセッサ100の誤動作を抑制して、動作マージンを向上することができる。なお、演算処理の停止時に、消費電力が互いに異なる複数種の第2命令が挿入されてもよい。演算処理が停止するときに最後に供給される演算命令は、最後の演算命令の一例である。演算命令の供給が停止される動作において、演算処理の停止直後の期間を含む期間は、第1期間の一例であり、第1期間より後の期間は、第2期間の一例である。典型的には、消費電力が徐々に減少する期間は、第1期間の一例であり、第1期間の後の第2命令を挟むことなく第1命令が連続して供給される期間は、第2期間の一例である。
【0056】
なお、図4では、演算処理の開始時に第1命令が挿入されるが、第1命令に加えて、第1命令以外の命令が挿入されてもよい。また、演算処理の停止時に第1命令及び第2命令が挿入されるが、第1命令及び第2命令に加えて、第1命令及び第2命令以外の命令が挿入されてもよい。
【0057】
また、演算命令の供給が停止される動作において、例えば、セレクタ119は、消費電力が徐々に減少する期間に、通常の命令の供給頻度を徐々に下げながら供給してもよい。例えば、セレクタ119は、第2命令の代わりに通常の命令を供給してもよい。この場合、消費電力が徐々に減少する期間において、通常の命令に対する第1命令の比率が徐々に高められる。演算処理の停止タイミングは、消費電力が徐々に減少する期間の最後になる。通常の命令の供給頻度が徐々に下げられる期間のうち、通常の命令の供給頻度が最初に下がる期間を含み、かつ、最後の通常の命令の処理期間を含む期間は、第3期間の一例であり、第3期間より前の期間は、第2期間の一例である。
【0058】
演算処理の開始時における消費電力量の急激な変化を軽減することで、大きな電圧降下、上昇又は電源ノイズを軽減し、回路を正常に動作させるものであれば、演算処理の開始時に挿入される複数の命令のうちの少なくとも一部の命令の消費電力が、命令デコーダ113から供給される複数の演算命令のうち消費電力が最も小さい演算命令の消費電力より大きくなるケースがあってもよい。
【0059】
同様に、演算処理の停止時における消費電力量の急激な変化を軽減することで、大きな電圧降下、上昇又は電源ノイズを軽減し、回路を正常に動作させるものであれば、演算処理の停止時に挿入される複数の命令のうちの少なくとも一部の命令の消費電力が、命令デコーダ113から供給される複数の演算命令のうち消費電力が最も小さい演算命令の消費電力より大きくなるケースがあってもよい。
【0060】
以上により、プロセッサ100の動作の開始時、動作の停止時、又は、動作の開始時及び動作の停止時における消費電力量の急激な変化を軽減することで回路を正常に動作させることができる。また、プロセッサ100の動作の開始時、動作の停止時、又は、動作の開始時及び動作の停止時における消費電力量の急激な変化を軽減することで、大きな電圧降下、上昇又は電源ノイズを軽減し、回路を正常に動作させることができる。
【0061】
一方、演算命令の供給開始時に第1命令を挿入しない場合、演算処理の開始とともに通常の命令が連続して実行されるため、消費電力が急激に増加する。したがって、演算処理の開始時に、電源電圧の大きな電圧降下が発生するおそれがあり、大きな電源ノイズが発生するおそれがある。また、演算命令の供給停止時に第2命令を挿入しない場合、演算処理の停止とともにNOP命令が連続して実行されるため、消費電力が急激に減少する。したがって、演算処理の停止時に、大きな電源ノイズが発生するおそれがある。
【0062】
以上、図1から図4に示す実施形態では、演算命令の供給開始時に、第1命令に対する通常の命令の挿入頻度を徐々に高くすることで、電源電圧の電圧降下を軽減することができ、電源ノイズを軽減することができる。また、演算命令の供給停止時に、第2命令に対する第1命令の挿入頻度を徐々に高くすることで、電源ノイズを軽減することができる。この結果、プロセッサ100の誤動作を抑制して、動作マージンを向上することができる。すなわち、情報処理装置の一例であるプロセッサ100の動作の開始時、動作の停止時、又は、動作の開始時及び動作の停止時における消費電力量の急激な変化を軽減することで回路を正常に動作させることができる。また、プロセッサ100の動作の開始時、動作の停止時、又は、動作の開始時及び動作の停止時における消費電力量の急激な変化を軽減することで、大きな電圧降下、上昇又は電源ノイズを軽減し、回路を正常に動作させることができる。
【0063】
例えば、1つの演算命令を複数の演算器122で並列に実行するSIMDプロセッサ等において、顕著な電源ノイズの低減効果を得ることができ、動作マージンを向上することができる。動作マージンが向上するため、例えば、プロセッサ100の動作周波数を高くすることが可能になる。換言すれば、電源ノイズを軽減するためにプロセッサ100の動作周波数を下げることで、プロセッサ100の処理性能が低下することを抑制することができる。
【0064】
第1命令保持部114に第1命令の制御情報を保持し、第2命令保持部115に第2命令の制御情報を保持し、セレクタ119により演算命令の制御情報、第1命令の制御情報又は第2命令の制御情報を選択して演算ブロック120に出力する。これにより、命令セットアーキテクチャを変更することなく、演算命令の間に第1命令又は第2命令を挿入することができる。
【0065】
第1命令保持部114に第1命令の制御情報を書き換え可能に保持し、第2命令保持部115に第2命令の制御情報を書き換え可能に保持することで、第1命令の制御情報及び第2命令の制御情報をソフトウェアで変更することができる。第1傾斜情報及び第2傾斜情報をI/Oレジスタ等に書き換え可能に保持することで、第1傾斜情報及び第2傾斜情報をソフトウェアにより変更することができる。これにより、プロセッサ100の動作環境(温度、電圧)等に応じて、演算器122の起動制御及び停止制御を適切に実施することができる。
【0066】
図5は、本発明の別の実施形態におけるプロセッサの一例を示すブロック図である。図1と同様の要素については、同じ符号を付し、詳細な説明は省略する。図5に示すプロセッサ100Aの制御部110は、図1の命令デコーダ113の代わりに命令デコーダ113Aを有する。プロセッサ100Aのその他の構成は、図1のプロセッサ100と同様である。また、プロセッサ100Aが搭載されるボード300は、図2と同様である。なお、プロセッサ100Aは、複数の演算ブロック120を有するが、1個の演算ブロック120を有してもよい。命令デコーダ113Aは、命令デコーダ回路113Aとして実現されてもよい。
【0067】
プロセッサ100Aの命令セットアーキテクチャには、第1命令及び第2命令が含まれる。このため、命令デコーダ113Aは、第1命令及び第2命令の命令コードに基づいて、演算ブロック120を制御する制御情報をそれぞれ生成する。
【0068】
以上、図5に示す実施形態においても、上述した実施形態と同様に、演算命令の供給開始時に、第1命令に対する通常の命令の挿入頻度を徐々に高くすることで、電源電圧の電圧降下を軽減することができ、電源ノイズを軽減することができる。また、演算命令の供給停止時に、第2命令に対する第1命令の挿入頻度を徐々に高くすることで、電源ノイズを軽減することができる。この結果、プロセッサ100Aの誤動作を抑制して、動作マージンを向上することができる。また、第1傾斜情報及び第2傾斜情報をI/Oレジスタ等に書き換え可能に保持することで、第1傾斜情報及び第2傾斜情報をソフトウェアにより変更することができる。
【0069】
さらに、この実施形態では、第1命令保持部114に第1命令を保持し、第2命令保持部115に第2命令を保持し、命令デコーダ113Aは、演算命令、第1命令及び第2命令をデコードする。したがって、第1命令及び第2命令を命令セットアーキテクチャに含めることができる。例えば、起動/停止制御部118による第1命令及び第2命令の挿入を停止するテストモードをプロセッサ100Aに搭載し、命令フェッチ部111がフェッチする命令列に第1命令及び第2命令を含めることで、演算処理の開始時及び停止時の電源ノイズを評価することができる。
【0070】
また、第1命令保持部114に第1命令を書き換え可能に保持し、第2命令保持部115に第2命令を書き換え可能に保持することで、第1命令及び第2命令をソフトウェアで変更することができる。これにより、プロセッサ100Aの動作環境(温度、電圧)等に応じて、演算器122の起動制御及び停止制御を適切に実施することができる。
【0071】
図6は、本発明の別の実施形態におけるプロセッサの一例を示すブロック図である。図1と同様の要素については、同じ符号を付し、詳細な説明は省略する。図6に示すプロセッサ100Bは、バスBUSと外部メモリ200との間にDMAC160を有する。なお、プロセッサ100Bは、複数の演算ブロック120を有するが、1個の演算ブロック120を有してもよい。レジスタファイル123と外部メモリ200との間のデータ転送は、DMAC160により実施される。
【0072】
このため、命令フェッチ部111がフェッチするデータ転送命令は、内部メモリ124とレジスタファイル123との間でデータを転送するロード命令/ストア命令と、外部メモリ200とレジスタファイル123との間でデータを転送するDMA命令とを有する。DMAC160は、データ転送命令に基づいてデータ転送を処理するデータ転送部の一例である。データ転送部は、データ転送回路として実現されてもよい。
【0073】
制御部110は、図1の同期制御部116、命令デコーダ113及びセレクタ119の代わりに同期制御部116B、命令デコーダ113B及びセレクタ119Bを有する。プロセッサ100Bのその他の構成は、図1のプロセッサ100の構成と同様である。また、プロセッサ100Bが搭載されるボード300は、図2と同様である。同期制御部116B、命令デコーダ113B及びセレクタ119Bは、同期制御回路116B、命令デコーダ回路113B及びセレクタ回路119Bとして実現されてもよい。
【0074】
命令デコーダ113Bは、図1の命令デコーダ113の機能に加えて、DMA命令をデコードする機能を有する。セレクタ119Bは、図1のセレクタ119の機能に加えて、命令デコーダ113Bから受けるDMA命令の制御情報DMACNTをDMAC160に出力する機能を有する。
【0075】
同期制御部116Bは、図1の同期制御部116の機能に加えて、DMAC160からの転送終了信号TENDに基づいて、DMA命令の実行によりレジスタファイル123に転送されたデータを使用して演算命令が実行可能であると判定し、実行可能情報を命令発行判定部117に出力する機能を有する。例えば、DMA命令と、DMA命令によりレジスタファイル123に転送されたデータを使用して演算を実行する演算命令とは、共通の識別情報を含んでもよい。
【0076】
DMAC160は、第3傾斜情報に基づいて、DMA転送の開始時にデータ転送量を徐々に増加する機能と、第4傾斜情報に基づいて、DMA転送の停止時にデータ転送量を徐々に減少する機能とを有する。第3傾斜情報は、データ転送量が100%になるまでのサイクル数でもよく、データ転送量の増加率でもよい。第4傾斜情報は、データ転送量が0%になるまでのサイクル数でもよく、データ転送量の減少率でもよい。
【0077】
第3傾斜情報及び第4傾斜情報は、プロセッサ100Bの設計時に固定の情報に設定されてもよい。また、第3傾斜情報及び第4傾斜情報は、例えば、プロセッサ100Bの起動時等に設定可能なレジスタに保持されてもよい。第3傾斜情報及び第4傾斜情報は、例えば、プロセッサ100の起動時等に書き換え可能なI/Oレジスタ又はステータスレジスタ等に保持されてもよい。この場合、第3傾斜情報及び第4傾斜情報をソフトウェアにより変更することができる。なお、第3傾斜情報、第4傾斜情報、又は、第3傾斜情報及び第4傾斜情報は、プロセッサ100の動作環境(温度、電圧)、ユーザの設定等に基づいて変更されてもよい。
【0078】
なお、第3傾斜情報及び第4傾斜情報が互いに同じサイクル数等に設定される場合、第3傾斜情報及び第4傾斜情報の代わりに1つの傾斜情報がDMAC160に供給されてもよい。また、プロセッサ100Bは、演算命令の供給開始時に第1命令を挿入し、演算命令の供給停止時に第1命令及び第2命令を挿入する機能を持たなくてもよい。この場合、起動/停止制御部118は、第1命令及び第2命令の挿入をセレクタ119Bに指示する機能を持たない。
【0079】
また、プロセッサ100Bは、演算命令の供給開始時に第1命令を挿入する機能と、演算命令の供給停止時に第1命令及び第2命令を挿入する機能とを持たなくてもよい。この場合、制御部110は、後述する図8に示すように、第1命令保持部114、第2命令保持部115及び起動/停止制御部118を持たなくてもよい。
【0080】
図7は、図6のプロセッサ100BのDMA転送の例を示すタイミング図である。図7では、DMA転送の開始時にデータ転送量を徐々に増加する例と、DMA転送の停止時にデータ転送量を徐々に減少する例とが示される。また、比較例として、DMA転送の開始時及びDMA転送の停止時にデータ転送量を変化させない例が示される。
【0081】
DMAC160は、DMA転送の開始時に、データ転送を実施するサイクルとデータ転送を実施しないサイクルとを交互に繰り返し、データ転送を実施するサイクルの比率を徐々に高くする。その後、DMAC160は、データ転送を連続して実施する。これにより、DMA転送の開始時の消費電力が徐々に増加するため、電源電圧の電圧降下を軽減することができ、電源ノイズを軽減することができる。この結果、プロセッサ100Bの誤動作を抑制して、動作マージンを向上することができる。DMA転送が開始される動作において、最初のデータ転送を含む期間は、第1期間の一例であり、第1期間より後の期間は、第2期間の一例である。典型的には、消費電力が徐々に増加する期間は、第1期間の一例であり、第1期間の後に間隙なくデータ転送が連続して実施される期間は、第2期間の一例である。
【0082】
DMAC160は、DMA転送の停止時に、ダミーデータ転送を実施するサイクルを挿入し、ダミーデータ転送の挿入比率を徐々に低下させる。例えば、DMAC160は、ダミーデータ転送において、転送元のデータを読み出すが、読み出したデータの転送先への書き込みを実施しない。これにより、データの転送に影響を与えずに電力のみを消費させる。ダミーデータ転送の挿入により、DMA転送の停止時の消費電力が徐々に減少するため、電源ノイズを軽減することができる。この結果、プロセッサ100Bの誤動作を抑制して、動作マージンを向上することができる。ダミーデータ転送の頻度を徐々に低くして消費電力が徐々に減少する期間は、最後のデータ転送の処理期間後の期間の一例である。
【0083】
一方、DMA転送の開始時に、データ転送を実施しないサイクルを挿入しない場合、消費電力が急激に増加するため、電源電圧の大きな電圧降下が発生するおそれがあり、大きな電源ノイズが発生するおそれがある。また、DMA転送の停止時に、ダミーデータ転送を実施するサイクルを挿入しない場合、消費電力が急激に減少するため、大きな電源ノイズが発生するおそれがある。
【0084】
以上、図6及び図7に示す実施形態においても、図1から図4に示す実施形態と同様に、演算命令の供給開始時と演算命令の供給停止時に、電源ノイズを軽減することができ、プロセッサ100の誤動作を抑制して、動作マージンを向上することができる。また、第1命令の制御情報及び第2命令の制御情報をソフトウェアで変更することができる。第1傾斜情報及び第2傾斜情報をソフトウェアにより変更することができる。
【0085】
さらに、この実施形態では、DMA転送の開始時にデータ転送量を徐々に増加することで、消費電力が徐々に増加するため、電源電圧の電圧降下を軽減することができ、電源ノイズを軽減することができる。DMA転送の停止時にデータ転送量を徐々に減少することで、消費電力が徐々に減少するため、電源ノイズを軽減することができる。この結果、プロセッサ100Bの誤動作を抑制して、動作マージンを向上することができる。
【0086】
また、第3傾斜情報及び第4傾斜情報を、プロセッサ100の起動時等に書き換え可能なI/Oレジスタ又はステータスレジスタ等に保持することで、第3傾斜情報及び第4傾斜情報をソフトウェアにより変更することができる。なお、図6のDMAC160及びDMA転送の機能は、図5に示したプロセッサ100Aに実装されてもよい。
【0087】
図8は、本発明の別の実施形態における情報処理装置の一例を示すブロック図である。図5と同様の要素については、同じ符号を付し、詳細な説明は省略する。図8に示す情報処理装置は、プロセッサ100Cが実行する命令を生成するコンパイラ410と命令挿入ブロック420とを含むホスト400として機能する。ホスト400は、少なくとも1つのメモリと、プログラムを実行する少なくとも1つのプロセッサとを有する。特に限定されないが、コンパイラ410及び命令挿入ブロック420は、例えば、ホスト400が実行するプログラムにより実現される。なお、プロセッサ100Cは、複数の演算ブロック120を有するが、1個の演算ブロック120を有してもよい。
【0088】
コンパイラ410は、ソースプログラムをプロセッサ100Cが実行可能な命令コードに変換する。命令挿入ブロック420は、コンパイラ410が生成した命令コードに第1命令及び第2命令を挿入し、外部メモリ200に転送する。図2と同様に、プロセッサ100C及び外部メモリ200は、ボード300に搭載される。なお、命令挿入ブロック420は、ホスト400の外部に配置されてもよい。命令挿入ブロック420は、第1命令及び第2命令を含む演算命令列を生成する命令挿入装置の一例である。
【0089】
プロセッサ100Cは、図5の制御部110Aの代わりに制御部110Cを有する。制御部110Cは、図5の制御部110Aから第2命令保持部115、第1命令保持部114及び起動/停止制御部118を削除していることを除き、図5の制御部110Aと同様の構成を有する。
【0090】
この実施形態では、プロセッサ100Cが実行する命令列に第1命令及び第2命令が含まれる。このため、演算処理の開始時の第1命令の挿入処理と、演算処理の停止時の第1命令及び第2命令の挿入処理は不要である。すなわち、演算処理の開始時の第1命令の挿入処理と、演算処理の停止時の第1命令及び第2命令の挿入処理は、上述した実施形態の起動/停止制御部118による制御を実施することなく、コンパイラ410による命令コードの生成により実現されてもよい。命令発行判定部117は、命令バッファ112のキューの先頭にある先頭命令が実行可能になった場合、セレクタ119に先頭命令の実行を許可する起動情報を出力する。
【0091】
セレクタ119は、起動情報を受けた場合、先頭命令と、先頭命令に続く第1命令及び後続の命令とをデコードされた順に各演算ブロック120に出力する。セレクタ119は、停止情報を受けた場合、先頭命令と、先頭命令に続く第1命令、第2命令及び後続の命令とをデコードされた順に各演算ブロック120に出力する。そして、各演算ブロック120は、図4の第1命令又は第2命令を挿入する場合と同様に、命令を順次実行する。
【0092】
図9は、図8のコンパイラ410が生成した命令コードと命令挿入ブロック420が生成した命令コードの例を示す説明図である。例えば、コンパイラ410は、データ転送命令によりレジスタファイル123に転送されたデータを使用して演算を実行する演算命令列A-Jを生成する。また、コンパイラ410は、演算命令列K-P(演算命令Pは、命令列の最後)を生成する。コンパイラ410は、演算命令列の始まりを示す識別情報を演算命令Aに付加し、演算命令の終わりを示す識別情報を演算命令Pに付加してもよい。
【0093】
命令挿入ブロック420は、演算命令列の始まりを検出した場合、通常の命令の挿入頻度が徐々に高くなるように、通常の命令の間に第1命令を挿入する。命令挿入ブロック420は、演算命令列の終わりを検出した場合、第2命令に対する第1命令の挿入頻度が徐々に高くなるように、第1命令及び第2命令を挿入する。これにより、図4と同様に、演算処理の開始時に消費電力を徐々に増加させることができ、電源電圧の電圧降下を軽減して、電源ノイズを軽減することができる。また、演算処理の停止時に消費電力が徐々に減少させることができ、電源ノイズを軽減することができる。命令挿入ブロック420が、演算命令列が始まる場合に生成する命令列において、最初の通常の命令の処理期間を含む期間は、第1期間の一例であり、第1期間より後の期間は、第2期間の一例である。典型的には、第1命令の挿入頻度が徐々に低くなる期間は、第1期間の一例であり、第1期間の後の第1命令の挿入がなくなる期間は、第2期間の一例である。
【0094】
命令挿入ブロック420が、演算命令列が終わる場合に生成する命令列において、演算処理の停止直後の期間を含む期間は、第1期間の一例であり、第1期間より後の期間は、第2期間の一例である。典型的には、第2命令の挿入頻度が徐々に低くなる期間は、第1期間の一例であり、第1期間の後の第2命令を挟むことなく第1命令が連続して供給される期間は、第2期間の一例である。
【0095】
なお、命令挿入ブロック420は、演算命令列が終わる場合に、通常の命令の供給頻度を徐々に下げながら命令列を生成してもよい。この場合、通常の命令の間に、第2命令、第1命令、又は、第2命令及び第1命令が挿入される。通常の命令の供給頻度が徐々に下げられる期間のうち、通常の命令の供給頻度が最初に下がる期間を含み、かつ、最後の通常の命令が供給される期間を含む期間は、第3期間の一例であり、第3期間より前の期間は、第2期間の一例である。
【0096】
以上、図8及び図9に示す実施形態では、演算命令列の始まりに、第1命令に対する通常の命令の挿入頻度を徐々に高くする命令列を追加し、演算命令列の終わりに、第2命令に対する第1命令の挿入頻度を徐々に高くする命令列を追加する。これにより、命令挿入ブロック420が生成した命令列をプロセッサ100Cが実行するときに、電源ノイズを軽減することができ、プロセッサ100Cの誤動作を抑制して、動作マージンを向上することができる。
【0097】
例えば、1つの演算命令を複数の演算器122で並列に実行するSIMDプロセッサ等において、顕著な電源ノイズの低減効果を得ることができ、動作マージンを向上することができる。動作マージンが向上するため、例えば、プロセッサ100Cの動作周波数を高くすることが可能になる。
【0098】
図10は、図2及び図8に示したホスト400のハードウェア構成の一例を示すブロック図である。ホスト400は、一例として、プロセッサ20と、主記憶装置30(メモリ)と、補助記憶装置40(メモリ)と、ネットワークインタフェース50と、デバイスインタフェース60と、を備え、これらがバス70を介して接続されたコンピュータとして実現されてもよい。例えば、プロセッサ20が命令挿入プログラムを実行することで、図9で説明した第1命令及び第2命令の挿入処理が実行される。
【0099】
本開示の処理、手段等の一部又は全部は、ネットワークを介してホスト400と通信可能なクラウド上に設けられたプロセッサ及び記憶装置の少なくとも一方により実現されてもよい。このように、前述した実施形態におけるホスト400は、1台又は複数台のコンピュータによる並列コンピューティングの形態であってもよい。
【0100】
プロセッサ20は、少なくともコンピュータの制御又は演算のいずれかを行う電子回路(処理回路、Processing circuit、Processing circuitry、CPU、GPU、FPGA、ASIC等)であってもよい。また、プロセッサ20は、汎用プロセッサ、特定の演算を実行するために設計された専用の処理回路又は汎用プロセッサと専用の処理回路との両方を含む半導体装置のいずれであってもよい。また、プロセッサ20は、光回路を含むものであってもよいし、量子コンピューティングに基づく演算機能を含むものであってもよい。
【0101】
プロセッサ20は、ホスト400の内部構成の各装置等から入力されたデータやソフトウェアに基づいて演算処理を行ってもよく、演算結果や制御信号を各装置等に出力してもよい。プロセッサ20は、ホスト400のOS(Operating System)や、アプリケーション等を実行することにより、ホスト400を構成する各構成要素を制御してもよい。
【0102】
前述した実施形態におけるホスト400は、1又は複数のプロセッサ20により実現されてもよい。ここで、プロセッサ20は、1チップ上に配置された1又は複数の電子回路を指してもよいし、2つ以上のチップあるいは2つ以上のデバイス上に配置された1又は複数の電子回路を指してもよい。複数の電子回路を用いる場合、各電子回路は有線又は無線により通信してもよい。
【0103】
主記憶装置30は、プロセッサ20が実行する命令及び各種データ等を記憶してもよく、主記憶装置30に記憶された情報がプロセッサ20により読み出されてもよい。補助記憶装置40は、主記憶装置30以外の記憶装置である。なお、これらの記憶装置は、電子情報を格納可能な任意の電子部品を意味するものとし、半導体のメモリでもよい。半導体のメモリは、揮発性メモリ又は不揮発性メモリのいずれでもよい。前述した実施形態におけるホスト400において各種データ等を保存するための記憶装置は、主記憶装置30又は補助記憶装置40により実現されてもよい。
【0104】
前述した実施形態におけるホスト400が、少なくとも1つの記憶装置(メモリ)と、この少なくとも1つの記憶装置に接続(結合)される少なくとも1つのプロセッサ20で構成される場合、記憶装置1つに対して、少なくとも1つのプロセッサ20が接続されてもよい。また、プロセッサ20の1つに対して、少なくとも1つの記憶装置が接続されてもよい。また、複数のプロセッサ20のうち少なくとも1つのプロセッサ20が、複数の記憶装置のうち少なくとも1つの記憶装置に接続される構成を含んでもよい。また、複数台のホスト400に含まれる記憶装置とプロセッサ20によって、この構成が実現されてもよい。さらに、記憶装置がプロセッサ20と一体になっている構成(例えば、L1キャッシュ、L2キャッシュを含むキャッシュメモリ)を含んでもよい。
【0105】
ネットワークインタフェース50は、無線又は有線により、通信ネットワーク600に接続するためのインタフェースである。ネットワークインタフェース50は、既存の通信規格に適合したもの等、適切なインタフェースを用いればよい。ネットワークインタフェース50により、通信ネットワーク600を介して接続された外部装置710と情報のやり取りが行われてもよい。なお、通信ネットワーク600は、WAN(Wide Area Network)、LAN(Local Area Network)、PAN(Personal Area Network)等の何れか又はそれらの組み合わせであってもよく、ホスト400と外部装置710との間で情報のやり取りが行われるものであればよい。WANの一例としてインターネット等があり、LANの一例としてIEEE802.11やイーサネット(登録商標)等があり、PANの一例としてBluetooth(登録商標)やNFC(Near Field Communication)等がある。
【0106】
デバイスインタフェース60は、外部装置720と直接接続するUSB等のインタフェースである。
【0107】
外部装置710は、ホスト400と通信ネットワーク600を介して接続されている装置である。外部装置720はホスト400と直接接続されいる装置である。
【0108】
外部装置710又は外部装置720は、一例として、入力装置であってもよい。入力装置は、例えば、カメラ、マイクロフォン、モーションキャプチャ、各種センサ、キーボード、マウス、タッチパネル等のデバイスであり、取得した情報をホスト400に与える。また、パーソナルコンピュータ、タブレット端末、スマートフォン等の入力部とメモリとプロセッサを備えるデバイスであってもよい。
【0109】
また、外部装置710又は外部装置720は、一例として、出力装置でもよい。出力装置は、例えば、LCD(Liquid Crystal Display)、又は有機EL(Electro Luminescence)パネル等の表示装置であってもよいし、音声等を出力するスピーカ等であってもよい。また、パーソナルコンピュータ、タブレット端末、又はスマートフォン等の出力部とメモリとプロセッサを備えるデバイスであってもよい。
【0110】
また、外部装置710又は外部装置720は、記憶装置(メモリ)であってもよい。例えば、外部装置710はネットワークストレージ等であってもよく、外部装置720はHDD等のストレージであってもよい。
【0111】
また、外部装置710又は外部装置720は、前述した実施形態におけるホスト400の構成要素の一部の機能を有する装置でもよい。つまり、ホスト400は、外部装置710又は外部装置720の処理結果の一部又は全部を送信してもよいし、外部装置710又は外部装置720から処理結果の一部又は全部を受信してもよい。
【0112】
本明細書(請求項を含む)において、「a、b及びcの少なくとも1つ(一方)」又は「a、b又はcの少なくとも1つ(一方)」の表現(同様な表現を含む)が用いられる場合は、a、b、c、a-b、a-c、b-c又はa-b-cのいずれかを含む。また、a-a、a-b-b、a-a-b-b-c-c等のように、いずれかの要素について複数のインスタンスを含んでもよい。さらに、a-b-c-dのようにdを有する等、列挙された要素(a、b及びc)以外の他の要素を加えることも含む。
【0113】
本明細書(請求項を含む)において、「データを入力として/を用いて/データに基づいて/に従って/に応じて」等の表現(同様な表現を含む)が用いられる場合は、特に断りがない場合、データそのものを用いる場合や、データに何らかの処理を行ったもの(例えば、ノイズ加算したもの、正規化したもの、データから抽出した特徴量、データの中間表現等)を用いる場合を含む。また、「データを入力として/を用いて/データに基づいて/に従って/に応じて」何らかの結果が得られる旨が記載されている場合(同様な表現を含む)、特に断りがない場合、当該データのみに基づいて当該結果が得られる場合や、当該データ以外の他のデータ、要因、条件及び/又は状態にも影響を受けて当該結果が得られる場合を含む。また、「データを出力する」旨が記載されている場合(同様な表現を含む)、特に断りがない場合、データそのものを出力として用いる場合や、データに何らかの処理を行ったもの(例えば、ノイズ加算したもの、正規化したもの、データから抽出した特徴量、各種データの中間表現等)を出力として用いる場合を含む。
【0114】
本明細書(請求項を含む)において、「接続される(connected)」及び「結合される(coupled)」との用語が用いられる場合は、直接的な接続/結合、間接的な接続/結合、電気的(electrically)な接続/結合、通信的(communicatively)な接続/結合、機能的(operatively)な接続/結合、物理的(physically)な接続/結合等のいずれをも含む非限定的な用語として意図される。当該用語は、当該用語が用いられた文脈に応じて適宜解釈されるべきであるが、意図的に或いは当然に排除されるのではない接続/結合形態は、当該用語に含まれるものして非限定的に解釈されるべきである。
【0115】
本明細書(請求項を含む)において、「AがBするよう構成される(A configured to B)」との表現が用いられる場合は、要素Aの物理的構造が、動作Bを実行可能な構成を有するとともに、要素Aの恒常的(permanent)又は一時的(temporary)な設定(setting/configuration)が、動作Bを実際に実行するように設定(configured/set)されていることを含んでよい。例えば、要素Aが汎用プロセッサである場合、当該プロセッサが動作Bを実行可能なハードウェア構成を有するとともに、恒常的(permanent)又は一時的(temporary)なプログラム(命令)の設定により、動作Bを実際に実行するように設定(configured)されていればよい。また、要素Aが専用プロセッサ、専用演算回路等である場合、制御用命令及びデータが実際に付属しているか否かとは無関係に、当該プロセッサの回路的構造等が動作Bを実際に実行するように構築(implemented)されていればよい。
【0116】
本明細書(請求項を含む)において、含有又は所有を意味する用語(例えば、「含む(comprising/including)」、「有する(having)」等)が用いられる場合は、当該用語の目的語により示される対象物以外の物を含有又は所有する場合を含む、open-endedな用語として意図される。これらの含有又は所有を意味する用語の目的語が数量を指定しない又は単数を示唆する表現(a又はanを冠詞とする表現)である場合は、当該表現は特定の数に限定されないものとして解釈されるべきである。
【0117】
本明細書(請求項を含む)において、ある箇所において「1つ又は複数(one or more)」、「少なくとも1つ(at least one)」等の表現が用いられ、他の箇所において数量を指定しない又は単数を示唆する表現(a又はanを冠詞とする表現)が用いられているとしても、後者の表現が「1つ」を意味することを意図しない。一般に、数量を指定しない又は単数を示唆する表現(a又はanを冠詞とする表現)は、必ずしも特定の数に限定されないものとして解釈されるべきである。
【0118】
本明細書において、ある実施形態の有する特定の構成について特定の効果(advantage/result)が得られる旨が記載されている場合、別段の理由がない限り、当該構成を有する他の1つ又は複数の実施形態についても当該効果が得られると理解されるべきである。但し、当該効果の有無は、一般に種々の要因、条件及び/又は状態に依存し、当該構成により必ず当該効果が得られるものではないと理解されるべきである。当該効果は、種々の要因、条件及び/又は状態が満たされたときに実施形態に記載の当該構成により得られるものに過ぎず、当該構成又は類似の構成を規定したクレームに係る発明において、当該効果が必ずしも得られるものではない。
【0119】
本明細書(請求項を含む)において、複数のハードウェアが所定の処理を行う場合、各ハードウェアが協働して所定の処理を行ってもよいし、一部のハードウェアが所定の処理の全てを行ってもよい。また、一部のハードウェアが所定の処理の一部を行い、別のハードウェアが所定の処理の残りを行ってもよい。本明細書(請求項を含む)において、「1又は複数のハードウェアが第1の処理を行い、前記1又は複数のハードウェアが第2の処理を行う」等の表現(同様な表現を含む)が用いられている場合、第1の処理を行うハードウェアと第2の処理を行うハードウェアは同じものであってもよいし、異なるものであってもよい。つまり、第1の処理を行うハードウェア及び第2の処理を行うハードウェアが、前記1又は複数のハードウェアに含まれていればよい。なお、ハードウェアは、電子回路、電子回路を含む装置等を含んでよい。
【0120】
本明細書(請求項を含む)において、複数の記憶装置(メモリ)がデータの記憶を行う場合、複数の記憶装置のうち個々の記憶装置は、データの一部のみを記憶してもよいし、データの全体を記憶してもよい。また、複数の記憶装置のうち一部の記憶装置がデータを記憶する構成を含んでもよい。
【0121】
以上、本開示の実施形態について詳述したが、本開示は上記した個々の実施形態に限定されるものではない。特許請求の範囲に規定された内容及びその均等物から導き出される本発明の概念的な思想と趣旨を逸脱しない範囲において、種々の追加、変更、置き換え、部分的削除等が可能である。例えば、前述した実施形態において、数値又は数式を説明に用いている場合、これらは例示的な目的で示されたものであり、本開示の範囲を限定するものではない。また、実施形態で示した各動作の順序も例示的なものであり、本開示の範囲を限定するものではない。
【0122】
本発明の態様は、例えば、以下のとおりである。
<1>
複数の演算命令を処理する1以上の演算ブロックと、
前記複数の演算命令の処理期間において、前記複数の演算命令に含まれる最初の演算命令の処理期間を含む第1期間において処理される前記演算命令の比率が、前記第1期間より後の第2期間において処理される前記演算命令の比率より低くなるように、前記演算命令より消費電力が小さい他の命令を前記複数の演算命令の間に挿入して前記1以上の演算ブロックに出力する命令挿入部と、を有する、
情報処理装置。
<2>
前記命令挿入部は、前記最初の演算命令の処理以降において、前記演算命令の比率が徐々に高くなるように前記他の命令を挿入する、
<1>に記載の情報処理装置。
<3>
前記演算命令の増加率を示す傾斜情報を書き換え可能に保持する傾斜保持部を有し、
前記命令挿入部は、前記傾斜保持部に保持された前記傾斜情報に基づいて、前記演算命令の比率を徐々に高くする、
<2>に記載の情報処理装置。
<4>
前記他の命令は、前記演算命令の処理結果に影響を与えない命令である、
<1>に情報処理装置。
<5>
前記他の命令は、前記演算命令に非依存な命令である、
<1>に情報処理装置。
<6>
前記複数の演算命令は、前記1以上の演算ブロックに演算を実行させる命令である、
<1に情報処理装置。
<7>
2以上の前記演算ブロックを有し、
SIMD(Single Instruction Multiple Data)プロセッサとして動作する、
<1>に記載の情報処理装置。
<8>
前記命令挿入部は、前記複数の演算命令に含まれる最後の演算命令の後に、前記複数の演算命令の処理結果に影響を与えない複数の他の命令を前記1以上の演算ブロックに出力する、
<1>乃至<7>のいずれか1項に記載の情報処理装置。
<9>
前記複数の他の命令は、少なくとも第1命令と前記第1命令より消費電力が大きな第2命令とを含む、
<8>に記載の情報処理装置。
<10>
前記命令挿入部は、前記第1命令の比率が前記第2命令の比率より徐々に高くなるように、前記複数の他の命令を前記1以上の演算ブロックに出力する、
<9>に記載の情報処理装置。
<11>
前記命令挿入部は、前記複数の演算命令の処理期間において、前記複数の演算命令に含まれる最後の演算命令の処理期間を含む第3期間において処理される前記演算命令の比率が、前記第3期間より前の前記第2期間において処理される前記演算命令の比率より低くなるように、前記他の命令を前記複数の演算命令の間に挿入して前記1以上の演算ブロックに出力する、
<1>乃至<7>のいずれか1項に記載の情報処理装置。
<12>
複数の演算命令を処理する1以上の演算ブロックと、
前記複数の演算命令の処理期間後における第1期間において処理される第2命令の比率が、前記第1期間より後の第2期間において処理される前記第2命令の比率より高くなるように、前記第2命令及び前記第2命令より消費電力が小さい第1命令を前記1以上の演算ブロックに出力する命令挿入部と、を有し、
前記第1命令及び前記第2命令は、前記複数の演算命令の処理結果に影響を与えない、
情報処理装置。
<13>
前記命令挿入部は、前記第2命令の比率が徐々に低くなるように前記第1命令及び前記第2命令を前記1以上の演算ブロックに出力する、
<12>に記載の情報処理装置。
<14>
前記第1命令及び第2命令は、前記演算命令に非依存な命令である、
<12>に情報処理装置。
<15>
2以上の前記演算ブロックを有し、
SIMD(Single Instruction Multiple Data)プロセッサとして動作する、
<12>乃至<14>のいずれか1項に記載の情報処理装置。
<16>
データ転送命令に基づいてデータ転送を処理するデータ転送部を有し、
前記データ転送部は、前記データ転送の処理期間において、最初のデータ転送を含む第1期間において転送するデータ転送の頻度を、前記第1期間より後の第2期間において転送するデータ転送の頻度より低くする、
情報処理装置。
<17>
前記データ転送部は、最後のデータ転送の処理期間において転送するデータ転送の頻度を徐々に低くする、
<16>に記載の情報処理装置。
<18>
少なくとも1つのメモリと、
少なくとも1つのプロセッサとを備え、
前記少なくとも1つのプロセッサは、
情報処理装置が処理する複数の演算命令を受け、前記複数の演算命令の処理期間において、前記複数の演算命令に含まれる最初の演算命令の処理期間を含む第1期間において処理される前記演算命令の比率が、前記第1期間より後の第2期間において処理される前記演算命令の比率より低くなるように、前記演算命令より消費電力が小さい他の命令を前記複数の演算命令の間に挿入して前記情報処理装置に処理させる演算命令列を生成する、
命令挿入装置。
<19>
前記複数の演算命令の処理期間において、前記複数の演算命令に含まれる最後の演算命令の処理期間を含む第3期間において処理される前記演算命令の比率が、前記第3期間より前の前記第2期間において処理される前記演算命令の比率より低くなるように、前記他の命令を前記複数の演算命令の間に挿入して前記情報処理装置に処理させる演算命令列を生成する、
<18>に記載の命令挿入装置。
<20>
演算命令を処理する1以上の演算ブロックを有する情報処理装置の制御方法であって、
複数の演算命令の処理期間において、前記複数の演算命令に含まれる最初の演算命令の処理期間を含む第1期間において処理される前記演算命令の比率が、前記第1期間より後の第2期間において処理される前記演算命令の比率より低くなるように、前記演算命令より消費電力が小さい他の命令を前記複数の演算命令の間に挿入して前記1以上の演算ブロックに出力する、
情報処理装置の制御方法。
<21>
前記複数の演算命令の処理期間において、前記複数の演算命令に含まれる最後の演算命令の処理期間を含む第3期間において処理される前記演算命令の比率が、前記第3期間より前の前記第2期間において処理される前記演算命令の比率より低くなるように、前記他の命令を前記複数の演算命令の間に挿入して前記1以上の演算ブロックに出力する、
<20>に記載の情報処理装置の制御方法。
【符号の説明】
【0123】
100、100A、100B、100C プロセッサ
110、110A、110C 制御部
111 命令フェッチ部
112 命令バッファ
113、113A、113B 命令デコーダ
114 第1命令保持部
115 第2命令保持部
116、116B 同期制御部
117 命令発行判定部
118 起動/停止制御部
119、119B セレクタ
120 演算ブロック
121 コア
122 演算器
123 レジスタファイル
124 内部メモリ
130 第1ブロック
131 第1メモリ
140 第2ブロック
141 第2メモリ
151 第3メモリ
200 外部メモリ
300 ボード
400 ホスト
410 コンパイラ
420 命令挿入ブロック
BUS バス
DMACNT 制御情報
EX 演算制御情報
SYNC 同期情報
TR 転送制御情報
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10