(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024137389
(43)【公開日】2024-10-07
(54)【発明の名称】データ処理装置
(51)【国際特許分類】
G06F 9/30 20180101AFI20240927BHJP
G06F 1/10 20060101ALI20240927BHJP
【FI】
G06F9/30 330C
G06F1/10 510
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2023048896
(22)【出願日】2023-03-24
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成30年度、国立研究開発法人新エネルギー・産業技術総合開発機構「高効率・高速処理を可能とするAIチップ・次世代コンピューティングの技術開発/革新的AIエッジコンピューティング技術の開発/FPGA IPと可変精度演算コアの融合による超低消費電力エッジヘビーコンピューティング向けSoCの研究開発」委託研究、産業技術力強化法第17条の適用を受ける特許出願
(71)【出願人】
【識別番号】515130201
【氏名又は名称】株式会社Preferred Networks
(71)【出願人】
【識別番号】504150450
【氏名又は名称】国立大学法人神戸大学
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】田形 健二
(72)【発明者】
【氏名】牧野 淳一郎
【テーマコード(参考)】
5B033
【Fターム(参考)】
5B033BC02
(57)【要約】
【課題】命令を並列に実行する複数の実行回路を有するデータ処理装置に発生する電源ノイズを低減し、データ処理装置の誤動作を抑制する。
【解決手段】データ処理装置は、命令を発行する命令発行部と、前記命令発行部から発行された命令を並列に実行する複数の実行回路と、前記命令発行部と前記複数の実行回路との間に配置され、前記命令発行部から受ける命令の前記実行回路への到達を遅延させる複数の遅延部と、を有し、前記複数の実行回路の少なくとも2つに供給される命令の到達タイミングは互いに異なる。
【選択図】
図1
【特許請求の範囲】
【請求項1】
命令を発行する命令発行部と、
前記命令発行部から発行された命令を並列に実行する複数の実行回路と、
前記命令発行部と前記複数の実行回路との間に配置され、前記命令発行部から受ける命令の前記実行回路への到達を遅延させる複数の遅延部と、を有し、
前記複数の実行回路の少なくとも2つに供給される命令の到達タイミングは互いに異なる
データ処理装置。
【請求項2】
前記複数の遅延部の遅延量の差は、前記複数の実行回路が同時に動作を開始するときに発生する電源ノイズの波形の周期の2分の1の整数倍である
請求項1に記載のデータ処理装置。
【請求項3】
複数の遅延量の各々が設定される前記遅延部の数は、ほぼ等しい
請求項2に記載のデータ処理装置。
【請求項4】
前記複数の遅延部に設定する遅延量を示す遅延量情報を保持する遅延量保持部を有し、
前記複数の遅延部の各々に設定される遅延量は、前記遅延量保持部が保持する遅延量情報に応じて設定される
請求項1ないし請求項3のいずれか1項に記載のデータ処理装置。
【請求項5】
前記複数の遅延部の各々は、直列に接続可能な複数のフリップフロップを有し、
前記フリップフロップの直列の接続数は、前記遅延量保持部が保持する遅延量情報に応じて設定される
請求項4に記載のデータ処理装置。
【請求項6】
前記複数の遅延部の各々は、ライトポインタとリードポインタとにより制御され、メモリで構成されたFIFOを有し、
前記FIFOへの命令の格納毎に、前記ライトポインタと前記リードポインタとが連動して更新され、
前記ライトポインタの値と前記リードポインタの値との差により、前記複数の遅延部の各々遅延量が設定される
請求項4に記載のデータ処理装置。
【請求項7】
前記複数の実行回路は、第1の周波数を有するクロックに同期してそれぞれ動作し、
前記複数の遅延部の少なくとも2つによって遅延された命令が前記実行回路にそれぞれ到達する時間差は、前記クロックの少なくとも1周期分の時間である
請求項1ないし請求項3のいずれか1項に記載のデータ処理装置。
【請求項8】
前記命令発行部は、演算命令を発行し、
前記複数の実行回路の各々は、前記演算命令に基づいて演算を実行する演算器である
請求項1ないし請求項3のいずれか1項に記載のデータ処理装置。
【請求項9】
前記命令発行部は、データ転送命令を発行し、
前記複数の実行回路の各々は、前記データ転送命令に基づいてデータ転送を実行するデータ転送実行回路である
請求項1ないし請求項3のいずれか1項に記載のデータ処理装置。
【請求項10】
前記命令発行部と前記複数の実行回路と前記複数の遅延部とは、1つの半導体チップ内に搭載される
請求項1ないし請求項3のいずれか1項に記載のデータ処理装置。
【請求項11】
前記命令発行部と前記複数の実行回路とは、互いに異なる半導体チップにそれぞれ搭載される
請求項1ないし請求項3のいずれか1項に記載のデータ処理装置。
【請求項12】
少なくとも1つの半導体チップがそれぞれ搭載される複数の基板を有し、
前記命令発行部と前記複数の実行回路とは、互いに異なる前記基板の前記半導体チップにそれぞれ搭載される
請求項1ないし請求項3のいずれか1項に記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、データ処理装置に関する。
【背景技術】
【0002】
半導体プロセスの進化に伴い、半導体デバイスの消費電力は増加する傾向にある。昨今では、消費電力が500Wを超える半導体デバイスも開発されている。消費電力が大きい半導体デバイスに搭載される内部回路を同時に動作させ、又は動作を同時に停止させると、消費電力が急激に増加又は減少する。消費電力が急激に増加又は減少すると、瞬間的に電圧降下又は電圧上昇が発生するおそれがあり、電源ノイズが発生するおそれがある。電源ノイズは、消費電力が大きい半導体デバイスほど大きくなりやすい。また、複数の半導体デバイスが搭載される装置においても、搭載される半導体デバイスの消費電力が大きいほど電源ノイズが大きくなりやすい。
【発明の概要】
【発明が解決しようとする課題】
【0003】
本開示では、命令を並列に実行する複数の実行回路を有するデータ処理装置に発生する電源ノイズを低減し、データ処理装置の誤動作を抑制する。
【課題を解決するための手段】
【0004】
本発明の実施形態のデータ処理装置は、命令を発行する命令発行部と、前記命令発行部から発行された命令を並列に実行する複数の実行回路と、前記命令発行部と前記複数の実行回路との間に配置され、前記命令発行部から受ける命令の前記実行回路への到達を遅延させる複数の遅延部と、を有し、前記複数の実行回路の少なくとも2つに供給される命令の到達タイミングは互いに異なる。
【図面の簡単な説明】
【0005】
【
図1】本発明のデータ処理装置の一形態であるプロセッサの構成の一例を示すブロック図である。
【
図4】
図1の遅延部のさらなる別の例を示す回路図である。
【
図5】
図4の遅延部の動作の一例を示す説明図である。
【
図6】
図1の遅延部の遅延量の一例を示す説明図である。
【
図7】
図1の各遅延部の遅延量の決定方法の一例を示す説明図である。
【
図8】本発明のデータ処理装置の別の形態であるプロセッサの構成の一例を示すブロック図である。
【
図10】本発明のデータ処理装置の別の形態であるDMACの構成の一例を示すブロック図である。
【
図11】本発明のデータ処理装置のさらなる別の形態を示すブロック図である。
【
図12】
図1に示したプロセッサが搭載される計算機のハードウェア構成の一例を示すブロック図である。
【発明を実施するための形態】
【0006】
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。以下では、信号が伝達される信号線には、信号名と同じ符号を使用する。特に限定されないが、以下で説明するプロセッサは、サーバ等のコンピュータに搭載され、プログラムを実行することで、ディープニューラルネットワークの訓練又は推論において畳み込み演算等を実行する。なお、以下で説明するプロセッサは、科学技術計算などに使用されてもよい。
【0007】
図1は、本発明のデータ処理装置の一形態であるプロセッサの構成の一例を示すブロック図である。
図1に示すプロセッサ100は、命令フェッチ部110、命令発行部120、複数の遅延部130、複数の演算器140及び複数のレジスタファイル150を有する。なお、命令フェッチ部110、命令発行部120及び遅延部130は、命令フェッチ回路110、命令発行回路120及び遅延回路130として実現されてもよい。
【0008】
例えば、プロセッサ100は、SIMD(Single Instruction Multiple Data)型プロセッサ又はSIMT(Single Instruction Multiple Threads)型プロセッサである。プロセッサ100は、データを処理するデータ処理装置の一例である。なお、
図1は、プロセッサ100のうち、主にプロセッサコアに含まれる要素を記載している。プロセッサ100は、
図1に示す要素以外にも、命令キャッシュ、データキャッシュ、内蔵メモリ等を有してもよい。
【0009】
命令フェッチ部110の出力は、命令発行部120の入力に接続される。命令フェッチ部110は、図示しないメモリ又は命令キャッシュ等に保持された命令をフェッチし、フェッチした命令を命令発行部120に転送する。
【0010】
命令発行部120の出力は、複数の遅延部130の入力のそれぞれに共通に接続される。命令発行部120は、命令フェッチ部110から転送される命令を複数の遅延部130に並列に出力する。例えば、命令発行部120から出力される命令は、演算器140及びレジスタファイル150を制御する制御信号として遅延部130に出力される。
【0011】
なお、命令発行部120は、命令フェッチ部110から転送される命令をデコードする命令デコーダを有してもよい。また、命令発行部120は、複数の命令を保持する命令バッファと、命令バッファに保持された命令を発行可能な順に発行する命令スケジューラを有してもよい。
【0012】
複数の遅延部130の出力は、対応する演算器140の入力に接続される。各遅延部130は、命令発行部120から受ける命令を所定量だけ遅延させ、対応する演算器140に出力する。すなわち、複数の遅延部130は、命令(命令に含まれる制御情報)そのものの演算器140への到達タイミングを遅延させる。これにより、タイマー等を使用して命令の演算器140への到達タイミングを制御する場合に比べて、命令の遅延機構を簡易に構成することができる。各遅延部130に設定される遅延量の例は、
図6で説明される。
【0013】
演算器140の出力は、対応するレジスタファイル150の入力に接続される。各演算器140は、対応する遅延部130から供給される命令を実行し、命令の実行結果であるデータをレジスタファイル150に出力する。なお、各演算器140は、命令発行部120から発行される複数種の命令にそれぞれ対応する複数種の演算器(加算器、乗算器、積和演算器等)を有してもよい。演算器140は、演算命令を実行する実行回路の一例である。
【0014】
レジスタファイル150の出力は、対応する演算器140の入力に接続される。なお、各レジスタファイル150は、複数のレジスタを有する。各レジスタは、図示しないメモリ又はデータキャッシュ等との間でデータを入出力する。また、各レジスタは、対応する演算器140からの演算結果を保持し、保持しているデータを対応する演算器140に出力する。なお、
図1に示す複数のレジスタファイル150の代わりに、複数の演算器140に共通のレジスタファイルが設けられてもよい。
【0015】
図1では、プロセッサ100は、遅延部130、演算器140及びレジスタファイル150を各々含む8個の演算ブロックを有するが、演算ブロックの数は、2個以上であればよい。
【0016】
図2は、
図1の遅延部130の例を示す回路図である。
図2に回路例1及び回路例2として示す遅延部130の各々は、複数のフリップフロップFF(FF1、FF2、FF3)、複数のセレクタSEL(SEL1、SEL2、SEL3)及びプログラム回路PRGMを有する。
【0017】
回路例1の遅延部130では、フリップフロップFFとセレクタSELとは、命令発行部120と演算器140との間に交互に配置される。回路例2の遅延部130では、フリップフロップFFとセレクタSELとは、それぞれ直列に配置される。各フリップフロップFFは、受けた命令INSを1単位の遅延量(1クロック周期)だけ遅らせて出力する。以下では、1単位の遅延量は、遅延量1とも称され、2単位の遅延量は、遅延量2とも称され、3単位の遅延量は、遅延量3とも称される。"0"の遅延量は、遅延量0とも称される。フリップフロップFFに示す三角印は、クロック入力端子を示す。
【0018】
以下では、相対的に命令発行部120側に配置されるフリップフロップFF又はセレクタSELは、前段のフリップフロップFF又は前段のセレクタSELとも称される。相対的に演算器140側に配置されるフリップフロップFF又はセレクタSELは、後段のフリップフロップFF又は後段のセレクタSELとも称される。
【0019】
回路例1では、各セレクタSELの入力端子1は、前段のフリップフロップFFから出力される命令INSを受ける。各セレクタSELの入力端子0は、命令発行部120からの命令INSを受ける。セレクタSEL1、SEL2は、対応する遅延制御信号DCNT1、DCNT2が論理1の場合、前段のフリップフロップFFから出力される命令INSを後段のフリップフロップFFに出力する。セレクタSEL1、SEL2は、対応する遅延制御信号DCNT1、DCNT2が論理0の場合、命令発行部120から出力される命令INSを後段のフリップフロップFFに出力する。
【0020】
セレクタSEL3は、遅延制御信号DCNT3が論理1の場合、フリップフロップFF3から出力される命令INSを演算器140に出力する。セレクタSEL3は、遅延制御信号DCNT3が論理0の場合、命令発行部120から出力される命令INSを演算器140に出力する。
【0021】
回路例2では、セレクタSEL1の入力端子0は、命令発行部120からの命令INSを受ける。セレクタSEL2、SEL3の入力端子0は、前段のセレクタSEL1、SEL2からの命令INSをそれぞれ受ける。セレクタSEL1-SEL3の入力端子1は、フリップフロップFF1-FF3から出力される命令INSをそれぞれ受ける。
【0022】
セレクタSEL1は、遅延制御信号DCNT1が論理1の場合、フリップフロップFF1から出力される命令INSをセレクタSEL2に出力する。セレクタSEL1は、遅延制御信号DCNT1が論理0の場合、命令発行部120から出力される命令INSをセレクタSEL2に出力する。
【0023】
セレクタSEL2は、遅延制御信号DCNT2が論理1の場合、フリップフロップFF2から出力される命令INSをセレクタSEL3に出力する。セレクタSEL2は、遅延制御信号DCNT2が論理0の場合、セレクタSEL1から出力される命令INSをセレクタSEL3に出力する。
【0024】
セレクタSEL3は、遅延制御信号DCNT3が論理1の場合、フリップフロップFF3から出力される命令INSを演算器140に出力する。セレクタSEL3は、遅延制御信号DCNT3が論理0の場合、セレクタSEL2から出力される命令INSを演算器140に出力する。
【0025】
プログラム回路PRGMは、遅延制御信号DCNT(DCNT1-DCNT3)の論理値を記憶し、記憶している論理値を有する遅延制御信号DCNTを出力する。特に限定されないが、例えば、プログラム回路PRGMは、ROM(Read Only Memory)等の不揮発性メモリ又はeFUSE等である。プログラム回路PRGMは、遅延部130に設定する遅延量を示す遅延量情報を保持する遅延量保持部の一例である。
【0026】
なお、一度決定された遅延量が変更されない場合、各遅延部130にプログラム回路PRGMを設ける代わりに、遅延制御信号DCNT1-DCNT3をそれぞれ伝達する遅延制御信号線DCNT1-DCNT3のそれぞれが、電源線又は接地線に接続されてもよい。この際、各遅延制御信号線DCNT1-DCNT3は、プロセッサ100の外部端子(電源端子又は接地端子)に接続されてもよく、プロセッサ100の製造に使用するフォトマスク上に電源線パターン又は接地線パターンとして形成されてもよい。
【0027】
遅延部130は、プログラム回路PRGMから出力される遅延制御信号DCNT1-DCNT2の論理値に応じて、命令INSを通過させるために直列に接続されるフリップフロップFFの数を相違させることで、遅延量を遅延量0から遅延量3までの4通りに設定可能である。例えば、回路例1では、遅延制御信号DCNT1、DCNT2、DCNT3の論理値は、"X、X、0"、"X、0、1"、"0、1、1"、"1、1、1"のいずれかに設定される。"X"は、"0"又は"1"のいずれでもよいことを示す。例えば、回路例2では、遅延制御信号DCNT1、DCNT2、DCNT3の論理値は、"0、0、0"、"1、0、0"、"X、1、0"、"X、X、1"のいずれかに設定される。
【0028】
なお、
図2では、説明の簡単化のため、3個のフリップフロップFFが遅延部130に設けられる例が示されるが、フリップフロップFFの数は、複数であればよく、実現したい最大遅延量とフリップフロップFFに供給されるクロックの周期とに応じて決定される。例えば、100個程度のフリップフロップFFが各遅延部130に設けられてもよい、また、フリップフロップFFに供給されるクロックは、プロセッサの動作クロックの周波数を分周した分周クロックでもよい。
【0029】
例えば、フリップフロップFFのクロック入力端子に供給される転送クロックの周波数は、演算器140の動作クロックの周波数と同じに設定される。なお、転送クロックの周波数は、動作クロックの周波数の2のn乗倍(nは正または負の整数)に設定されてもよい。例えば、転送クロックの周波数が動作クロックの周波数の2倍の場合、遅延部130から出力される命令INSを動作クロックの1周期ずつずらすために、プログラム回路PRGMは、命令INSの遅延量の調整量が遅延量2になるように設定される。
【0030】
例えば、転送クロックの周波数が動作クロックの周波数の0.5倍の場合、遅延部130から出力される命令INSを動作クロックの2周期ずつずらすために、プログラム回路PRGMは、命令INSの遅延量の調整量が遅延量1になるように設定される。このように、転送クロックの周波数が動作クロックの周波数の2のn乗倍の場合にも、プログラム回路PRGMの設定により、命令INSの遅延量を動作クロックのm周期分(mは1以上の整数)に設定することができる。これにより、命令INSが複数の演算器140にそれぞれ到達する時間差を、動作クロックの少なくとも1周期分の時間にすることができる。
【0031】
図3は、
図1の遅延部130の別の例を示す回路図である。
図2と同様の要素は、同じ符号を付す。
図3に回路例3及び回路例4として示す遅延部130は、プログラム回路PRGMの代わりにレジスタREG1を有することを除き、
図2の回路例1及び回路例2とそれぞれ同様である。レジスタREG1に示す三角印は、クロック入力端子を示す。
【0032】
レジスタREG1は、例えば、プロセッサ100の起動シーケンス(起動プログラム)において制御バスCBUSを介して供給される3ビットの論理値を記憶し、記憶した論理値に対応する遅延制御信号DCNT1-DCNT3を出力する。これにより、
図2と同様に、遅延量0から遅延量3までの4通りの遅延量を設定することができる。レジスタREG1は、遅延部130に設定する遅延量を示す遅延量情報を保持する遅延量保持部の一例である。
【0033】
なお、レジスタREG1を設ける代わりに、プロセッサ100の外部端子に遅延制御信号端子DCNT1-DCNT3が設けられてもよい。そして、遅延制御信号端子DCNT1-DCNT3に設定される電圧レベル(論理値)が遅延制御信号DCNT1-DCNT3としてセレクタSEL1-SEL3にそれぞれ供給されてもよい。
【0034】
図4は、
図1の遅延部130のさらなる別の例を示す回路図である。
図4に示す遅延部130は、FIFO(First-In First-Out)とレジスタREG2と制御回路FCNTとを有する。FIFOは、SRAM(Static Random Access Memory)で構成されてもよく、フリップフロップで構成されてもよく、他の回路によって構成されてもよい。レジスタREG2と制御回路FCNTに示す三角印は、クロック入力端子を示す。
【0035】
レジスタREG2は、例えば、プロセッサ100の起動シーケンス(起動プログラム)において制御バスCBUSを介して供給されるポインタ差DIFPを保持し、保持したポインタ差DIFPを制御回路FCNTに出力する。ポインタ差DIFPは、遅延部130に設定する遅延量を示す遅延量情報の一例である。レジスタREG2は、遅延量情報を保持する遅延量保持部の一例である。
【0036】
制御回路FCNTは、クロックに同期してFIFOに命令が格納される毎にポインタ差DIFPを有するライトポインタWPTRとリードポインタRPTRとを順次更新してFIFOに出力する。なお、制御回路FCNTに供給されるクロックは、プロセッサの動作クロックの周波数を分周した分周クロックでもよい。
【0037】
ライトポインタWPTRとリードポインタRPTRとは連動して更新されるため、ライトポインタWPTRとリードポインタRPTRとの差は、ポインタ差DIFPに維持される。これにより、
図4の遅延部130は、命令発行部120から出力される命令INSを、ポインタ差DIFPとクロック周期との積に対応する遅延量だけ遅らせて演算器140に出力することができる。換言すれば、ライトポインタWPTRとリードポインタRPTRとの差をポインタ差DIFPとして設定することで、ポインタ差DIFPの倍数に対応する遅延量を有する遅延部130を実現することができる。
【0038】
なお、レジスタREG2を設ける代わりに、ポインタ差DIFPの論理値が設定される複数の外部端子がプロセッサ100に設けられてもよい。そして、複数の外部端子に設定される電圧レベル(論理値)がポインタ差DIFPとして制御回路FCNTに供給されてもよい。
【0039】
図5は、
図4の遅延部130の動作の一例を示す説明図である。
図5では、命令INS(INSa、INSb、INSc、INSd、INSe)が、命令発行部120から順次出力され、遅延部130のFIFOに順次格納される。FIFOに格納された各命令INSは、ポインタ差DIFPで示される2クロックサイクル後にFIFOから読み出され、演算器140に出力される。
【0040】
図6は、
図1の遅延部130の遅延量の一例を示す説明図である。遅延部130に示す矩形は、遅延量の1単位を示す。
図6では、説明の簡単化のため、各遅延部130は、遅延量1、遅延量2又は遅延量3のいずれかに設定される。なお、設定可能な遅延量は、4種類以上あってもよい。
【0041】
図2の回路例1及び
図3の回路例3に示す遅延部130では、遅延量1は、遅延制御信号DCNT1、DCNT2、DCNT3="X、0、1"により設定される。遅延量2は、遅延制御信号DCNT1、DCNT2、DCNT3="0、1、1"により設定される。遅延量3は、遅延制御信号DCNT1、DCNT2、DCNT3="1、1、1"により設定される。
【0042】
図2の回路例2及び
図3の回路例4に示す遅延部130では、遅延量1は、遅延制御信号DCNT1、DCNT2、DCNT3="1、0、0"により設定される。遅延量2は、遅延制御信号DCNT1、DCNT2、DCNT3="X、1、0"により設定される。遅延量3は、遅延制御信号DCNT1、DCNT2、DCNT3="X、X、1"により設定される。
【0043】
図4の遅延部130では、遅延量1は、ポインタ差DIFP="1"により設定される。遅延量2は、ポインタ差DIFP="2"により設定される。遅延量3は、ポインタ差DIFP="3"により設定される。
【0044】
図6に示すように、複数の遅延部130は、所定数ずつ遅延量が異なる。すなわち、複数の遅延部130の少なくとも2つの遅延量は互いに異なる。また、複数の遅延量(1、2又は3)がそれぞれ設定される遅延部130の数は、ほぼ等しい。
図1では、遅延量1の遅延部130の数は3個であり、遅延量2の遅延部130の数は3個であり、遅延量3の遅延部130の数は2個である。
【0045】
図7は、
図1の各遅延部130の遅延量の決定方法の一例を示す説明図である。
図7に示す遅延量の決定方法は、プロセッサ100の開発工程(試作工程)での特性の評価時又はプロセッサ100の量産工程(製造工程)での試験時に実施される。
【0046】
まず、全ての遅延部130に同じ遅延量D1が設定される。なお、遅延量D1は、遅延量0でもよい。次に、命令発行部120から命令を発行して全ての演算器140に命令INSを実行させ、全ての演算器140が同時に動作を開始したときの電源ノイズが計測される。例えば、電源ノイズは、LSIテスタ等を使用して電源電圧の変化量として計測される。
【0047】
なお、
図7は、複数の周波数の電源ノイズが重畳された波形のうち、主要な周波数の電源ノイズの波形を示している。例えば、主要な周波数の電源ノイズ(電源電圧)の電圧は、演算器140が動作を開始したときに一時的に下降し、その後、電圧の上昇と下降を繰り返しながら電圧振幅が徐々に小さくなる。なお、接地電圧の電源ノイズがLSIテスタ等により計測されてもよい。
【0048】
次に、測定した電源ノイズの波形を使用して、演算器140が動作を開始した後に発生する電源ノイズの最初の周期T1が求められる。そして、複数の遅延部130にそれぞれ設定する遅延量が周期T1の2分の1の整数倍(1倍、2倍、3倍、...)にそれぞれ設定される。例えば、各遅延部130の遅延量は、
図6に示したように、遅延量1、遅延量2又は遅延量3に設定される。遅延量1は、電源ノイズの周期T1の2分の1である。複数の遅延部130は、ほぼ同じ数ずつ3つのグループに分けられ、グループ毎に遅延部130が遅延量1、遅延量2又は遅延量3に設定される。
【0049】
各グループの遅延部130の遅延量を電源ノイズの周期T1の2分の1の整数倍にそれぞれ設定した場合、3つのグループの電源ノイズの波形の位相はほぼ半周期ずつずれる。これにより、遅延量が周期T1の2分の1だけずれた2つのグループの電源ノイズの波形はほぼ逆位相になり、波形は互いに打ち消し合う。したがって、3つのグループの電源ノイズの総和での電源電圧の変化量(又は接地電圧の変化量)を小さくすることができる。すなわち、電源ノイズを低減することができる。
【0050】
図7に示す手法により、複数の遅延量が仮決定された後、仮決定された複数の遅延量が遅延部130のそれぞれに設定され、プロセッサ100の電源ノイズが評価される。そして、電源ノイズ(電源電圧の変化量)が予め決められた範囲に収まっていることが確認された場合、複数の遅延部130に設定する遅延量が最終的に決定される。一方、電源ノイズが予め決められた範囲を超えている場合、例えば、バンプ等の外部電源端子又は外部接地端子の数が増加されるなど、電源ノイズを抑える別のアプローチが実施される。
【0051】
なお、
図7に示す電源ノイズを計測することなく、複数の遅延部130の各々の遅延量を順次切り替え、様々な遅延量の組み合わせの各々において、電源ノイズが計測されてもよい。そして、電源ノイズが最も小さい遅延量の組み合わせであって、電源ノイズ(電源電圧の変化量)が予め決められた範囲に収まっている組み合わせが、遅延部130の遅延量として設定されてもよい。
【0052】
以上、この実施形態では、命令発行部120から発行された命令INSの演算器140への到達タイミングを遅延させる複数の遅延部130の少なくとも2つの遅延量を互いに相違させる。これにより、1つの命令を並列に実行する演算器140を有するプロセッサ100の電源ノイズを低減することができる。この結果、電源ノイズに起因するプロセッサ100の誤動作を抑制することができ、プロセッサ100の信頼性を向上することができる。
【0053】
複数の遅延部130のそれぞれに設定する遅延量は、複数の演算器140が同時に動作を開始するときに発生する電源ノイズの波形の周期の2分の1の整数倍(1倍、2倍、3倍、...)に設定される。これにより、遅延量が2分の1だけずれた2つの遅延部130にそれぞれ対応する演算器140で発生する電源ノイズの波形の位相をほぼ逆位相にすることができ、電源ノイズの打ち消し効果を高めることができる。
【0054】
複数の遅延部130をほぼ同じ数のグループに分け、グループ毎に遅延量を設定することで、グループにそれぞれ対応する演算器140で発生する電源ノイズの波形と振幅とをほぼ同じにすることができる。これにより、電源ノイズの波形の位相の打ち消し効果をさらに高めることができる。
【0055】
各遅延部130は、遅延量が変更可能であるため、例えば、製造されたプロセッサ100毎に遅延部130の遅延量を設定することができる。各遅延部130の遅延量を、命令INSが通過するフリップフロップFFの数により調整することで、遅延量の調整を容易にすることができる。また、各遅延部130の遅延量をSRAMで構成されたFIFOで調整することで、例えば、遅延量の調整段数が多い場合に遅延部130の回路規模を小さくすることができる。
【0056】
図8は、本発明のデータ処理装置の別の形態であるプロセッサの構成の一例を示すブロック図である。
図1と同様の要素は、同じ符号を付す。
図8に示すプロセッサ100Aは、
図1の8つの遅延部130の代わりに2つの遅延部130Aを有することを除き、
図1のプロセッサ100と同様の構成を有する。
【0057】
各遅延部130Aは、4つの演算器140に対応して設けられる。各遅延部130Aは、命令発行部120から受ける命令を演算器140毎に遅延させ、遅延させた命令を各演算器140に出力する。
【0058】
図9は、
図8の遅延部130Aの一例を示す回路図である。
図2と同様の要素は、同じ符号を付す。遅延部130Aは、遅延信号生成部131と4つの演算器140にそれぞれ対応する信号選択部132とを有する。なお、
図9では、説明の簡単化のため、遅延信号生成部131が3個のフリップフロップFFを有し、各信号選択部132が3個のセレクタSEL1-SEL3を有する例が示される。しかしながら、フリップフロップFFの数は、複数であればよく、セレクタSELの数は、複数であればよい。遅延信号生成部131及び信号選択部132は、遅延信号生成回路131及び信号選択回路132として実現されてもよい。
【0059】
遅延信号生成部131は、直列に接続された複数のフリップフロップFF(FF1、FF2、FF3)を有する。フリップフロップFF1は、命令発行部120から出力される命令INSを受け、受けた命令をフリップフロップFF2と各信号選択部132とに出力する。フリップフロップFF2は、フリップフロップFF1から出力される命令INSをフリップフロップFF3と各信号選択部132とに出力する。フリップフロップFF3は、フリップフロップFF2から出力される命令INSを各信号選択部132に出力する。
【0060】
各信号選択部132は、複数のセレクタSEL(SEL1、SEL2、SEL3)及びプログラム回路PRGMを有する。プログラム回路PRGMは、
図2のプログラム回路PRGMと同様に、遅延制御信号DCNT1-DCNT3の論理値を記憶し、記憶している論理値を有する遅延制御信号DCNT1-DCNT3を出力する。
【0061】
セレクタSEL1は、遅延制御信号DCNT1が論理1の場合、フリップフロップFF1から受ける命令INSをセレクタSEL2に出力する。セレクタSEL1は、遅延制御信号DCNT1が論理0の場合、命令発行部120から受ける命令INSをセレクタSEL2に出力する。
【0062】
セレクタSEL2は、遅延制御信号DCNT2が論理1の場合、フリップフロップFF2から受ける命令INSをセレクタSEL3に出力する。セレクタSEL2は、遅延制御信号DCNT2が論理0の場合、セレクタSEL1から受ける命令INSをセレクタSEL3に出力する。
【0063】
セレクタSEL3は、遅延制御信号DCNT3が論理1の場合、フリップフロップFF3から受ける命令INSを演算器140に出力する。セレクタSEL3は、遅延制御信号DCNT3が論理0の場合、セレクタSEL2から受ける命令INSを演算器140に出力する。
【0064】
これにより、遅延部130Aは、
図2の回路例2に示す遅延部130の4つと同様に動作する。この際、遅延部130Aは、4つの信号選択部132に共通のフリップフロップFF1-FF3を有するため、
図1に示す4つの遅延部130に比べて回路規模を削減することができる。
【0065】
なお、信号選択部132は、プログラム回路PRGMの代わりに、
図3のレジスタREG1と、遅延制御信号DCNT1-DCNT3に対応する3ビットの論理値をレジスタREG1に供給する制御バスCBUSとを有してもよい。
【0066】
以上、この実施形態においても、上述した実施形態と同様に、1つの命令を並列に実行する演算器140を有するプロセッサ100Aの電源ノイズを低減することができる。この結果、電源ノイズに起因するプロセッサ100Aの誤動作を抑制することができ、プロセッサ100Aの信頼性を向上することができる。さらに、この実施形態では、プロセッサ100Aに搭載される遅延部130Aの回路規模を、
図1のプロセッサ100に搭載される遅延部130の回路規模より小さくすることができる。この結果、プロセッサ100Aのチップサイズをプロセッサ100のチップサイズより小さくすることができる。
【0067】
図10は、本発明のデータ処理装置の別の形態であるDMAC(Direct Memory Access Controller)の構成の一例を示すブロック図である。
図1と同様の要素は、同じ符号を付す。
図10に示すDMAC200は、レジスタ210、シーケンス生成・命令発行部220、複数の遅延部130及び複数のデータ転送実行回路240を有する。なお、シーケンス生成・命令発行部220は、シーケンス生成・命令発行回路220として実現されてもよい。
【0068】
レジスタ210は、シーケンス生成・命令発行部220に接続される。レジスタ210に保持された情報は、シーケンス生成・命令発行部220から読み出し可能である。シーケンス生成・命令発行部220の出力は、複数の遅延部130の入力のそれぞれに共通に接続される。複数の遅延部130の出力は、対応するデータ転送実行回路240の入力に接続される。例えば、遅延部130は、
図2、
図3又は
図4に示した遅延部130のいずれかである。
【0069】
レジスタ210は、DMAC200の動作を制御するCPU300から転送されるソースアドレス、ディスティネーションアドレス、転送サイズ、転送パターン等を保持する。シーケンス生成・命令発行部220は、レジスタ210に保持された情報にしたがって、遅延部130を介して複数のデータ転送実行回路240のそれぞれにデータ転送命令を発行する。なお、データ転送命令に含まれるソースアドレス及びディスティネーションアドレスは、データ転送実行回路240毎に相違する。データ転送命令に含まれる転送サイズ及び転送パターンの一方又は両方は、全てのデータ転送実行回路240に共通でもよく、データ転送実行回路240毎に相違してもよい。
【0070】
各データ転送実行回路240は、シーケンス生成・命令発行部220からのデータ転送命令にしたがって、例えば、リードアクセス要求及びライトアクセス要求をバス310に交互に発行する。これにより、バス310に接続されるメモリのいずれかからメモリの他のいずれかにデータがDMA転送される。データ転送実行回路240は、データ転送命令を実行する実行回路の一例である。
【0071】
なお、DMAC200は、レジスタ210の代わりにディスクリプタを有してもよい。この場合、シーケンス生成・命令発行部220は、ディスクリプタが保持するDMA転送の情報(ソースアドレス、ディスティネーションアドレス等)をフェッチし、フェッチした情報を含むデータ転送命令を遅延部130を介してデータ転送実行回路240に出力してもよい。
【0072】
図10に示すDMAC200においても、
図1に示したプロセッサ100と同様に、所定数の遅延部130のグループ毎に異なる遅延量が設定され、複数のグループに属する遅延部130の数は、ほぼ等しい。また、
図7と同様に、全ての遅延部130に同じ遅延量が設定された状態で、全てのデータ転送実行回路240の動作が同時に開始され、電源ノイズの周期T1が計測され、各遅延部130の遅延量が周期T1の2分の1の整数倍に設定されてもよい。
【0073】
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。例えば、データ転送命令を並列に実行するデータ転送実行回路240を有するDMAC200の電源ノイズを低減することができる。この結果、電源ノイズに起因するDMAC200の誤動作を抑制することができ、DMAC200の信頼性を向上することができる。
【0074】
複数の遅延部130のそれぞれに、複数の演算器140が同時に動作を開始するときに発生する電源ノイズの波形の周期の2分の1の整数倍の遅延量を設定することで、データ転送実行回路240の動作に対応してそれぞれ発生する電源ノイズの波形の位相をほぼ逆位相にすることができる。これにより、電源ノイズの打ち消し効果を高めることができる。ほぼ同じ数の遅延部130毎に遅延量を設定することで、電源ノイズの波形の位相の打ち消し効果をさらに高めることができる。
【0075】
図11は、本発明のデータ処理装置のさらなる別の形態を示すブロック図である。
図1と同様の要素は、同じ符号を付す。
図11に示すデータ処理装置400は、例えば、ラックの形態を有するサーバ等である。データ処理装置400は、
図1に示したプロセッサ100と同様の命令フェッチ部110、命令発行部120、複数の遅延部430、複数の演算器140及び複数のレジスタファイル150を有する。なお、遅延部430は、遅延回路430として実現されてもよい。
【0076】
但し、命令フェッチ部110及び命令発行部120は、基板BRD1に実装される1つの半導体チップCPに搭載され、演算器140及びレジスタファイル150のペアは、基板BRD2に実装される1つの半導体チップCP2にそれぞれ搭載される。基板BRD1及び複数の基板BRD2は、データ処理装置400の筐体であるラック等に収納される。
【0077】
例えば、遅延部430は、信号を伝送するために基板BRD1、BRD2間に配置される光インタフェース(I/F)内に設けられてもよい。この場合、基板BRD1の命令発行部120と基板BRD2の演算器140とは、光インタフェースを介して相互に接続される。光インタフェースは、光コネクタと光ケーブルと光の伝送路中に設けられる光ループ回路とを含む。複数の遅延部430の各々は、光ループ回路により形成される。例えば、各遅延部430の遅延量は、光ループ回路内での光信号のループ回数を制御することで設定される。なお、光インタフェース(すなわち、遅延部430)は、基板BRD1、BRD2の一方に搭載されてもよい。
【0078】
各遅延部430に設定される遅延量は、
図7と同様に、全ての演算器140を同時に動作させたときに発生する電源ノイズの周期T1の2分の1の整数倍(1倍、2倍、3倍、...)にそれぞれ設定される。例えば、複数の遅延部430は、ほぼ同じ数ずつ複数のグループに分けられ、グループ毎に遅延部130の遅延量が相違するように設定される。
【0079】
なお、複数の基板BRD2のうちの幾つかは、
図11に示すラックとは別のラックに収納されてもよい。この場合にも、基板BRD1の命令発行部120と、別のラックに収納される基板BRD2の演算器140とは、遅延部430を介して互いに接続される。
【0080】
なお、半導体チップCP1、CP2は、1つの基板に搭載されてもよい。この場合、遅延部430は、個別の半導体チップとして基板に搭載され、あるいは、半導体チップCP1、CP2の一方に搭載されてもよい。データ処理装置400は、基板の形態を有する。また、遅延部430は、光インタフェースの代わりにFPGA(Field-Programmable Gate Array)又はアナログ回路(抵抗値)等により構成されてもよい。
【0081】
以上、この実施形態においても、
図1から
図7に示した実施形態と同様の効果を得ることができる。さらに、
図11に示すデータ処理装置400では、ラック内に供給される電源電圧及び接地電圧の電源ノイズを低減することができる。この結果、電源ノイズに起因するデータ処理装置400の誤動作を抑制することができ、データ処理装置400の信頼性を向上することができる。
【0082】
なお、上述した実施形態の遅延部130、130A、430は、回路であり、半導体チップまたは基板に搭載される。また、上述した実施形態では、遅延部130、130Aの遅延量を、プログラム回路PRGM又はレジスタREG1に記憶される論理値に応じて可変にする例が説明された。しかしながら、遅延部130、130Aの遅延量は、
図7等に示した遅延量の決定方法により決定された遅延量に固定されてもよい。この場合、遅延部130、130Aは、決定された遅延量に応じた数のフリップフロップFFを直列に接続して構成され、
図2及び
図3に示したプログラム回路PRGM、レジスタREG1及びセレクタSELを持たない。例えば、遅延部130、130Aは、固定の回路として演算器140等とともにプロセッサ100、100A内に作り込まれる。
【0083】
図12は、
図1に示したプロセッサ100が搭載される計算機のハードウェア構成の一例を示すブロック図である。
図12では、計算機は、一例として、プロセッサ100と、主記憶装置30(メモリ)と、補助記憶装置40(メモリ)と、ネットワークインタフェース50と、デバイスインタフェース60と、を備え、これらがバス510を介して接続されたコンピュータ500として実現されてもよい。なお、コンピュータ500は、バス510に接続される経路とは別に、プロセッサ100とバス510との間に、
図10に示したDMAC200を有してもよい。
【0084】
図12のコンピュータ500は、各構成要素を一つ備えているが、同じ構成要素を複数備えていてもよい。また、
図12では、1台のコンピュータ500が示されているが、ソフトウェアが複数台のコンピュータにインストールされて、当該複数台のコンピュータそれぞれがソフトウェアの同一の又は異なる一部の処理を実行してもよい。この場合、コンピュータそれぞれがネットワークインタフェース50等を介して通信して処理を実行する分散コンピューティングの形態であってもよい。つまり、1又は複数の記憶装置に記憶された命令を1台又は複数台のコンピュータ500が実行することで機能を実現するシステムが構成されてもよい。また、端末から送信された情報をクラウド上に設けられた1台又は複数台のコンピュータ500で処理し、この処理結果を端末に送信するような構成であってもよい。
【0085】
各種演算は、コンピュータ500に搭載される1又は複数のプロセッサ100を用いて、又はネットワークを介した複数台のコンピュータ500を用いて、並列処理で実行されてもよい。また、各種演算が、プロセッサ100内に複数ある演算コアに振り分けられて、並列処理で実行されてもよい。また、本開示の処理、手段等の一部又は全部は、ネットワークを介してコンピュータ500と通信可能なクラウド上に設けられたプロセッサ及び記憶装置の少なくとも一方により実現されてもよい。このように、前述した実施形態における各装置は、1台又は複数台のコンピュータによる並列コンピューティングの形態であってもよい。
【0086】
プロセッサ100は、少なくともコンピュータの制御又は演算のいずれかを行う電子回路(処理回路、Processing circuit、Processing circuitry、CPU、GPU、FPGA、ASIC等)であってもよい。また、プロセッサ100は、汎用プロセッサ、特定の演算を実行するために設計された専用の処理回路又は汎用プロセッサと専用の処理回路との両方を含む半導体装置のいずれであってもよい。また、プロセッサ100は、光回路を含むものであってもよいし、量子コンピューティングに基づく演算機能を含むものであってもよい。
【0087】
プロセッサ100は、コンピュータ500の内部構成の各装置等から入力されたデータやソフトウェアに基づいて演算処理を行ってもよく、演算結果や制御信号を各装置等に出力してもよい。プロセッサ100は、コンピュータ500のOS(Operating System)や、アプリケーション等を実行することにより、コンピュータ500を構成する各構成要素を制御してもよい。
【0088】
主記憶装置30は、プロセッサ100が実行する命令及び各種データ等を記憶してもよく、主記憶装置30に記憶された情報がプロセッサ100により読み出されてもよい。補助記憶装置40は、主記憶装置30以外の記憶装置である。なお、これらの記憶装置は、電子情報を格納可能な任意の電子部品を意味するものとし、半導体のメモリでもよい。半導体のメモリは、揮発性メモリ又は不揮発性メモリのいずれでもよい。コンピュータ500において各種データ等を保存するための記憶装置は、主記憶装置30又は補助記憶装置40により実現されてもよく、プロセッサ100に内蔵される内蔵メモリにより実現されてもよい。
【0089】
コンピュータ500が、少なくとも1つの記憶装置(メモリ)と、この少なくとも1つの記憶装置に接続(結合)される少なくとも1つのプロセッサ100で構成される場合、記憶装置1つに対して、少なくとも1つのプロセッサ100が接続されてもよい。また、1つのプロセッサ100に対して、少なくとも1つの記憶装置が接続されてもよい。また、複数のプロセッサ100のうち少なくとも1つのプロセッサ100が、複数の記憶装置のうち少なくとも1つの記憶装置に接続される構成を含んでもよい。また、複数台のコンピュータ500に含まれる記憶装置とプロセッサ100によって、この構成が実現されてもよい。さらに、記憶装置がプロセッサ100と一体になっている構成(例えば、L1キャッシュ、L2キャッシュを含むキャッシュメモリ)を含んでもよい。
【0090】
ネットワークインタフェース50は、無線又は有線により、通信ネットワーク600に接続するためのインタフェースである。ネットワークインタフェース50は、既存の通信規格に適合したもの等、適切なインタフェースを用いればよい。ネットワークインタフェース50により、通信ネットワーク600を介して接続された外部装置710と情報のやり取りが行われてもよい。なお、通信ネットワーク600は、WAN(Wide Area Network)、LAN(Local Area Network)、PAN(Personal Area Network)等の何れか又はそれらの組み合わせであってもよく、コンピュータ500と外部装置710との間で情報のやり取りが行われるものであればよい。WANの一例としてインターネット等があり、LANの一例としてIEEE802.11やイーサネット(登録商標)等があり、PANの一例としてBluetooth(登録商標)やNFC(Near Field Communication)等がある。
【0091】
デバイスインタフェース60は、外部装置720と直接接続するUSB等のインタフェースである。
【0092】
外部装置710はコンピュータ500とネットワークを介して接続されている装置である。外部装置720はコンピュータ500と直接接続されている装置である。
【0093】
外部装置710又は外部装置720は、一例として、入力装置であってもよい。入力装置は、例えば、カメラ、マイクロフォン、モーションキャプチャ、各種センサ、キーボード、マウス、タッチパネル等のデバイスであり、取得した情報をコンピュータ500に与える。また、パーソナルコンピュータ、タブレット端末、スマートフォン等の入力部とメモリとプロセッサを備えるデバイスであってもよい。
【0094】
また、外部装置710又は外部装置720は、一例として、出力装置でもよい。出力装置は、例えば、LCD(Liquid Crystal Display)、有機EL(Electro Luminescence)パネル等の表示装置であってもよいし、音声等を出力するスピーカ等であってもよい。また、パーソナルコンピュータ、タブレット端末又はスマートフォン等の出力部とメモリとプロセッサを備えるデバイスであってもよい。
【0095】
また、外部装置710又は外部装置720は、記憶装置(メモリ)であってもよい。例えば、外部装置710はネットワークストレージ等であってもよく、外部装置720はHDD等のストレージであってもよい。
【0096】
また、外部装置710又は外部装置720は、コンピュータ500の構成要素の一部の機能を有する装置でもよい。つまり、コンピュータ500は、外部装置710又は外部装置720に処理結果の一部又は全部を送信してもよいし、外部装置710又は外部装置720から処理結果の一部又は全部を受信してもよい。
【0097】
本明細書(請求項を含む)において、「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)以外の他の要素を加えることも含む。
【0098】
本明細書(請求項を含む)において、「データを入力として/を用いて/データに基づいて/に従って/に応じて」等の表現(同様な表現を含む)が用いられる場合は、特に断りがない場合、データそのものを用いる場合や、データに何らかの処理を行ったもの(例えば、ノイズ加算したもの、正規化したもの、データから抽出した特徴量、データの中間表現等)を用いる場合を含む。また、「データを入力として/を用いて/データに基づいて/に従って/に応じて」何らかの結果が得られる旨が記載されている場合(同様な表現を含む)、特に断りがない場合、当該データのみに基づいて当該結果が得られる場合や、当該データ以外の他のデータ、要因、条件及び/又は状態にも影響を受けて当該結果が得られる場合を含む。また、「データを出力する」旨が記載されている場合(同様な表現を含む)、特に断りがない場合、データそのものを出力として用いる場合や、データに何らかの処理を行ったもの(例えば、ノイズ加算したもの、正規化したもの、データから抽出した特徴量、各種データの中間表現等)を出力として用いる場合を含む。
【0099】
本明細書(請求項を含む)において、「接続される(connected)」及び「結合される(coupled)」との用語が用いられる場合は、直接的な接続/結合、間接的な接続/結合、電気的(electrically)な接続/結合、通信的(communicatively)な接続/結合、機能的(operatively)な接続/結合、物理的(physically)な接続/結合等のいずれをも含む非限定的な用語として意図される。当該用語は、当該用語が用いられた文脈に応じて適宜解釈されるべきであるが、意図的に或いは当然に排除されるのではない接続/結合形態は、当該用語に含まれるものして非限定的に解釈されるべきである。
【0100】
本明細書(請求項を含む)において、「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)されていればよい。
【0101】
本明細書(請求項を含む)において、含有又は所有を意味する用語(例えば、「含む(comprising/including)」、「有する(having)」等)が用いられる場合は、当該用語の目的語により示される対象物以外の物を含有又は所有する場合を含む、open-endedな用語として意図される。これらの含有又は所有を意味する用語の目的語が数量を指定しない又は単数を示唆する表現(a又はanを冠詞とする表現)である場合は、当該表現は特定の数に限定されないものとして解釈されるべきである。
【0102】
本明細書(請求項を含む)において、ある箇所において「1つ又は複数(one or more)」、「少なくとも1つ(at least one)」等の表現が用いられ、他の箇所において数量を指定しない又は単数を示唆する表現(a又はanを冠詞とする表現)が用いられているとしても、後者の表現が「1つ」を意味することを意図しない。一般に、数量を指定しない又は単数を示唆する表現(a又はanを冠詞とする表現)は、必ずしも特定の数に限定されないものとして解釈されるべきである。
【0103】
本明細書において、ある実施形態の有する特定の構成について特定の効果(advantage/result)が得られる旨が記載されている場合、別段の理由がない限り、当該構成を有する他の1つ又は複数の実施形態についても当該効果が得られると理解されるべきである。但し、当該効果の有無は、一般に種々の要因、条件及び/又は状態に依存し、当該構成により必ず当該効果が得られるものではないと理解されるべきである。当該効果は、種々の要因、条件及び/又は状態が満たされたときに実施形態に記載の当該構成により得られるものに過ぎず、当該構成又は類似の構成を規定したクレームに係る発明において、当該効果が必ずしも得られるものではない。
【0104】
本明細書(請求項を含む)において、複数のハードウェアが所定の処理を行う場合、各ハードウェアが協働して所定の処理を行ってもよいし、一部のハードウェアが所定の処理の全てを行ってもよい。また、一部のハードウェアが所定の処理の一部を行い、別のハードウェアが所定の処理の残りを行ってもよい。本明細書(請求項を含む)において、「1又は複数のハードウェアが第1の処理を行い、前記1又は複数のハードウェアが第2の処理を行う」等の表現(同様な表現を含む)が用いられている場合、第1の処理を行うハードウェアと第2の処理を行うハードウェアは同じものであってもよいし、異なるものであってもよい。つまり、第1の処理を行うハードウェア及び第2の処理を行うハードウェアが、前記1又は複数のハードウェアに含まれていればよい。なお、ハードウェアは、電子回路、電子回路を含む装置等を含んでよい。
【0105】
本明細書(請求項を含む)において、複数の記憶装置(メモリ)がデータの記憶を行う場合、複数の記憶装置のうち個々の記憶装置は、データの一部のみを記憶してもよいし、データの全体を記憶してもよい。また、複数の記憶装置のうち一部の記憶装置がデータを記憶する構成を含んでもよい。
【0106】
以上、本開示の実施形態について詳述したが、本開示は上記した個々の実施形態に限定されるものではない。特許請求の範囲に規定された内容及びその均等物から導き出される本発明の概念的な思想と趣旨を逸脱しない範囲において、種々の追加、変更、置き換え、部分的削除等が可能である。例えば、前述した実施形態において、数値又は数式を説明に用いている場合、これらは例示的な目的で示されたものであり、本開示の範囲を限定するものではない。また、実施形態で示した各動作の順序も例示的なものであり、本開示の範囲を限定するものではない。
【0107】
本発明の態様は、例えば、以下のとおりである。
<1>
命令を発行する命令発行部と、
前記命令発行部から発行された命令を並列に実行する複数の実行回路と、
前記命令発行部と前記複数の実行回路との間に配置され、前記命令発行部から受ける命令の前記実行回路への到達を遅延させる複数の遅延部と、を有し、
前記複数の実行回路の少なくとも2つに供給される命令の到達タイミングは互いに異なる
データ処理装置。
<2>
前記複数の遅延部の遅延量の差は、前記複数の実行回路が同時に動作を開始するときに発生する電源ノイズの波形の周期の2分の1の整数倍である
<1>に記載のデータ処理装置。
<3>
複数の遅延量の各々が設定される前記遅延部の数は、ほぼ等しい
<2>に記載のデータ処理装置。
<4>
前記複数の遅延部に設定する遅延量を示す遅延量情報を保持する遅延量保持部を有し、
前記複数の遅延部の各々に設定される遅延量は、前記遅延量保持部が保持する遅延量情報に応じて設定される
<1>ないし<3>のいずれか1項に記載のデータ処理装置。
<5>
前記複数の遅延部の各々は、直列に接続可能な複数のフリップフロップを有し、
前記フリップフロップの直列の接続数は、前記遅延量保持部が保持する遅延量情報に応じて設定される
<4>に記載のデータ処理装置。
<6>
前記複数の遅延部の各々は、ライトポインタとリードポインタとにより制御され、メモリで構成されたFIFOを有し、
前記FIFOへの命令の格納毎に、前記ライトポインタと前記リードポインタとが連動して更新され、
前記ライトポインタの値と前記リードポインタの値との差により、前記複数の遅延部の各々遅延量が設定される
<4>に記載のデータ処理装置。
<7>
前記複数の実行回路は、第1の周波数を有するクロックに同期してそれぞれ動作し、
前記複数の遅延部の少なくとも2つによって遅延された命令が前記実行回路にそれぞれ到達する時間差は、前記クロックの少なくとも1周期分の時間である
<1>ないし<3>のいずれか1項に記載のデータ処理装置。
<8>
前記命令発行部は、演算命令を発行し、
前記複数の実行回路の各々は、前記演算命令に基づいて演算を実行する演算器である
<1>ないし<3>のいずれか1項に記載のデータ処理装置。
<9>
前記命令発行部は、データ転送命令を発行し、
前記複数の実行回路の各々は、前記データ転送命令に基づいてデータ転送を実行するデータ転送実行回路である
<1>ないし<3>のいずれか1項に記載のデータ処理装置。
<10>
前記命令発行部と前記複数の実行回路と前記複数の遅延部とは、1つの半導体チップ内に搭載される
<1>ないし<3>のいずれか1項に記載のデータ処理装置。
<11>
前記命令発行部と前記複数の実行回路とは、互いに異なる半導体チップにそれぞれ搭載される
<1>ないし<3>のいずれか1項に記載のデータ処理装置。
<12>
少なくとも1つの半導体チップがそれぞれ搭載される複数の基板を有し、
前記命令発行部と前記複数の実行回路とは、互いに異なる前記基板の前記半導体チップにそれぞれ搭載される
<1>ないし<3>のいずれか1項に記載のデータ処理装置。
【符号の説明】
【0108】
100、100A プロセッサ
110 命令フェッチ部
120 命令発行部
130、130A 遅延部
131 遅延信号生成部
132 信号選択部
140 演算器
150 レジスタファイル
200 DMAC
210 レジスタ
220 シーケンス生成・命令発行部
240 データ転送実行回路
300 CPU
310 バス
400 データ処理装置
430 遅延部
BRD1、BRD2 基板
CBUS 制御バス
CP1、CP2 半導体チップ
DCNT1-DCNT3 遅延制御信号
DIFP ポインタ差
FCNT 制御回路
FF(FF1、FF2、FF3) フリップフロップ
INS 命令
PRGM プログラム回路
REG1、REG2 レジスタ
RPTR リードポインタ
SEL(SEL0、SEL1、SEL2) セレクタ
WPTR ライトポインタ