Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP7287147B2 - 演算処理装置および演算処理装置の制御方法 - Google Patents
[go: Go Back, main page]

JP7287147B2 - 演算処理装置および演算処理装置の制御方法 - Google Patents

演算処理装置および演算処理装置の制御方法 Download PDF

Info

Publication number
JP7287147B2
JP7287147B2 JP2019118414A JP2019118414A JP7287147B2 JP 7287147 B2 JP7287147 B2 JP 7287147B2 JP 2019118414 A JP2019118414 A JP 2019118414A JP 2019118414 A JP2019118414 A JP 2019118414A JP 7287147 B2 JP7287147 B2 JP 7287147B2
Authority
JP
Japan
Prior art keywords
arithmetic
instruction
unit
executing
arithmetic processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019118414A
Other languages
English (en)
Other versions
JP2021005209A (ja
Inventor
龍一 西山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2019118414A priority Critical patent/JP7287147B2/ja
Priority to US16/889,878 priority patent/US11436008B2/en
Publication of JP2021005209A publication Critical patent/JP2021005209A/ja
Application granted granted Critical
Publication of JP7287147B2 publication Critical patent/JP7287147B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/12Synchronisation of different clock signals provided by a plurality of clock generators
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/14Time supervision arrangements, e.g. real time clock
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3871Asynchronous instruction pipeline, e.g. using handshake signals between stages
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Multi Processors (AREA)
  • Microcomputers (AREA)
  • Advance Control (AREA)

Description

本発明は、演算処理装置および演算処理装置の制御方法に関する。
半導体集積回路は、同時に動作する回路の数が多いほど、電源ノイズが発生しやすい。例えば、複数のメモリ回路の上位ビット群と下位ビット群とを、互いに異なるデータバッファLSI(Large-Scale Integration)を介してデータバスに接続することで、データバッファLSIの同時スイッチングノイズが低減される(例えば、特許文献1参照)。また、クロックに同期して動作する複数の回路モジュールにクロックの供給を開始する場合、クロックの供給開始タイミングをずらすことで、回路モジュールで発生する突入電流の大きさが抑えられ、電圧降下が抑制される(例えば、特許文献2参照)。
特開平6-35798号公報 国際公開第2006/51612号
CPU(Central Processing Unit)やGPU(Graphics Processing Unit)等の演算処理装置においても、複数の演算コアが演算を同時に開始する場合、同時スイッチングノイズ(電源ノイズ)が発生する。近時、処理性能を向上するために、演算処理装置に搭載される演算コアの数や演算器の数は増加する傾向にあり、同時スイッチングノイズは大きくなる傾向にある。同時スイッチングノイズによる演算処理装置の誤動作を抑止するためには、例えば、動作周波数を下げて動作マージンを確保することが考えられるが、この場合、演算命令の実行効率が低下してしまう。
1つの側面では、本発明は、複数の演算コアを有する演算処理装置の同時スイッチングノイズを削減して演算命令の実行効率の低下を抑止することを目的とする。
一つの観点によれば、演算処理装置は、複数の演算処理部を有し、前記複数の演算処理部の各々は、演算命令を保持する命令保持部と、前記命令保持部から発行される演算命令を実行する演算部と、所定時間を計測する計測部と、を有し、前記命令保持部は、前記演算部が演算命令を実行していないときに演算命令を保持した場合、前記計測部を起動し、前記計測部が前記所定時間を計測したことに基づいて、保持した演算命令を前記演算部に発行し、前記演算部が演算命令を実行しているときに演算命令を保持した場合、前記計測部を起動することなく、前記演算部が実行中の演算命令を完了したことに基づいて、保持した演算命令を前記演算部に発行し、前記所定時間は、少なくとも2つの前記演算処理部で異なる。
1つの側面では、本発明は、複数の演算コアを有する演算処理装置の同時スイッチングノイズを削減して演算命令の実行効率の低下を抑止することができる。
一実施形態におけるプロセッサの一例を示すブロック図である。 図1のプロセッサの動作の一例を示す説明図である。 他のプロセッサの動作の一例(比較例)を示す説明図である。 他のプロセッサの動作の別の例(比較例)を示す説明図である。 別の実施形態におけるプロセッサを含むシステムの一例を示すブロック図である。 図5のプロセッサの演算コアの配置の一例を示すブロック図である。 図5のプロセッサの動作の一例を示す説明図である。 図5の演算コアが演算命令を受信してから演算命令の実行を開始するまでの動作の一例を示すフロー図である。 別の実施形態のプロセッサにおける演算コアの動作順の一例を示す説明図である。 図9のプロセッサの動作の一例を示す説明図である。 図9のプロセッサにおける演算コアの動作順の別の例を示す説明図である。 他のプロセッサの動作の一例(比較例)を示す説明図である。 他のプロセッサの動作の別の例(比較例)を示す説明図である。 別の実施形態における演算処理装置を含むシステムの一例を示すブロック図である。
以下、図面を用いて実施形態が説明される。
図1は、一実施形態におけるプロセッサ100の一例を示す。プロセッサ100は、CPU、GPUまたはDSP(Digital Signal Processor)等であり、演算命令を実行するn個の演算コア1(識別番号#1、...、#n)を有する。すなわち、プロセッサ100は、マルチコアLSIである。プロセッサ100は、演算処理装置の一例であり、演算コア1は、演算処理部の一例である。プロセッサ100は、SIMD(Single Instruction Multiple Data)演算命令を実行する機能を有してもよい。なお、プロセッサ100は、ニューラルネットワークにおける画像処理等の学習または推論に使用される専用のプロセッサでもよい。
各演算コア1は、演算命令を保持する命令キュー2、命令キュー2から発行される演算命令を実行する演算部3および所定時間を計測するタイマー4を有する。命令キュー2は、命令保持部の一例であり、タイマー4は、計測部の一例である。例えば、演算コア1は、互いに同じ構成を有し、演算命令を並列に実行可能である。以下の説明では、演算コア1を区別して説明する場合、演算コア#1のように、識別番号#で表す場合がある。
命令キュー2は、例えば、演算命令を保持する2つのエントリENTを有する。命令キュー2は、エントリENTに空きがある場合、プロセッサ100の外部から供給される演算命令をエントリENTに格納する。なお、命令キュー2が有するエントリENTの数は、2つ以外でもよい。
命令キュー2は、全てのエントリENTが空いているときに演算命令がエントリENTの1つに格納された場合、タイマー4を起動させる指示をタイマー4に発行する。この場合、命令キュー2は、タイマー4から計測完了の通知を受信したことに基づいてエントリENTに保持した演算命令を演算部3に発行する。
命令キュー2は、エントリENTに保持している演算命令の実行が完了したことを示す完了通知を演算部3から受信した場合、エントリENTに保持している演算命令を破棄する。このため、命令キュー2のエントリENTのいずれかに演算命令が格納されている場合、タイマー4がカウント動作をしている場合を除いて、演算部3により演算命令が実行されていることを示す。
命令キュー2は、エントリENTのいずれかに演算命令を保持しているときに、他の空いているエントリENTに演算命令が格納された場合、タイマー50を起動しない。そして、命令キュー2は、演算部3により実行中の演算命令の完了を待ってから、エントリENTに保持している演算命令を演算部3に発行する。
演算部3は、命令キュー2から発行される演算命令を実行する演算器を有する。演算部3は、演算命令の実行が完了した場合、完了通知を命令キュー2に出力する。なお、演算部3が有する演算器の数は、1つに限定されず、複数でもよい。また、演算部3が複数の演算器を有する場合、演算器の種類は、1種類であっても複数種類であってもよい。例えば、演算器の種類として浮動小数点演算器、固定小数点演算器、論理演算器等がある。また、浮動小数点演算器および固定小数点演算器の種類として、加算器、乗算器、除算器、積和演算器等がある。
例えば、タイマー4は、図示しないクロックに同期して動作するカウンタを有する。タイマー4は、命令キュー2からの起動指示に基づいて、カウント動作を開始し、カウンタの値が、ウェイト値WAIT(WAIT1-WAITnのいずれか)だけ更新された場合、命令キュー2に計測完了の通知を出力する。例えば、タイマー4がカウントするウェイト値WAITは、演算コア1に応じた値に設定され、全ての演算コア10に共通の値ではない。
図1に示す例では、各タイマー4は、自演算コア1の識別番号#1-#nの値と同じ値が付けられたウェイト値WAITを使用して動作する。図1に示す例では、演算コア1(#1)のタイマー4は、ウェイト値WAIT1を使用してカウント動作し、演算コア1(#n)のタイマー4は、ウェイト値WAITnを使用してカウント動作する。
なお、タイマー4は、ウェイト値WAITを保持するレジスタを有してもよい。また、タイマー4は、カウンタ値が”0”からウェイト値WAITになるまでカウント動作を繰り返すインクリメンタでもよく、カウンタ値がウェイト値WAITから“0”になるまでカウント動作を繰り返すデクリメンタでもよい。
図2は、図1のプロセッサ100の動作の一例を示す。すなわち、図2は、プロセッサ100の制御方法の一例を示す。図2では、説明を分かりやすくするために、2つの演算コア#1、#nの動作を示す。図2では、演算コア#1、#nは、演算命令Aを同じタイミングで受信した後、演算命令Bを同じタイミングで受信する。例えば、演算コア#1、#nが受信する演算命令Aは、同一の演算命令であるが、異なる種類の演算命令でもよい。同様に、演算コア#1、#nが受信する演算命令Bは、同一の演算命令であるが、異なる種類の演算命令でもよい。
図2の開始時において、各演算コア#1、#nの命令キュー2は空の状態である。演算コア#1の命令キュー2は、演算命令Aを受信した場合、空いているエントリENTに演算命令Aを格納し、タイマー4を起動する(図2(a)、(b))。タイマー4は、ウェイト値WAIT1に対応する所定時間を計測し、所定時間の経過に基づいて、計測完了を命令キュー2に通知する。命令キュー2は、計測完了通知に基づいて、保持している演算命令Aを演算部3に発行する(図2(c))。演算部3は、発行された演算命令Aを実行する。演算部3による演算命令の実行の開始により、例えば、電源線に流れる電流が急激に増加し、スイッチングノイズが発生する(図2(d))。
演算コア#nの命令キュー2は、演算命令Aの受信した場合、演算コア#1と同様に、空いているエントリENTに演算命令Aを格納し、タイマー4を起動する(図2(e)、(f))。タイマー4は、ウェイト値WAITnに対応する所定時間を計測し、所定時間の経過に基づいて、計測完了を命令キュー2に通知する。命令キュー2は、計測完了通知に基づいて、保持している演算命令Aを演算部3に発行する(図2(g))。
ここで、ウェイト値WAITnに対応する所定時間は、ウェイト値WAIT1に対応する所定時間より長いため、演算コア#nの演算部3は、演算コア#1が演算命令Aの実行を開始した後に、演算命令Aを受信し、演算命令Aの実行を開始する。演算コア#nの演算部3による演算命令Aの実行の開始により、スイッチングノイズが発生する(図2(h))。
しかしながら、演算部3による演算命令Aの実行開始タイミングが演算コア#1、#nで相互にずれているため、スイッチングノイズが重畳されることを抑止できる。なお、演算コア#nによる演算命令Aの実行開始時に、演算コア#1は演算命令Aを実行中であり、電源電流を消費しているため、演算コア#1が演算命令Aを実行していないときに比べてスイッチングノイズは緩和される。
演算コア#1、#nは、演算命令Aを実行中に演算命令Bを受信する。演算コア#1、#nの命令キュー2の各々は、エントリENTが1つ空いているため、受信した演算命令Bを空いているエントリENTに格納する(図2(i)、(j))。演算コア#1、#nの命令キュー2の各々は、自演算コア#1、#nの演算部3が演算命令Aを実行中であるため、演算命令Aの実行が完了するまで演算部3への演算命令の発行を待機する(図2(k)、(l))。命令キュー2は、複数のエントリENTを有するため、演算部3が演算命令を実行中にも、新たな演算命令を受信することができ、受信した演算命令をエントリENTに格納することができる。
演算コア#1の演算部3は、演算命令Aの実行の完了に基づいて、命令キュー2に完了通知を発行する(図2(m))。演算コア#1の命令キュー2は、演算部3から演算命令Aの完了通知を受信したことに基づいて、エントリENTに保持している演算命令Aを破棄し、タイマー4を起動することなく、演算命令Bを演算部3に発行する(図2(n))。このように、命令キュー2は、演算命令が実行されている間にエントリENTに演算命令が格納された場合、タイマー4を起動することなく、演算命令を演算部3に発行する。
例えば、命令キュー2は、演算命令の演算部3への発行から完了通知の受信まで、演算命令が実行中であると判定する。演算命令の実行中に新たな演算命令を受信した場合、タイマー4を起動することなく演算命令を連続して実行することで、所定の電流が電源線に流れ続けるため、スイッチングノイズの発生を抑止することができる(図2(o))。
演算コア#nの演算部3は、演算命令Aの実行の完了に基づいて、命令キュー2に完了通知を発行する(図2(p))。演算コア#nの命令キュー2は、演算部3から演算命令Aの完了通知を受信したことに基づいて、エントリENTに保持している演算命令Aを破棄し、タイマー4を起動することなく、演算命令Bを演算部3に発行する(図2(q))。演算コア#nにおいても、演算命令の実行中に新たな演算命令を受信した場合、タイマー4を起動することなく演算命令を連続して実行することで、スイッチングノイズの発生を抑止することができる(図2(r))。
演算コア#1の演算部3は、演算命令Bの実行の完了後、命令キュー2に完了通知を発行する(図2(s))。演算コア#1の命令キュー2には、新たに実行させる演算命令が入っていないため、この後、演算コア#1は演算命令を実行しない。演算コア#1の演算部3で消費する電流が急激に減少するため、演算部3による演算命令Bの実行の完了に伴い、演算コア#1でスイッチングノイズが発生する(図2(t))。なお、演算コア#nによる演算命令Bの実行開始時に、演算コア#nは演算命令Bを実行中であり、電源電流を消費しているため、演算コア#nが演算命令Bを実行していないときに比べてスイッチングノイズは緩和される。
演算コア#nの演算部3は、演算命令Bの実行の完了後、命令キュー2に完了通知を発行する(図2(u))。演算コア#nの命令キュー2には、新たに実行させる演算命令が入っていないため、この後、演算コア#nは演算命令を実行しない。演算コア#nの演算部3で消費する電流が急激に減少するため、演算部3による演算命令Bの実行の完了に伴い、演算コア#nでスイッチングノイズが発生する(図2(v))。しかしながら、演算部3による演算命令Bの実行完了タイミングが演算コア#1、#nで相互にずれているため、スイッチングノイズが重畳されることを抑止できる。このように、複数の演算コア#に同じタイミングで供給される共通の演算命令の実行タイミングを相互にずらすことで、スイッチングノイズの重畳を抑止することができ、同時スイッチングノイズを削減することができる。
なお、演算部3での演算命令の実行開始を遅らせる場合にも、最初の演算命令の実行の遅れが、後続の演算命令の実行の遅れになるだけであり、演算命令は、複数の演算コア#1、#nで並列に実行される。演算命令の実行の遅れが徐々に大きくなることがないため、演算命令の実行開始を遅らせる場合にも、演算命令の実行効率(スループット)はほとんど低下しない。このため、ベンチマークテストにおいても、性能はほとんど低下しない。
例えば、スイッチングノイズの発生により、電源電圧が低下し、あるいは、接地電圧が上昇する場合、回路動作が遅くなるおそれがある。このため、プロセッサ100のタイミング設計(電源設計)では、想定される最大のスイッチングノイズが発生した場合にも、信号をラッチできるように、過剰なタイミングマージンが設定される。スイッチングノイズを考慮したタイミング設計により、プロセッサ100の最大動作周波数を下げる場合、プロセッサ100の処理性能は低下してしまう。
これに対して、この実施形態では、スイッチングノイズ(電源ノイズ)の重畳を抑止できるため、想定される最大のスイッチングノイズを下げることができる。これにより、タイミング設計において、過剰なタイミングマージンを設定しなくてよいため、電源設計の設計マージンを削減することができる。この結果、電源ノイズに起因してプロセッサ100の最大動作周波数を下げることを抑止でき、プロセッサ100の処理性能の低下を抑止することができる。
なお、複数の演算コア#に同じタイミングで供給される演算命令は、共通の演算命令でなくてもよい。また、所定数の演算コア#に共通に供給される演算命令と、他の所定数の演算コア#に共通に供給される他の演算命令との供給タイミングが、互いに同じであってもよい。
図3は、他のプロセッサの動作の一例(比較例)を示す。図2と同様の動作については、詳細な説明は省略する。図3に示す例では、各演算コア#1、#nは、タイマー4を持たない。このため、演算コア#1、#nは、命令キュー2の全てのエントリENTが空いているときに共通の演算命令Aを受信した場合、演算命令Aを同じタイミングで演算部3に発行する(図3(a)、(b))。これにより、演算コア#1、#nの演算部3は、同じタイミングで演算命令Aの実行を開始するため、スイッチングノイズが重畳されてしまう(図3(c))。
演算命令Bを受信した後の動作は、演算コア#1、#nが演算命令Bを同じタイミングで実行することを除き、図2に示した動作と同様である。演算コア#1、#nの演算部3は、演算命令Bの実行をほぼ同じタイミングで完了し、命令キュー2に完了通知を発行する(図3(d)、(e))。これにより、演算コア#1、#nでほぼ同じタイミングでスイッチングノイズが発生し、スイッチングノイズが重畳されてしまう(図3(f))。
図4は、他のプロセッサの動作の別の例(比較例)を示す。図2および図3と同様の動作については、詳細な説明は省略する。図4に示す例では、各演算コア#1、#nは、タイマー4を有しておらず、さらに、命令キュー2は、1つのエントリENTのみを有する。エントリENTが1つしかない場合、命令キュー2は、演算部3による演算命令の実行が完了するまで、次の演算命令をエントリENTに格納できない。このため、各演算コア#1、#nは、演算命令A、Bを連続して実行することができず、各演算命令A、Bの演算の開始時と完了時にスイッチングノイズが発生し、発生したスイッチングノイズが重畳してしまう。
以上、図1および図2に示す実施形態では、演算コア1毎に計測時間が異なるタイマー4を使用して、同じタイミングで受信した演算命令の演算部3での実行開始タイミングをずらす。これにより、演算部3が演算命令の実行を開始するときに発生するスイッチングノイズが重畳することを抑止することができる。同時スイッチングノイズを削減できるため、過剰なタイミングマージンを設定せずにタイミング設計を行うことができ、電源設計の設計マージンを削減することができる。これにより、電源ノイズに起因してプロセッサ100の最大動作周波数を下げることを抑止でき、プロセッサ100の処理性能の低下を抑止することができる。
命令キュー2に未実行の演算命令が保持されている場合、実行中の演算命令の完了に基づいて未実行の演算命令を演算部3に発行することで、演算命令を連続して実行することができる。これにより、図4に示したように、演算命令の実行の開始と実行の完了毎にスイッチングノイズが発生することを抑止することができ、プロセッサ100の動作マージンが低下することを抑止することができる。
命令キュー2は、複数のエントリENTを有するため、演算部3が演算命令を実行中にも、新たな演算命令を受信することができ、受信した演算命令をエントリENTに格納することができる。
図5は、別の実施形態におけるプロセッサ100Aを含むシステム500の一例を示す。図1と同様の要素については、詳細な説明は省略する。システム500は、プロセッサ100A、共通回路200、メモリ300およびメモリインタフェース回路400を有する。例えば、プロセッサ100A、共通回路200、メモリ300およびメモリインタフェース回路400は、システム基板上に搭載される。なお、プロセッサ100A、共通回路200およびメモリインタフェース回路400は、SoC(System on a Chip)として、1つの半導体チップに含まれてもよい。プロセッサ100Aは、演算処理装置の一例である。例えば、システム500は、サーバまたはメインフレーム等のコンピュータである。
例えば、プロセッサ100Aは、図1に示したプロセッサ100と同様に、n個の演算コア10(識別番号#1、#2、...、#n)を有する。プロセッサ100Aは、各演算コア10が命令ユニット20を有することを除き、図1に示したプロセッサ100Aと同様の構成および機能を有する。プロセッサ100Aは、演算処理装置の一例である。
各演算コア10は、命令ユニット20、命令キュー30、演算部40およびタイマー50を有する。演算コア10は、互いに同じ構成を有し、演算命令を並列に実行可能である。演算コア10は、演算処理部の一例であり、命令キュー30は、命令保持部の一例であり、タイマー50は、計測部の一例である。
命令ユニット20は、メモリ300から供給される演算命令を命令キュー30に格納することで、演算命令の実行を指示する。なお、命令ユニット20は、メモリ300から供給される演算命令をデコードする命令デコーダを有してもよい。
命令キュー30は、命令ユニット20を介して演算命令を受信することを除き、図1に示した命令キュー2と同様の構成および機能を有する。演算部40は、図1に示した演算部3と同様の構成および機能を有する。すなわち、演算部40が有する演算器の数や種類は、1つに限られず、複数でもよい。
タイマー50は、図1に示したタイマー4と同様の構成および機能を有する。例えば、タイマー50は、所定時間に対応するウェイト値WAITをカウンタ値として記憶するレジスタ52と、カウンタ54とを有する。レジスタ52は、記憶部の一例である。
タイマー50は、命令キュー30からの起動指示に基づいて、レジスタ52に記憶されたカウンタ値をカウンタ54にカウントさせる。例えば、カウンタ54は、クロック信号に同期してカウント動作を実行する。そして、タイマー50は、カウンタ54がカウンタ値をカウントしたことに基づいて、ウェイト値WAITに対応する所定時間の計測を完了し、計測完了の通知を命令キュー30に出力する。タイマー50に設けたレジスタ52とカウンタ54とにより所定時間を計測することで、例えば、プロセッサ100Aで使用するクロック信号により所定時間を計測することができる。
共通回路200は、複数の演算コア10に共通の回路であり、プロセッサ100Aのテストを実行するBIST(Built-In Self Test)等のテスト回路を含んでもよい。例えば、共通回路200は、プロセッサ100A等に含まれる制御レジスタ等に初期値を設定する機能を有する。共通回路200は、メモリインタフェース回路400を介して、メモリ300に保持された演算コア10毎のウェイト値WAIT(WAIT1、WAIT2、...、WAITn)を読み出す。そして、共通回路200は、読み出したウェイト値WAITを各演算コア10のタイマー50内のレジスタ52に格納する。
なお、共通回路200内のテスト回路が、スキャンチェーンを使用してテストを実行する場合、共通回路200は、スキャンチェーンを使用して、各演算コア10のタイマー50のレジスタ52にウェイト値WAITを格納してもよい。
メモリインタフェース回路400は、共通回路200とメモリ300との間でのデータの入出力を制御する。メモリ300は、例えば、SDRAM(Synchronous Dynamic Random Access Memory)等を含むメモリモジュールである。メモリ300は、演算コア10に対応するウェイト値WAITが格納される記憶領域、プロセッサ100Aが実行するプログラム(すなわち、演算命令を含む命令群)が格納される記憶領域、およびプログラム等で使用するデータが格納される記憶領域を有する。なお、メモリ300は、SRAM(Static Random Access Memory)またはフラッシュメモリまたはROM(Read Only Memory)等でもよく、システム500に複数種類のメモリ300が搭載されてもよい。また、システム500に搭載されるメモリ300の数は、2つに限定されない。
図6は、図5のプロセッサ100Aの演算コア10の配置の一例を示す。例えば、プロセッサ100Aは、横方向に4つ並び、縦方向に4つ並ぶ16個の演算コア10(#1-#16:n=16)を有している。すなわち、演算コア#1-#16は、マトリックス状に配置される。図6では、識別番号#は、右上から左方向に向けて増加し、かつ上側から下方向に向けて増加するが、識別番号#の並び順は、図6に示す例に限定されない。
図7は、図5のプロセッサ100Aの動作の一例を示す。すなわち、図7は、プロセッサ100Aの制御方法の一例を示す。図2と同様の動作については、詳細な説明は省略する。図7は、命令ユニット20の動作が追加されたことを除き、図2の動作と同様である。すなわち、命令キュー30の動作は、図2の命令キュー2の動作と同様であり、タイマー50の動作は、図2のタイマー4の動作と同様であり、演算部40の動作は、図2の演算部3の動作と同様である。
命令ユニット20は、演算命令を受信した場合であって、命令キュー30に空いているエントリENTがある場合、空いているエントリENTに演算命令Aを格納することで、命令キュー30に演算を指示する。命令ユニット20は、演算命令の受信した場合であって、命令キュー30に空いているエントリENTがない場合、受信した演算命令を保持するとともに、新たな演算命令の受信を抑止する。また、命令ユニット20は、演算命令を保持している場合、新たな演算命令の受信を抑止する。なお、命令ユニット20は、命令キュー30に空いているエントリENTがない場合、新たな演算命令の受信を抑止してもよい。
図7において、演算コア#1、#nに供給される演算命令A、Bは、図2の演算コア#1、#nに供給される演算命令A、Bと同様であり、演算命令A、Bの供給タイミングも図2と同様である。このため、演算コア#1、#nで発生するスイッチングノイズを分散することができ、重畳されることを抑止することができきる。これにより、図2で説明した効果と同様の効果を得ることができる。
図8は、図5の演算コア10が演算命令を受信してから演算命令の実行を開始するまでの動作の一例を示す。すなわち、図8は、プロセッサ100Aの制御方法の一例を示す。図8に示す動作は、命令ユニット20が演算命令を受信したことに基づいて開始される。図8に示す動作フローは、プロセッサ100A内の各演算コア10で互いに独立に実行される。
まず、動作OP10において、命令ユニット20は、受信した演算命令を格納するための空いているエントリENTが命令キュー30にあるか否かを判定する。命令ユニット20は、空いているエントリENTがない場合、受信した演算命令を保持し、エントリENTが空くまで待つ。
動作OP10で空きエントリENTがあると判断した場合、動作OP12において、命令ユニット20は、命令キュー30の空きエントリENTに演算命令を格納する。次に、動作OP14において、命令キュー30は、動作OP12でエントリENTに格納された演算命令以外の他の演算命令(先行の演算命令)を演算部40が実行中であるかを判断する。先行の演算命令が実行中であるか否かは、図2で説明したように、演算命令の演算部40への発行後、完了通知を受信したか否かで判断される。
先行の演算命令が実行中の場合、動作OP16において、命令キュー30は、実行中の演算命令の完了を待ち、演算命令の実行が完了した場合、動作OP22を実行する。一方、先行の演算命令を実行していない場合、動作OP18において、命令キュー30は、タイマー50を起動する。次に、動作OP20において、命令キュー30は、タイマー50からの計測完了通知を待ち、計測完了通知を受信した場合、動作OP22を実行する。動作OP22において、命令キュー30は、動作OP12でエントリENTに格納された演算命令を演算部40に発行して動作を終了する。
以上、図5から図8に示す実施形態においても、図1および図2に示した実施形態と同様の効果を得ることができる。例えば、各演算コア10での演算命令の受信タイミングが同じ場合にも、演算部3が演算命令の実行を開始するときに発生するスイッチングノイズが重畳することを抑止することができ、同時スイッチングノイズを削減することができる。これにより、過剰なタイミングマージンを設定せずにタイミング設計を行うことができ、プロセッサ100Aの最大動作周波数を下げることを抑止できる。この結果、プロセッサ100Aの処理性能の低下を抑止することができる。
さらに、図5から図8に示す実施形態では、タイマー50に設けたレジスタ52とカウンタ54とにより所定時間を計測することで、例えば、プロセッサ100Aで使用するクロック信号により所定時間を計測することができる。
図9は、別の実施形態のプロセッサ100Bにおける演算コア#1-#16の動作順の一例を示す。プロセッサ100Bの演算コア#1-#16の配置は、図6と同じである。例えば、図9では、SIMD演算命令等の共通の演算命令が、16個の演算コア#1-#16に対して同じタイミングで供給されるとする。SIMD演算命令は、複数の演算器を使用して演算を並列に実行する並列演算命令の一例である。なお、演算命令は、SIMD演算命令以外でもよく、この場合、演算コア#1-#16に供給される演算命令の種類は、複数種類であってもよい。プロセッサ100Bの構成は、各タイマー50に供給されるウェイト値WAITが異なることを除き、図5に示したプロセッサ100Aの構成と同じである。
各演算コア#1-#16の括弧内は、全てのエントリENTが空き状態の命令キュー30に演算命令が格納されてから演算部40に演算命令が発行されるまでのクロックサイクル数を示す。クロックサイクル数は、図5に示したウェイト値WAITに対応する。図9に示す例では、プロセッサ100Bは、演算コア#1-#8を含む演算グループと、演算コア#9-#16を含む演算グループとを含み、各演算グループにおいて、演算コア毎に演算命令を発行するまでのウェイト値WAITが相違される。なお、演算グループの数は、1つでもよく、4つでもよい。
この実施形態では、演算グループ毎に、演算コア#のウェイト値WAITがそれぞれ相違し、演算グループ間では、ウェイト値WAITが共通の演算コア#が存在する。例えば、演算コア#1、#9は、命令キュー30に演算命令が格納されたことに基づいて、演算命令が演算部40に発行される(WAIT1、WAIT9=0τ)。演算コア#6、#14は、命令キュー30に演算命令が格納されてから4クロックサイクル後、演算命令が演算部40に発行される(WAIT6、WAIT9=4τ)。演算コア#3、#11は、命令キュー30に演算命令が格納されてから7クロックサイクル後、演算命令が演算部40に発行される(WAIT3、WAIT11=7τ)。
演算コア#8、#16は、命令キュー30に演算命令が格納されてから10クロックサイクル後、演算命令が演算部40に発行される(WAIT8、WAIT16=10τ)。演算コア#7、#15は、命令キュー30に演算命令が格納されてから15クロックサイクル後、演算命令が演算部40に発行される(WAIT7、WAIT15=15τ)。演算コア#4、#12は、命令キュー30に演算命令が格納されてから18クロックサイクル後、演算命令が演算部40に発行される(WAIT4、WAIT12=18τ)。
演算コア#5、#13は、命令キュー30に演算命令が格納されてから21クロックサイクル後、演算命令が演算部40に発行される(WAIT5、WAIT13=21τ)。演算コア#2、#10は、命令キュー30に演算命令が格納されてから24クロックサイクル後、演算命令が演算部40に発行される(WAIT2、WAIT10=24τ)。
このように、演算コア#1-#8では、同じタイミングで供給される演算命令に基づいて、コア番号#1、#6、#3、#8、#7、#4、#5、#2の順に命令が順次遅れて実行される。同様に、演算コア#9-#16では、同じタイミングで供給される演算命令に基づいて、コア番号#9、#14、#11、#16、#15、#12、#13、#10の順に演算命令が順次遅れて実行される。演算命令の実行を遅らせる遅延時間(ウェイト値WAIT)と、演算命令の実行を遅らせる順序は、シミュレーションに基づいて決定されてもよい。
演算命令を開始する順序は、斜め方向に位置する演算コア#で演算命令が順次開始されるように設定される。すなわち、斜め方向に位置する演算コア#が、演算命令を次に開始する演算コアとして優先的に設定される。例えば、プロセッサ100Bにおいて、電源線は、図9の縦方向および横方向に配線され、縦方向の電源線と横方向の電源線とは、交差部分で相互に接続される。
このため、斜め方向に位置する演算コア#を順次動作させることで、先に動作した演算コア#に接続され、スイッチングノイズが発生する電源線と、後に動作する演算コア#に接続され、スイッチングノイズが発生する電源線とを相違させることができる。この結果、一方向に向けて配線される着目する電源線に直接接続された複数の演算コア#のスイッチングノイズが、着目する電源線上で重畳することを抑止することができ、同時スイッチングノイズを削減することができる。なお、演算命令の実行順は、一例であり、図9に示す以外の順序で実行されてもよい。演算命令の実行順の別の例は、図11に示す。
図10は、図9のプロセッサ100Bの動作の一例を示す。この実施形態では、16個の演算命令の実行が2つの演算コア#毎に開始され、2つの演算コア#毎に完了するため、スイッチングノイズを分散することができ、同時スイッチングノイズを削減することができる。この結果、電源設計の設計マージンを削減することができる。
また、全ての演算コア#1-#16のウェイト値WAITを相違させるのではなく、演算グループ毎に、8つの演算コア#のウェイト値WAITを相違させる。このため、ウェイト値WAITによる演算命令の開始タイミングの遅れを最小限にして、スイッチングノイズの重畳を抑止することができる。例えば、演算コア#1-#16を4つの演算グループに分ける場合、ウェイト値WAITによる演算命令の開始タイミングの最大の遅れを、図10の半分であるほぼ12τにすることができる。これに対して、演算コア#1-#16を1つの演算グループにする場合、ウェイト値WAITによる演算命令の開始タイミングの最大の遅れは、ほぼ48τになる。
図11は、図9のプロセッサ100Bにおける演算コア#1-#16の動作順の別の例を示す。演算命令を開始する順序は、斜め方向に位置する演算コア#で演算命令が順次開始するように設定され、斜め方向に位置する演算コア#が演算命令を開始済みの場合、縦方向または横方向に配置される演算コア#が次に演算命令を開始するように設定される。すなわち、図9と同様に、斜め方向に位置する演算コア#が、演算命令を次に開始する演算コア#として優先的に設定される。
図11では、同じタイミングで供給される演算命令に基づいて、演算コア#1、#6、#3、#8、#4、#7、#2、#5の順に演算命令が順次遅れて実行される。同様に、演算コア#9-#16は、同じタイミングで供給される演算命令に基づいて、演算コア#9、#14、#11、#16、#12、#15、#10、#13の順に演算命令が順次遅れて実行される。
図12は、他のプロセッサの動作の一例(比較例)を示す。図12に示す例では、図9の横方向に並ぶ演算コア#1、#2、#3、#4が、演算命令の実行を順次開始する。この場合、演算コア#1、#2、#3、#4で順次発生するスイッチングノイズが、演算コア#1-#4の配置方向に沿って配線される電源線上で重畳され、合成ノイズが発生する。
図13は、他のプロセッサの動作の別の例(比較例)を示す。図13に示す例では、図9の横方向に並ぶ演算コア#1、#3が、同じタイミングで演算命令の実行を開始し(0τ)、演算コア#1、#3の間に配置される演算コア#2が、所定時間(4τ)遅れて演算命令の実行を開始する。演算コア#4は、演算命令を実行しない。この場合、演算コア#1、#3で発生するスイッチングノイズが、演算コア#1-#4の配置方向に沿って配線される電源線上を、演算コア#2に向けて伝搬され、演算コア#2で発生したスイッチングノイズと重畳され、合成ノイズが発生する。
以上、図9から図11に示す実施形態においても、上述した実施形態と同様の効果を得ることができる。さらに、各演算コア#での演算命令の受信タイミングが同じ場合にも、斜め方向に位置する演算コア#を順次動作させることで、複数の演算コア#のスイッチングノイズが、一方向に配線される電源線上で重畳することを抑止することができる。この結果、同時スイッチングノイズを削減することができ、電源設計の設計マージンを削減することができる。所定数の演算コア#を含む演算グループ毎に、演算コア#のウェイト値WAITを相違させることで、ウェイト値WAITによる演算命令の開始タイミングの遅れを最小限にして、スイッチングノイズの重畳を抑止することができる。
図14は、別の実施形態におけるプロセッサ100Cを含むシステム500の一例を示す。図5と同様の要素については、同じ符号を付し、詳細な説明は省略する。図14に示すシステム500は、図5と同様に、プロセッサ100C、共通回路200、メモリ300およびメモリインタフェース回路400を有する。
プロセッサ100Cの各演算コア10は、図1の命令ユニット20の代わりに命令ユニット20Aを有し、図1の命令キュー30の代わりに命令キュー30Aを有する。また、演算部40は、図1で説明したように、浮動小数点演算器、固定小数点演算器および論理演算器等の複数種類の演算器42を有する。
命令ユニット20Aは、メモリ300から受信する演算命令をデコードする命令デコーダ22Aを有する。命令デコーダ22Aは、デコードした演算命令を命令キュー30Aに格納するとともに、デコードした演算命令の種類に応じてタイマーイネーブル信号TENを出力する。
例えば、命令デコーダ22Aは、消費電力が所定量以上の演算器42に実行させる演算命令をデコードした場合、有効レベルのタイマーイネーブル信号TENを出力する。命令デコーダ22Aは、消費電力が所定量未満の演算器42に実行させる演算命令をデコードした場合、無効レベルのタイマーイネーブル信号TENを出力する。なお、命令デコーダ22Aは、分岐命令およびメモリアクセス命令をデコードした場合、無効レベルのタイマーイネーブル信号TENを出力してもよい。
例えば、この実施形態では、各演算コア10において、演算命令の実行の開始時の電源電流が規定値以上になり、スイッチングノイズが所定値以上になることが予測される場合、有効レベルのタイマーイネーブル信号TENが出力される。一方、各演算コア10において、演算命令の実行の開始時の電源電流が規定値未満であり、スイッチングノイズが所定値未満になることが予測される場合、無効レベルのタイマーイネーブル信号TENが出力される。換言すれば、スイッチングノイズが重畳されてもプロセッサ100Cの動作に影響を与えない場合、無効レベルのタイマーイネーブル信号TENが出力される。
電源電流は、シミュレーション等により演算器42毎に予め求められ、求めた電源電流から各演算器42の消費電力が求められる。そして、タイマーイネーブル信号TENを有効レベルにするか否かは、各演算器42の消費電力に基づいて判定される。なお、タイマーイネーブル信号TENを有効レベルにするか否かは、各演算器42の電源電流に基づいて決められてもよい。
例えば、消費電力が所定量以上の演算器42は、SIMD演算命令を実行するSIMD演算器である。なお、消費電力が所定量以上の演算器42を、浮動小数点演算器とし、消費電力が所定量未満の演算器42を、固定小数点演算器および論理演算器としてもよい。あるいは、消費電力が所定量以上の演算器42を、浮動小数点数の乗算器、除算器および積和演算器とし、消費電力が所定量未満の演算器42を、浮動小数点数の加算器、固定小数点演算器および論理演算器としてもよい。さらに、消費電力が所定量以上の演算器42を、浮動小数点数の乗算器、除算器および積和演算器と固定小数点数の乗算器、除算器および積和演算器としてもよい。
命令キュー30Aは、全てのエントリENTが空いている状態で、エントリENTに格納された演算命令とともに有効なタイマーイネーブル信号TENを受信した場合、タイマー50に起動指示を発行する。そして、命令キュー30Aは、タイマー50から計測完了通知を受信した場合、エントリENTに保持している演算命令を演算部40に発行する。
一方、命令キュー30Aは、全てのエントリENTが空いている状態で、エントリENTに格納された演算命令とともに無効なタイマーイネーブル信号TENを受信した場合、タイマー50への起動指示の発行を抑止する。そして、命令キュー30Aは、タイマー50を起動させることなく、エントリENTに格納された演算命令を演算部40に発行する。
また、命令キュー30は、エントリENTのいずれかが空いている状態で、演算器42のいずれかが演算命令を実行中に、演算命令を受信した場合、タイマーイネーブル信号TENのレベルにかかわらず、タイマー50の起動を抑止する。そして、命令キュー30は、演算器42のいずれかによる演算命令の実行が完了したことに基づいて、エントリENTで保持している演算命令を所定の演算器42に発行する。
これにより、命令デコーダ22Aから有効なタイマーイネーブル信号TENが出力された場合、図7と同様の動作が実行され、命令デコーダ22Aから無効なタイマーイネーブル信号TENが出力された場合、図3と同様の動作が実行される。
したがって、演算命令の実行により発生するスイッチングノイズが規定値以上の場合には、タイマー50を起動して、スイッチングノイズが重畳されることを抑止することができる。一方、演算命令の実行により発生するスイッチングノイズが小さい場合には、タイマー50の起動を抑止して、複数の演算コア10により演算命令を同じタイミングで開始することができる。この場合、演算命令の実行の開始が遅れないため、処理効率の低下を抑制することができる。
なお、命令キュー30は、演算部40内の演算器42の演算開始タイミングを相互にずらしてもよい。この場合、各演算コア10は、複数のタイマー50を有し、命令キュー30は、演算命令を実行させる演算器42毎にタイマー50を起動する。
以上、図14に示す実施形態においても、上述した実施形態と同様の効果を得ることができる。さらに、この実施形態では、演算命令毎に発生するスイッチングノイズの大きさに応じて、演算命令の実行の開始を遅らせるか否かを切り替えることができる。これにより、スイッチングノイズが重畳されてもプロセッサ100Cの動作に影響を与えない場合、複数の演算コア10により演算命令を同じタイミングで開始することができ、処理効率の低下を抑制することができる。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
1 演算コア
2 命令キュー
4 タイマー
10 演算コア
20、20A 命令ユニット
22A 命令デコーダ
30、30A 命令キュー
40 演算部
42 演算器
50 タイマー
52 レジスタ
54 カウンタ
100、100A、100B、100C プロセッサ
200 共通回路
300 メモリ
400 メモリインタフェース回路
500 システム
ENT エントリ
WAIT ウェイト値

Claims (11)

  1. 複数の演算処理部を有し、
    前記複数の演算処理部の各々は、
    演算命令を保持する命令保持部と、
    前記命令保持部から発行される演算命令を実行する演算部と、
    所定時間を計測する計測部と、を有し、
    前記命令保持部は、前記演算部が演算命令を実行していないときに演算命令を保持した場合、前記計測部を起動し、前記計測部が前記所定時間を計測したことに基づいて、保持した演算命令を前記演算部に発行し、前記演算部が演算命令を実行しているときに演算命令を保持した場合、前記計測部を起動することなく、前記演算部が実行中の演算命令を完了したことに基づいて、保持した演算命令を前記演算部に発行し、
    前記所定時間は、少なくとも2つの前記演算処理部で異なる、演算処理装置。
  2. 前記命令保持部は、
    演算命令を保持する複数のエントリを有し、
    前記複数のエントリのいずれにも演算命令を保持していない場合、前記演算部が演算命令を実行していないと判定し、
    前記複数のエントリのいずれかに演算命令を保持している場合、前記演算部が演算命令を実行中と判定し、
    前記複数のエントリの各々に保持された演算命令は、前記演算部による実行の完了に基づいて破棄される、請求項1に記載の演算処理装置。
  3. 複数の演算処理部を有し、
    前記複数の演算処理部の各々は、
    演算命令を保持する複数のエントリを有する命令保持部と、
    前記命令保持部から発行される演算命令を実行する演算部と、
    所定時間を計測する計測部と、を有し、
    前記命令保持部は、前記演算部が演算命令を実行していないときに演算命令を保持した場合、前記計測部を起動し、前記計測部が前記所定時間を計測したことに基づいて、保持した演算命令を前記演算部に発行し、前記複数のエントリのいずれにも演算命令を保持していない場合、前記演算部が演算命令を実行していないと判定し、前記複数のエントリのいずれかに演算命令を保持している場合、前記演算部が演算命令を実行中と判定し、
    前記複数のエントリの各々に保持された演算命令は、前記演算部による実行の完了に基づいて破棄され、
    前記所定時間は、少なくとも2つの前記演算処理部で異なる、演算処理装置。
  4. 前記複数の演算処理部は、マトリックス状に配置され、
    前記所定時間は、斜め方向に位置する前記演算処理部で演算命令が順次実行されるように設定される、請求項1ないし請求項3のいずれか1項に記載の演算処理装置。
  5. 前記複数の演算処理部は、所定数の演算処理部を含むグループに分けられ、
    前記所定時間は、前記グループ毎に、少なくとも2つの前記演算処理部で異なる、請求項1ないし請求項4のいずれか1項に記載の演算処理装置。
  6. 前記命令保持部は、
    2以上の前記演算処理部の前記演算部を使用して演算命令を並列に実行する並列演算命令を、前記演算部が演算命令を実行していないときに保持した場合、前記計測部を起動し、
    前記並列演算命令以外の演算命令を保持した場合、前記演算部が演算命令を実行中か否かにかかわらず、前記計測部を起動することなく、保持した演算命令を前記演算部が演算命令を実行していないときに前記演算部に発行する、請求項1ないし請求項5のいずれか1項に記載の演算処理装置。
  7. 前記演算部は、複数種の演算器を有し、
    前記命令保持部は、
    前記複数種の演算器のうち、消費電力が所定量以上の前記演算器により実行する演算命令を、当該演算器が演算命令を実行していないときに保持した場合、前記計測部を起動し、
    前記複数種の演算器のうち、消費電力が所定量未満の前記演算器により実行する演算命令を保持した場合、当該演算器が演算命令を実行中か否かにかかわらず、前記計測部を起動することなく、保持した演算命令を当該演算部が演算命令を実行していないときに前記演算部に発行する、請求項1ないし請求項5のいずれか1項に記載の演算処理装置。
  8. 複数の演算処理部を有し、
    前記複数の演算処理部の各々は、
    演算命令を保持する命令保持部と、
    前記命令保持部から発行される演算命令を実行する演算部と、
    所定時間を計測する計測部と、を有し、
    前記命令保持部は、前記演算部が演算命令を実行していないときに演算命令を保持した場合、前記計測部を起動し、前記計測部が前記所定時間を計測したことに基づいて、保持した演算命令を前記演算部に発行し、2以上の前記演算処理部の前記演算部を使用して演算命令を並列に実行する並列演算命令を、前記演算部が演算命令を実行していないときに保持した場合、前記計測部を起動し、前記並列演算命令以外の演算命令を保持した場合、前記演算部が演算命令を実行中か否かにかかわらず、前記計測部を起動することなく、保持した演算命令を前記演算部が演算命令を実行していないときに前記演算部に発行し、
    前記所定時間は、少なくとも2つの前記演算処理部で異なる、演算処理装置。
  9. 複数の演算処理部を有し、
    前記複数の演算処理部の各々は、
    演算命令を保持する命令保持部と、
    前記命令保持部から発行される演算命令を実行する複数種の演算器を有する演算部と、
    所定時間を計測する計測部と、を有し、
    前記命令保持部は、前記演算部が演算命令を実行していないときに演算命令を保持した場合、前記計測部を起動し、前記計測部が前記所定時間を計測したことに基づいて、保持した演算命令を前記演算部に発行し、前記複数種の演算器のうち、消費電力が所定量以上の前記演算器により実行する演算命令を、当該演算器が演算命令を実行していないときに保持した場合、前記計測部を起動し、前記複数種の演算器のうち、消費電力が所定量未満の前記演算器により実行する演算命令を保持した場合、当該演算器が演算命令を実行中か否かにかかわらず、前記計測部を起動することなく、保持した演算命令を当該演算部が演算命令を実行していないときに前記演算部に発行し、
    前記所定時間は、少なくとも2つの前記演算処理部で異なる、演算処理装置。
  10. 前記計測部は、
    前記所定時間に対応するカウンタ値を記憶する記憶部とカウンタとを有し、
    前記記憶部に記憶されたカウンタ値を前記カウンタでカウントすることで前記所定時間を計測する、請求項1ないし請求項9のいずれか1項に記載の演算処理装置。
  11. 複数の演算処理部を有し、前記複数の演算処理部の各々が、演算命令を保持する命令保持部と、前記命令保持部から発行される演算命令を実行する演算部と、所定時間を計測する計測部と、を有する演算処理装置の制御方法であって、
    前記命令保持部は、前記演算部が演算命令を実行していないときに演算命令を保持した場合、前記計測部を起動し、前記計測部が前記所定時間を計測したことに基づいて、保持した演算命令を前記演算部に発行し、前記演算部が演算命令を実行しているときに演算命令を保持した場合、前記計測部を起動することなく、前記演算部が実行中の演算命令を完了したことに基づいて、保持した演算命令を前記演算部に発行し、
    前記所定時間は、少なくとも2つの前記演算処理部で異なる、演算処理装置の制御方法。
JP2019118414A 2019-06-26 2019-06-26 演算処理装置および演算処理装置の制御方法 Active JP7287147B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019118414A JP7287147B2 (ja) 2019-06-26 2019-06-26 演算処理装置および演算処理装置の制御方法
US16/889,878 US11436008B2 (en) 2019-06-26 2020-06-02 Arithmetic processing device and method for controlling arithmetic processing device instruction execution timing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019118414A JP7287147B2 (ja) 2019-06-26 2019-06-26 演算処理装置および演算処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2021005209A JP2021005209A (ja) 2021-01-14
JP7287147B2 true JP7287147B2 (ja) 2023-06-06

Family

ID=74043151

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019118414A Active JP7287147B2 (ja) 2019-06-26 2019-06-26 演算処理装置および演算処理装置の制御方法

Country Status (2)

Country Link
US (1) US11436008B2 (ja)
JP (1) JP7287147B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230297504A1 (en) * 2021-04-26 2023-09-21 Google Llc Efficiently allocating memory on neural network compute tiles

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006051612A1 (ja) 2004-11-15 2006-05-18 Renesas Technology Corp. 半導体集積回路
JP2018165913A (ja) 2017-03-28 2018-10-25 富士通株式会社 演算処理装置、情報処理装置、及び演算処理装置の制御方法

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0635798A (ja) 1992-07-21 1994-02-10 Hitachi Ltd メモリ回路
US8443169B2 (en) * 2005-03-28 2013-05-14 Gerald George Pechanek Interconnection network connecting operation-configurable nodes according to one or more levels of adjacency in multiple dimensions of communication in a multi-processor and a neural processor
US7590173B2 (en) * 2005-06-30 2009-09-15 Intel Corporation System and method for performing adaptive phase equalization
WO2007108047A1 (ja) * 2006-03-16 2007-09-27 Fujitsu Limited 電源ノイズを抑制可能とする半導体装置
US7607028B2 (en) * 2006-05-30 2009-10-20 International Business Machines Corporation Mitigate power supply noise response by throttling execution units based upon voltage sensing
US7685458B2 (en) * 2006-12-12 2010-03-23 Kabushiki Kaisha Toshiba Assigned task information based variable phase delayed clock signals to processor cores to reduce di/dt
US7831812B2 (en) * 2007-08-31 2010-11-09 International Business Machines Corporation Method and apparatus for operating an age queue for memory request operations in a processor of an information handling system
US8677165B2 (en) * 2007-12-12 2014-03-18 Hewlett-Packard Development Company, L.P. Variably delayed wakeup transition
US7937563B2 (en) * 2008-05-27 2011-05-03 Advanced Micro Devices, Inc. Voltage droop mitigation through instruction issue throttling
JP5580751B2 (ja) * 2011-01-18 2014-08-27 ルネサスエレクトロニクス株式会社 半導体装置
US9086883B2 (en) * 2011-06-10 2015-07-21 Qualcomm Incorporated System and apparatus for consolidated dynamic frequency/voltage control
US8625353B2 (en) * 2011-06-16 2014-01-07 Spansion Llc Method and apparatus for staggered start-up of a predefined, random, or dynamic number of flash memory devices
US8786309B2 (en) * 2011-10-31 2014-07-22 Apple Inc. Multi-path power switch scheme for functional block wakeup
US9092210B2 (en) * 2011-11-30 2015-07-28 Intel Corporation Controlling current transients in a processor
EP2637096B1 (en) * 2012-03-07 2017-02-15 Alcatel Lucent A system for schedule and executing best-effort, real-time and high-performance computing (HPC) processes
US9360918B2 (en) * 2012-12-21 2016-06-07 Advanced Micro Devices, Inc. Power control for multi-core data processor
GB2532210A (en) * 2014-11-11 2016-05-18 Ibm System and method for controlling idle state exits to manage DI/DT issues
KR102603245B1 (ko) * 2018-01-11 2023-11-16 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR102502526B1 (ko) * 2018-04-16 2023-02-23 에밀 바덴호르스트 프로세서 및 프로세서 작동 방법
JP7315317B2 (ja) * 2018-11-09 2023-07-26 株式会社Preferred Networks プロセッサおよびプロセッサのデータ転送方法
US11112846B2 (en) * 2018-12-19 2021-09-07 International Business Machines Corporation Predictive on-chip voltage simulation to detect near-future under voltage conditions
US11409560B2 (en) * 2019-03-28 2022-08-09 Intel Corporation System, apparatus and method for power license control of a processor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006051612A1 (ja) 2004-11-15 2006-05-18 Renesas Technology Corp. 半導体集積回路
JP2018165913A (ja) 2017-03-28 2018-10-25 富士通株式会社 演算処理装置、情報処理装置、及び演算処理装置の制御方法

Also Published As

Publication number Publication date
JP2021005209A (ja) 2021-01-14
US20200409694A1 (en) 2020-12-31
US11436008B2 (en) 2022-09-06

Similar Documents

Publication Publication Date Title
US20250238232A1 (en) Vector Processor Architectures
Simon et al. BLADE: An in-cache computing architecture for edge devices
US7124318B2 (en) Multiple parallel pipeline processor having self-repairing capability
US8595468B2 (en) Reverse simultaneous multi-threading
US20140181477A1 (en) Compressing Execution Cycles For Divergent Execution In A Single Instruction Multiple Data (SIMD) Processor
CN111414197A (zh) 数据处理系统、编译器、处理器的方法和机器可读介质
CN107301455A (zh) 用于卷积神经网络的混合立方体存储系统及加速计算方法
JP2009176116A (ja) マルチプロセッサシステムおよびマルチプロセッサシステムの同期方法
US11645534B2 (en) Triggered operations to improve allreduce overlap
TW201903602A (zh) 圖形處理單元及處理圖形應用程式的方法
CN114780236B (zh) 数据处理集成电路
US20210089317A1 (en) Instruction processing apparatuses, processors, and processing methods
CN103902448A (zh) 多核处理器软错误压力测试程序生成系统及方法
CN107580698A (zh) 用于确定并行处理器内核的调度大小的并发因子的系统和方法
CN118627565B (zh) 一种基于脉动阵列的可配置卷积运算加速装置及方法
US11429310B2 (en) Adjustable function-in-memory computation system
JP7225745B2 (ja) 演算処理装置および演算処理装置の制御方法
JP7287147B2 (ja) 演算処理装置および演算処理装置の制御方法
KR102842126B1 (ko) 인-메모리 연산을 위한 시스템 및 방법
US20100169616A1 (en) Reducing instruction collisions in a processor
US20140053163A1 (en) Thread processing method and thread processing system
Jiang et al. Fpga-accelerated maze routing kernel for vlsi designs
US10592517B2 (en) Ranking items
US11907118B2 (en) Interleaved data conversion to change data formats
CN112074810B (zh) 并行处理设备

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220308

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230307

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230407

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230425

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230508

R150 Certificate of patent or registration of utility model

Ref document number: 7287147

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150