JP6074932B2 - 演算処理装置及び演算処理方法 - Google Patents

演算処理装置及び演算処理方法 Download PDF

Info

Publication number
JP6074932B2
JP6074932B2 JP2012160696A JP2012160696A JP6074932B2 JP 6074932 B2 JP6074932 B2 JP 6074932B2 JP 2012160696 A JP2012160696 A JP 2012160696A JP 2012160696 A JP2012160696 A JP 2012160696A JP 6074932 B2 JP6074932 B2 JP 6074932B2
Authority
JP
Japan
Prior art keywords
arithmetic processing
core
register
priority
registers
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
JP2012160696A
Other languages
English (en)
Other versions
JP2014021774A (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 JP2012160696A priority Critical patent/JP6074932B2/ja
Priority to US13/907,971 priority patent/US20140025925A1/en
Publication of JP2014021774A publication Critical patent/JP2014021774A/ja
Application granted granted Critical
Publication of JP6074932B2 publication Critical patent/JP6074932B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)
  • Multi Processors (AREA)

Description

本願開示は、演算処理装置及び演算処理方法に関する。
チップマルチプロセッサのコア数は年々増加しており、プロセッサ内にコアが複数存在するメニーコアプロセッサが開発されている。メニーコアプロセッサでは、ソフトウェア的に各コアを平等に扱ったとしても、各コアからの共有資源へのアクセス時間の不平等性や、アクセス競合、他のジッタ等によって、各コアのジョブの進捗に無視できないばらつきが生じる場合がある。
複数のコア間の同期をとるためには、例えばバリア同期が用いられる。プログラム中に挿入したバリア同期命令にプログラム実行位置が到達すると、コアはプログラム実行を停止し、他の全てのコアのプログラム実行位置が対応バリア同期命令に到達する迄、停止状態で待つ。これにより、バリア同期命令の位置において全てのコアの間で同期が確立される。このようなバリア同期等の同期を確立する時間やプログラム計算の完了の時間は、最後のコアがバリアポイントに到達した時間や最後のコアが計算を完了した時間となる。そのため、コアによるプログラム実行の進捗のばらつきは、計算に必要な時間の増大や、並列化効率の低下を引き起こす。このような進捗のばらつきによる時間の増大や並列化効率の低下は、コア数が増大すると共に大きくなると考えられる。
ハードウェアに起因する進捗のばらつきは、実行タイミング等の再現不可能な要素によって影響を受ける。そのため、アプリケーション作成者が、ハードウェアに起因する進捗のばらつきを予め考慮してプログラミングをすることは難しい。従って、コア間の進捗のばらつきを低減するためには、実際の進捗の状況に応じて進捗速度を調整するハードウェア的な機構を用いることが望ましい。また、コア間でソフトウェアでは回避出来ない作業負荷差が生じた際に、同期に与える影響を小さくするためにも、ハードウェア的な機構を用いてコア間の進捗のばらつきを低減することが望ましい。
特開2007−108944号公報 特開2001−134466号公報
以上を鑑みると、演算処理部間の進捗のばらつきを低減する機構を備えた演算処理装置が望まれる。
演算処理装置は、演算処理を行う複数の演算処理部と、前記複数の演算処理部のそれぞれに対応して設けられた複数のレジスタとを含み、前記複数の演算処理部の各々について、演算処理部がプログラム中の特定の命令を実行すると前記複数のレジスタのうちの対応するレジスタのレジスタ値が変化され、前記特定の命令が実行される度に前記複数のレジスタのレジスタ値に応じて前記複数の演算処理部の優先度が変化され、前記複数の演算処理部のいずれかが前記特定の命令を実行する度に、前記複数のレジスタのレジスタ値に基づいて進捗状況を判断し、前記複数の演算処理部のうちの相対的に早い演算処理部の優先度を相対的に低下させることを特徴とする。
少なくとも1つの実施例によれば、演算処理部間の進捗のばらつきを低減する機構を備えた演算処理装置が提供される。
演算処理装置の実施例の構成の一例を示す図である。 進捗管理レジスタのレジスタ値に応じた優先度設定により進捗のばらつきが低減される様子を模式的に示す図である。 コアが実行するプログラムの一例を示す図である。 図1の演算処理装置の動作の一例を示すフローチャートである。 最速のコアが最初の管理ポイントに到達した状態の一例を示す図である。 2番目に早いコアが最初の管理ポイントに到達した状態の一例を示す図である。 最も遅いコアが最初の管理ポイントに到達した状態の一例を示す図である。 進捗管理レジスタのレジスタ値が変化する様子の一例を示す図である。 共有バス調停ユニットにおける共有リソースの割り当て機構の一例を示す図である。 優先化装置の構成の一例を示す図である。 優先度に応じたキャッシュのウェイの割り当ての一例を示す図である。 優先度に応じたキャッシュのウェイの割り当ての一例を示す図である。 優先度に応じたキャッシュのウェイの割り当ての一例を示す図である。 優先度に応じたキャッシュのウェイの割り当ての一例を示す図である。
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
図1は、演算処理装置の実施例の構成の一例を示す図である。演算処理装置は、演算処理部としてのコア10乃至13、進捗管理ユニット14、及び共有リソース15を含む。進捗管理ユニット14は、進捗管理レジスタ20乃至23、加減算器24乃至27、及び進捗管理部28を含む。共有リソース15は、共有キャッシュ30、共有バス調停ユニット31、及び電源&クロック制御ユニット32を含む。なお図1において、各ボックスで示される各機能ブロックと他の機能ブロックとの境界は、基本的には機能的な境界を示すものであり、物理的な位置の分離、電気的な信号の分離、制御論理的な分離等に対応するとは限らない。各機能ブロックは、他のブロックと物理的にある程度分離された1つのハードウェアモジュールであってもよいし、或いは他のブロックと物理的に一体となったハードウェアモジュール中の1つの機能を示したものであってもよい。
複数のコア10乃至13は、それぞれが演算処理を行う。進捗管理レジスタ20乃至23は、複数のコア10乃至13のそれぞれに対応して設けられている。図1の演算処理装置では、複数のコア10乃至13の各々について、コアのプログラム実行箇所がプログラム中の所定位置に到達すると、複数の進捗管理レジスタ20乃至23のうちの対応するレジスタのレジスタ値を変化させる。例えばコア10のプログラム実行箇所がプログラム中の所定位置に到達すると、それに応答して、コア10に対応する進捗管理レジスタ20に格納されるレジスタ値を例えば1増加させる。具体的には、例えば進捗管理部28が、コア10乃至13からの所定位置到達の報告に応答して、加減算器24乃至27を用いて進捗管理レジスタ20乃至23の現在のレジスタ値を+1し、進捗管理レジスタ20乃至23に増加後の値を格納すればよい。
上記のようにすれば、進捗管理レジスタ20乃至23に格納されるレジスタ値は、コア10乃至13のプログラム実行箇所がプログラム中の所定位置に到達したか否かを示すことになる。またプログラム中に複数の所定位置が規定されている場合或いはプログラム実行箇所が同一の所定位置を複数回通過する場合等には、進捗管理レジスタ20乃至23に格納されるレジスタ値は、プログラム実行箇所が幾つ目の所定位置に到達したかを示すことになる。従って、進捗管理レジスタ20乃至23に格納されるレジスタ値に基づいて、コア10乃至13のプログラム実行の進捗状況を判断することができる。
進捗管理部28は、進捗管理レジスタ20乃至23に格納されるレジスタ値に応じて、即ちコア10乃至13のプログラム実行の進捗状況に応じて、複数のコア10乃至13の優先度を変化させる。優先度を変化させる方法については後述する。複数のコア10乃至13の優先度を変化させることにより、プログラム実行の進捗が遅いコアについては、優先度を相対的に高く設定してよい。またプログラム実行の進捗が早いコアについては、優先度を相対的に低く設定してよい。複数のコア10乃至13は、共有リソース15を共有する。例えば優先度が第1の値であるコアは、優先度が第1の値より低い第2の値であるコアよりも、優先的に共有リソース15が割り当てられてよい。なおこの場合、割り当ての直接の対象となる共有リソースとしては、共有キャッシュ30のキャッシュメモリ、共有バス調停ユニット31の管理するバス、電源&クロック制御ユニット32の管理する共有電源等が含まれる。
図2は、進捗管理レジスタのレジスタ値に応じた優先度設定により進捗のばらつきが低減される様子を模式的に示す図である。図2は、複数のコア10乃至13のそれぞれがプログラム実行することにより、プログラム実行箇所が進行していく様子を示している。バリア同期位置41は、各プログラム中に挿入されているバリア同期命令の位置であり、この位置からコア10乃至13のプログラム実行が同時に開始(再開)される。バリア同期位置42は、各プログラム中に挿入されている次のバリア同期命令の位置であり、この位置においてコア10乃至13間の次の同期が確立される。プログラム中の所定位置43は、この位置にプログラム実行箇所が到達すると、進捗管理レジスタ20乃至23のレジスタ値が変化するような位置である。プログラム中の所定位置43は、例えば、コア10乃至13がそれぞれ実行するプログラム中に挿入された特定の命令の位置であってよい。この特定の命令は、バリア同期位置41とバリア同期位置42との間の適当な位置に設けられている。複数のコア10乃至13がそれぞれ実行する複数のプログラムの内容が互いに実質的に同一又は対応していれば、この特定の命令は、各プログラム中の実質的に同一又は対応する位置に設けられてよい。複数のプログラムの内容が互いに異なれば、この特定の命令は、各プログラム中においてバリア同期位置41とバリア同期位置42との間でプログラム進捗量が同等である位置に設けられてよい。
図2の例では、コア13が矢印45で示されるように最初にプログラム中の所定位置43に到達する。この時点での最速のコア13と最も遅いコア13とのプログラム実行の進捗度合いの差は、矢印46の長さに相当する量である。コア13のプログラム実行箇所がプログラム中の所定位置43に到達した時点で、コア13に対応する進捗管理レジスタ23のレジスタ値が例えば1増加される。なお複数の進捗管理レジスタ20乃至23のレジスタ値は、初期状態で全て0であってよい。進捗管理レジスタ23のレジスタ値が残りの進捗管理レジスタ20乃至22のレジスタ値よりも大きくなると、進捗管理部28は、コア13のプログラム実行が他のコアのプログラム実行よりも進捗していると判断し、コア13の優先度を下げるようにする。具体的には、進捗管理部28からの通知(例えば各コアの優先度を示す優先度情報の通知)に基づいて、共有リソース15のリソース制御部が、コア13よりも他のコア10乃至12を優先的に取り扱う。ここで共有リソース15のリソース制御部とは、例えば共有キャッシュ30のキャッシュ制御部、共有バス調停ユニット31、電源&クロック制御ユニット32等であってよい。
上記のようにして、コア13の優先度が下がることにより、コア13のプログラム進行が遅くなる。その結果、コア13のプログラム実行箇所がバリア同期位置42に到達したときには、最速のコア13と最も遅いコア10とのプログラム実行の進捗度合いの差は、矢印47の長さに相当する量となる。この量は、矢印46が示す優先度調整の無い状態での最速のコア13と最も遅いコア10とのプログラム実行の進捗度合いの差を考慮すると、十分に小さな量となっている。なお、仮に優先度調整が全く行われなかったとすると、コア13のプログラム実行箇所がバリア同期位置42に到達したときには、矢印46の長さの2倍の長さに相当する進捗度合いの差が、最速のコア13と最も遅いコア10との間に発生していたことになる。
図3は、コア10乃至13が実行するプログラムの一例を示す図である。この例では、コア10乃至13の各々が、図3に示される同一の内容のプログラムを実行する。このプログラムをコア10乃至13のそれぞれが実行することにより、コア10乃至13がそれぞれの配列bの値の和aを求め、最後のコマンド"allreduce-sum"により、各コアが求めた和aの総和を求める。プログラム中の命令51は、最初のバリア同期命令である。バリア同期命令51の位置は、図2に対応させると、バリア同期位置41に相当する。プログラム中の命令52は、2番目のバリア同期命令である。バリア同期命令52の位置は、図2に対応させると、バリア同期位置42に相当する。命令53は、進捗管理ユニット14に対して、プログラム実行箇所が所定位置に到達したことを報告する進捗状況報告命令である。進捗状況報告命令53の位置は、図2に対応させると、プログラム中の所定位置43に相当する。
進捗状況報告命令53のパラメータmyrankは、当該プログラムを実行するコアの番号を示す。例えばコア10が実行するプログラムにおいて、パラメータmyrankは0に設定される。例えばコア11が実行するプログラムにおいて、パラメータmyrankは1に設定される。例えばコア12が実行するプログラムにおいて、パラメータmyrankは2に設定される。例えばコア13が実行するプログラムにおいて、パラメータmyrankは3に設定される。またパラメータngroupeは、当該プログラムを実行するコアが所属するグループを規定する。例えば、コア10乃至13を、コア10及びコア11が所属する第1のグループと、コア12及びコア13が所属する第2のグループとに分け、それぞれのグループにおいて独立に進捗のばらつきを調整してよい。即ち、第1のグループでは、コア10とコア11とのうち早い方のコアの進行速度を遅くするように優先度を調整し、第2のグループでは、コア12とコア13とのうち早い方のコアの進行速度を遅くするように優先度を調整してよい。また或いは、コア10乃至13の全てが同一のグループに属するようにパラメータngroupeを設定し、コア10乃至13間での相対的な進捗度合いに応じて、各コアの優先度を調整してよい。
あるコアにより進捗状況報告命令53が実行されると、パラメータmyrankとパラメータngroupeとが、当該コアから進捗管理部28に通知される。進捗管理部28は、この通知に応答して、パラメータmyrankが示す進捗管理レジスタのレジスタ値を変化させる(例えば1増加させる)。このようにして、複数のコア10乃至13の各々は、プログラム中の所定位置に挿入された所定のコマンドを実行すると、進捗管理レジスタ20乃至23のうちの対応するレジスタのレジスタ値を変化させる。進捗管理部28は、進捗管理レジスタ20乃至23のレジスタ値に基づいてコア10乃至13の優先度を変化させる際に、パラメータngroupeが示すグループ分けに応じて優先度を変化させてよい。
図4は、図1の演算処理装置の動作の一例を示すフローチャートである。ステップS1において、あるコアのプログラム実行箇所が管理ポイント(即ちプログラム中の所定位置)に到達する。これにより、管理ポイントに到達した旨の報告が当該コアから進捗管理部28に送信される。
ステップS2において、進捗管理部28が、進捗管理レジスタ20乃至23を参照してレジスタ値をチェックする。ステップS3において、進捗管理部28は、今回管理ポイントに到達したコア以外のコアが対応する管理ポイントに既に到達しているか否かを判定する。即ち、今回管理ポイントに到達したコアが最も進捗の遅いコアであるか否かを判定する。今回管理ポイントに到達したコア以外のコアが対応する管理ポイントに既に到達していない場合、即ち、今回管理ポイントに到達したコアが最も進捗の遅いコアでない場合、ステップS4で、当該コアの進捗管理レジスタを1増加させる。それに続きステップS5で、進捗管理部28は、当該コアの共有リソース15へのアクセスの優先度を低下させるように、共有リソース15へ必要な通知(例えば各コアの優先度を示す優先度情報の送信)を行う。
図5は、最速のコアが最初の管理ポイントに到達した状態の一例を示す図である。図6は、2番目に早いコアが最初の管理ポイントに到達した状態の一例を示す図である。図7は、最も遅いコアが最初の管理ポイントに到達した状態の一例を示す図である。これらの例において、バリア同期位置41及びバリア同期位置42は、図2で説明したものと同様である。この例では、3つのプログラム中の所定位置として、3つの管理ポイント61乃至63が設定されている。コア13が第1の管理ポイント61に最初に到達し、コア11が第1の管理ポイント61に2番目に到達し、コア12が第1の管理ポイント61に最も遅く到達している。
図5に示す例の場合、第1の管理ポイント61に到達したコア13は最も進捗の遅いコアではないので、ステップS4で当該コア13の進捗管理レジスタ23が1増加される。それに続きステップS5で、当該コア13の共有リソース15へのアクセスの優先度を低下させるように、共有リソース15へ必要な通知が行われる。図6に示す例の場合も、第1の管理ポイント61に到達したコア11は最も進捗の遅いコアではないので、当該コア11の進捗管理レジスタ21が1増加され、当該コア11の共有リソース15へのアクセスの優先度が低下される。
図4を再び参照し、ステップS3において、今回管理ポイントに到達したコア以外のコアが対応する管理ポイントに既に到達している場合、即ち、今回管理ポイントに到達したコアが最も進捗の遅いコアである場合、ステップS6に進む。ステップS6において、当該コア以外のコアの進捗管理レジスタを1減少させる。前述のように、あるコアのプログラム実行箇所がプログラム中の所定位置に到達すると、当該コアが最も遅いコアでない場合には、複数のレジスタのうちの当該コアに対応するレジスタのレジスタ値を所定値(この例では1)増加させる。但しステップS3に示すように、当該コアが最も遅いコアである場合には、複数のレジスタのうちの当該コア以外のコアに対応するレジスタのレジスタ値を所定値(この例では1)減少させてよい。
なおこのステップにおける1減少させる処理は必ずしも必要ではないが、この処理によりある管理ポイントに全コアが到達した場合に進捗管理レジスタのレジスタ値を1減少させることで、最も遅いコアのレジスタ値を常に0の状態に保つことができる。従って、レジスタ間でのレジスタ値の比較をする必要なく、ある進捗管理レジスタのレジスタ値のみに基づいて、当該レジスタに対応するコアが相対的にどれだけ進捗しているのかを判断することができる。またこのようにすることで、今回管理ポイントに到達したコア以外のコアが対応する管理ポイントに既に到達しているか否かを判断するためには、他のコアの進捗管理レジスタの値が全て1以上であるか否かを判断すればよい。
図7の例の場合、第1の管理ポイント61に到達したコア12は最も進捗の遅いコアであるので、ステップS6において、当該コア以外のコア10,11,13の進捗管理レジスタ20,21,23を1減少させる。これにより、最も進捗の遅いコア12に対応する進捗管理レジスタ22のレジスタ値は0のままとなる。
図4を再び参照し、ステップS7において、進捗管理部28は、全てのコアの進捗管理レジスタの値が0であるか否かを判定する。全てのコアの進捗管理レジスタの値が0である場合、ステップS8において、共有リソース15に対する全コアのアクセス優先度をリセットして、初期状態のアクセス優先度に戻す。即ち、最も遅いコアがある管理ポイントに到達した時点で、何れのコアもその次の管理ポイントには未だ到達していない場合、コア間の進捗状況の差は十分に小さいとの判断に基づいて、初期状態のアクセス優先度に戻す。アクセス優先度の初期状態は、例えば、全てのコアに対して同一の優先度が設定されている状態、或いは優先度の設定無しの状態等であってよい。
図8は、進捗管理レジスタのレジスタ値が変化する様子の一例を示す図である。最初に、コア13が管理ポイントに到達し、コア13に対応する進捗管理レジスタが0から1になる。次に、コア12が管理ポイントに到達し、コア12に対応する進捗管理レジスタが0から1になる。次に、コア11が管理ポイントに到達し、コア11に対応する進捗管理レジスタが0から1になる。次に、コア10が管理ポイントに到達すると、他の全てのコアが対応管理ポイントに到達しているので、コア11乃至13に対応する進捗管理レジスタが1減少して1から0になる。即ち、コア10乃至13に対応する進捗管理レジスタの値は全て0になる。
その後、コア12、コア11、コア12、コア10がこの順番で管理ポイントに到達することにより、コア10乃至13に対応する進捗管理レジスタの値は1,1,2,0となる。この時点で、コア13が管理ポイントに到達すると、他の全てのコアが対応管理ポイントに到達しているので、コア10乃至12に対応する進捗管理レジスタがそれぞれ1減少する。この結果、コア10乃至13に対応する進捗管理レジスタの値は0,0,1,0となる。
以上のように変化する進捗管理レジスタ20乃至23のレジスタ値に基づいて、図1を参照して述べたように、進捗管理部28が、共有リソース15に対して優先度調整のための通知(例えば各コアの優先度を示す優先度情報の通知)を行う。この通知に基づいて、共有リソース15のリソース制御部が、共有リソースの割り当てを調整する。ここで共有リソース15のリソース制御部とは、例えば共有キャッシュ30のキャッシュ制御部、共有バス調停ユニット31、電源&クロック制御ユニット32等であってよい。
まず、電源&クロック制御ユニット32による共有リソースの割り当てについて説明する。一般に、コアの消費電力と周波数とには密接な関係がある。コアの動作周波数を上げて処理速度を増加させるためには、電源電圧を上げることが好ましく、その結果、コアの消費電力は大きくなる。その際、放熱の問題、環境の問題、更にはコスト等の観点から、プロセッサが用いる電力に上限を設定することがある。このように使用電力に上限の設定がある場合、周波数や電力も各コアの共有資源と考えることができる。限られた電力の分配をコアの優先度に応じて調整することによって、進捗の遅いコアの周波数を相対的に高くし、進捗の早いコアの周波数を相対的に遅くすることが考えられる。
即ち、図1に示されるように、電源&クロック制御ユニット32は、進捗管理部28から各コアの優先度を示す優先度情報を受け取る。電源&クロック制御ユニット32は、優先度情報に基づいて、コア10乃至13に供給する電源電圧及びクロック周波数を変化させる。この際、進捗管理部28から、電源&クロック制御ユニット32に対して、電源電圧及びクロック周波数の変化を要求するようにしてもよい。電源&クロック制御ユニット32は、進捗が早いために優先度が低いコアに対しては、供給する電源電圧及びクロック周波数を低下させてよい。また同様に、電源&クロック制御ユニット32は、進捗が遅いために優先度が高いコアに対して、供給する電源電圧及びクロック周波数を増加させてもよい。
図9は、共有バス調停ユニット31における共有リソースの割り当て機構の一例を示す図である。図9には、コア10乃至13、進捗管理ユニット14、優先化装置71、LRUユニット72、AND回路73乃至76、OR回路77、及び2次キャッシュ78が示される。図1の共有バス調停ユニット31は、優先化装置71及びLRUユニット72を含んでよく、AND回路73乃至76、OR回路77、及び2次キャッシュ78は、図1の共有キャッシュ30に含まれてよい。なお優先化装置71は、共有バス調停ユニット31側ではなく進捗管理ユニット14側に含まれてもよい。
1次キャッシュはコア10乃至13の各々に内蔵されており、2次キャッシュ78は、メモリ階層において、外部メモリ装置と1次キャッシュとの間に存在する。1次キャッシュへのアクセスにおいてキャッシュミスが発生した場合、2次キャッシュ78へのアクセスが実行される。LRUユニット72は、複数のコア10乃至13のうちで最後に2次キャッシュ78にアクセスしてから最も時間の経過しているLRU(Least Recently Used)コアが何れのコアであるのかを示す情報を保持している。LRUユニット72は、コア10乃至13に対して特に優先度の設定が無い場合、他のコアに優先してLRUコアに2次キャッシュ78へのバス(OR回路77の出力が接続される部分)へのアクセスを許可する。具体的には、例えばコア11がLRUコアである場合、コア11がアクセス先のアドレスを出力し且つアクセス許可を要求するアクセスリクエスト信号をアサートすると、LRUユニット72は、対応するAND回路74への信号を1に設定してアクセスを許可する。即ち、アクセス許可されたコア11の出力するアドレス信号が、AND回路74及びOR回路77を介して2次キャッシュ78に供給される。コア11がアクセスリクエスト信号をアサートしている状態で、他のコアが2次キャッシュ78にアクセスしようとしても、LRUコアであるコア11が優先されるので、他のコアは2次キャッシュ78にアクセスすることはできない。即ち、LRUコアであるコア11以外のコア10,12,13からアクセスリクエスト信号を受け取っても、LRUユニット72は、それぞれ対応するAND回路73,75,76への信号を0のまま保持する。
進捗管理ユニット14によりコア10乃至13に対して優先度設定がされている場合、優先化装置71により、LRUユニット72によるアクセス許可動作を調整する。具体的には、優先化装置71は、コア10乃至13の優先度に関する優先度情報を進捗管理ユニット14から受け取り、当該優先度情報に基づいて、優先度の相対的に低いコアに対しては、LRUユニット72へのアクセスリクエスト信号を遮断する。即ち、コア10乃至13からのアクセスリクエスト信号は、通常は優先化装置71を介してLRUユニット72に供給されるが、優先度の相対的に低いコアからのアクセスリクエスト信号は、優先化装置71により遮断され、LRUユニット72に供給されない。
図10は、優先化装置71の構成の一例を示す図である。優先化装置71は、AND回路80−1乃至80−4、OR回路81−1乃至81−4、2入力のうち一方が負論理入力であるAND回路82−1乃至82−4及び83−1乃至83−4、AND回路84−1乃至84−4、及びOR回路85−1乃至85−4を含む。進捗管理ユニット14は、進捗管理レジスタのレジスタ値が0である場合に1となり且つ当該レジスタ値が0以外の時に0となる優先度情報を、AND回路80−1乃至80−4の第1の入力に印加する。この優先度情報は更に、AND回路83−1乃至83−4及びAND回路84−1乃至84−4の第1の入力にも印加される。例えばコア10に対して優先度情報が0の場合、このコア10の進捗管理レジスタ20の値は1以上であり、コア10が相対的に進捗していること、即ちコア10の優先度は低いことを示す。また例えばコア10に対して優先度情報が1の場合、このコア10の進捗管理レジスタ20の値は0であり、コア10が相対的に遅れていること、即ちコア10の優先度は高いことを示す。
コア10乃至13は、アクセス要求時にアクセスリクエスト信号を1にアサートし、これらアクセスリクエスト信号はAND回路80−1乃至80−4の第2の入力に印加される。またこれらアクセスリクエスト信号は、AND回路82−1乃至82−4の第1の入力、及びAND回路84−1乃至84−4の第2の入力に印加される。AND回路82−1乃至82−4の出力が、AND回路83−1乃至83−4の第2の入力に印加される。またAND回路82−1乃至82−4の第2の入力には、OR回路81−1乃至81−4の出力が印加される。
例えばコア10に対する優先度情報が印加されるAND回路83−4及び84−4に着目した場合、コア10の優先度情報が1である(即ち優先度が高い)場合、コア10からのアクセスリクエスト信号はAND回路84−4側の経路を通る。即ち、コア10の優先度情報が1である(即ち優先度が高い)場合、コア10からのアクセスリクエスト信号は、AND回路84−4を通過し、OR回路85−4を介して優先化装置71から出力される。出力された信号は、優先化装置71からLRUユニット72に供給される。
またコア10の優先度情報が0である(即ち優先度が低い)場合、コア10からのアクセスリクエスト信号はAND回路83−4側の経路を通る。但し、AND回路80−2乃至80−4及びOR回路81−4による論理演算に相当する所定の条件が満たされた場合のみ、アクセスリクエスト信号は、AND回路82−4及びAND回路83−4を通過し、OR回路85−4を介して優先化装置71から出力される。出力された信号は、優先化装置71からLRUユニット72に供給される。
AND回路80−1乃至80−4はそれぞれ、対応するコア10乃至13がアクセスリクエスト信号をアサートし且つ対応優先度が高いときにのみ、その出力を1にする。OR回路81−4は、AND回路80−2乃至80−4の出力のOR演算を行い、OR演算結果を出力する。従って、OR回路81−4の出力が1になるのは、コア10以外の少なくとも1つのコアで優先度の高いものがアクセスリクエスト信号をアサートした場合である。それ以外の場合、OR回路81−4の出力は0になる。
従ってコア10の優先度が低い場合、コア10以外の少なくとも1つのコアで優先度の高いものがアクセスリクエスト信号をアサートすれば、コア10のアクセスリクエスト信号はLRUユニット72に供給されない。コア10の優先度が低い場合、コア10のアクセスリクエスト信号がLRUユニット72に供給されるのは、コア10以外のコアで優先度の高いものがアクセスリクエスト信号をアサートしていないときのみである。
図11乃至図14は、優先度に応じたキャッシュのウェイの割り当ての一例を示す図である。共有キャッシュ30は、進捗管理部28からの優先度情報に基づいて、ウェィの割り当てを制御してよい。複数のコア10乃至13は、それぞれが保有する専用の1次キャッシュとは別に、2次キャッシュである共有キャッシュ30にアクセスできる。この際、共有キャッシュ30の共有リソースであるウェイの使用においては、コア10乃至13間での競合に起因してキャッシュミスが発生する場合がある。競合によるキャッシュミスはCPU内のコア数が増えると増加する傾向にある。そこで、コア間の競合によるキャッシュミスの頻度を下げるために、コアに対して動的なキャッシュのウェイ分割をすることが考えられる。その際、ウェイ分割の仕方をコアの優先度に基づいて調整することで、進捗の遅いコアに対しては優先的にウェイを割り当てることが考えられる。
図1に示す進捗管理ユニット14からの優先度情報に基づいて、共有キャッシュ30がキャッシュのウェイ分割を行う例について以下に説明する。以下の説明において、ウェイの数(即ち各インデックスに対応するタグの数)は16であるとする。
図11乃至図14の例では、縦16行が16のウェイを示し、横4列がそれぞれ4つのインデックスに対応する。コア10乃至13の進捗状況が同一である場合、図11に示すように、各コアには4つずつウェイを占有させてよい。なお"0"はコア10に占有させるウェイ、"1"はコア11に占有させるウェイ、"2"はコア12に占有させるウェイ、"3"はコア13に占有させるウェイを示す。
例えばコア10が進んでおり他のコア11乃至13が遅れている場合、共有キャッシュ30における動的なキャッシュのウェイ割り当てにより、コア10が1つのウェイを占有し、他のコア11乃至13が5つずつウェイを占有するようにしてよい。図12に、そのようにウェイを割り当てた例が示される。
また例えばコア10及び11が進んでおり他のコア12及び13が遅れている場合、共有キャッシュ30における動的なキャッシュのウェイ割り当てにより、コア10及び11がそれぞれ2つのウェイを占有し、他のコア12及び13が6つずつウェイを占有するようにしてよい。図13に、そのようにウェイを割り当てた例が示される。
また例えばコア10乃至12が進んでおり他のコア13が遅れている場合、共有キャッシュ30における動的なキャッシュのウェイ割り当てにより、コア10乃至12がそれぞれ3つのウェイを占有し、他のコア13が7つのウェイを占有するようにしてよい。図14に、そのようにウェイを割り当てた例が示される。
上記のウェイの割り当て例はあくまで一例であり、限定を意図するものではない。上記以外の様々なウェイの割り当てが可能である。
以上、演算処理装置を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
例えば、進捗管理レジスタ20乃至23のレジスタ値の書き換えや優先度の調整は進捗管理部28により集中管理的に実行される例について説明したが、そのように集中管理的にではなく各コア10乃至13により分散的に実行されてもよい。例えば、各コア10乃至13が、所定の命令を実行することにより、対応する進捗管理レジスタ20乃至23のレジスタ値を直接に書き換えてよい。また各コア10乃至13が、進捗管理レジスタ20乃至23のレジスタ値を参照して、自らの優先度を下げるように、各共有リソースの制御部に働きかけてもよい。
また同期ポイントは、バリア同期によるものでなくとも、任意の方式で同期を確立するものであってよい。また同期ポイント間の進捗管理ポイント(進捗をチェックする所定位置)の数は、1つであっても複数であってもよい。また同期ポイントが設けられることなく、プログラム動作開始から終了までの間に1つ又は複数の管理ポイントが設けられていてもよい。
10,11,12,13 コア
14 進捗管理ユニット
15 共有リソース
20,21,22,23 進捗管理レジスタ
24,25,26,27 加減算器
28 進捗管理部
30 共有キャッシュ
31 共有バス調停ユニット
32 電源&クロック制御ユニット

Claims (6)

  1. 演算処理を行う複数の演算処理部と、
    前記複数の演算処理部のそれぞれに対応して設けられた複数のレジスタと、
    を含み、前記複数の演算処理部の各々について、演算処理部がプログラム中の特定の命令を実行すると前記複数のレジスタのうちの対応するレジスタのレジスタ値が変化され、前記特定の命令が実行される度に前記複数のレジスタのレジスタ値に応じて前記複数の演算処理部の優先度が変化され
    前記複数の演算処理部のいずれかが前記特定の命令を実行する度に、前記複数のレジスタのレジスタ値に基づいて進捗状況を判断し、前記複数の演算処理部のうちの相対的に早い演算処理部の優先度を相対的に低下させる
    ことを特徴とする演算処理装置。
  2. 前記複数の演算処理部の各々について、プログラム中の所定位置に挿入された前記特定の命令が実行されると、前記複数のレジスタのうちの対応するレジスタのレジスタ値が変化されることを特徴とする請求項1記載の演算処理装置。
  3. 演算処理を行う複数の演算処理部と、
    前記複数の演算処理部のそれぞれに対応して設けられた複数のレジスタと、
    を含み、前記複数の演算処理部の各々について、演算処理部がプログラム中の特定の命令を実行すると前記複数のレジスタのうちの対応するレジスタのレジスタ値が変化され、前記特定の命令が実行される度に前記複数のレジスタのレジスタ値に応じて前記複数の演算処理部の優先度が変化され、
    前記複数の演算処理部のうちの一の演算処理部がプログラム中の特定の命令を実行すると、前記一の演算処理部が最も遅い演算処理部でない場合に前記複数のレジスタのうちの前記一の演算処理部に対応するレジスタのレジスタ値を所定値増加させ、前記一の演算処理部が最も遅い演算処理部である場合に前記複数のレジスタのうちの前記一の演算処理部以外の演算処理部に対応するレジスタのレジスタ値を前記所定値減少させることを特徴とする演算処理装置。
  4. 前記複数の演算処理部は共有リソースを共有し、前記優先度が第1の値である演算処理部は、前記優先度が前記第1の値より低い第2の値である演算処理部よりも、優先的に前記共有リソースが割り当てられることを特徴とする請求項1乃至3何れか一項記載の演算処理装置。
  5. 前記共有リソースは、キャッシュ、共有バス、及び共有電源電力の少なくとも1つであることを特徴とする請求項4記載の演算処理装置。
  6. 複数の演算処理部により演算処理を実行し、
    前記複数の演算処理部の各々について、演算処理部がプログラム中の特定の命令を実行すると、前記複数の演算処理部のそれぞれに対応して設けられた複数のレジスタのうちの対応するレジスタのレジスタ値を変化させ、
    前記特定の命令が実行される度に前記複数のレジスタのレジスタ値に応じて前記複数の演算処理部の優先度を変化させ
    前記複数の演算処理部のいずれかが前記特定の命令を実行する度に、前記複数のレジスタのレジスタ値に基づいて進捗状況を判断し、前記複数の演算処理部のうちの相対的に早い演算処理部の優先度を相対的に低下させる
    各段階を含む演算処理方法。
JP2012160696A 2012-07-19 2012-07-19 演算処理装置及び演算処理方法 Active JP6074932B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012160696A JP6074932B2 (ja) 2012-07-19 2012-07-19 演算処理装置及び演算処理方法
US13/907,971 US20140025925A1 (en) 2012-07-19 2013-06-03 Processor and control method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012160696A JP6074932B2 (ja) 2012-07-19 2012-07-19 演算処理装置及び演算処理方法

Publications (2)

Publication Number Publication Date
JP2014021774A JP2014021774A (ja) 2014-02-03
JP6074932B2 true JP6074932B2 (ja) 2017-02-08

Family

ID=49947570

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012160696A Active JP6074932B2 (ja) 2012-07-19 2012-07-19 演算処理装置及び演算処理方法

Country Status (2)

Country Link
US (1) US20140025925A1 (ja)
JP (1) JP6074932B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11204871B2 (en) * 2015-06-30 2021-12-21 Advanced Micro Devices, Inc. System performance management using prioritized compute units
US11567556B2 (en) * 2019-03-28 2023-01-31 Intel Corporation Platform slicing of central processing unit (CPU) resources
JP2023084904A (ja) * 2021-12-08 2023-06-20 富士通株式会社 プロセッサ、情報処理装置及び情報処理方法

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0640324B2 (ja) * 1989-10-26 1994-05-25 インターナショナル・ビジネス・マシーンズ・コーポレーション マルチプロセッサ・システムおよびそのプロセス同期方法
US5365228A (en) * 1991-03-29 1994-11-15 International Business Machines Corporation SYNC-NET- a barrier synchronization apparatus for multi-stage networks
US5649102A (en) * 1993-11-26 1997-07-15 Hitachi, Ltd. Distributed shared data management system for controlling structured shared data and for serializing access to shared data
JPH07248967A (ja) * 1994-03-11 1995-09-26 Hitachi Ltd メモリ制御方式
JPH07271614A (ja) * 1994-04-01 1995-10-20 Hitachi Ltd 実行時間に制約のあるタスクの優先制御方式
US5682480A (en) * 1994-08-15 1997-10-28 Hitachi, Ltd. Parallel computer system for performing barrier synchronization by transferring the synchronization packet through a path which bypasses the packet buffer in response to an interrupt
JP3532037B2 (ja) * 1996-07-31 2004-05-31 富士通株式会社 並列計算機
JP3636871B2 (ja) * 1997-09-16 2005-04-06 株式会社日立製作所 並列プロセッサシステム
US6216174B1 (en) * 1998-09-29 2001-04-10 Silicon Graphics, Inc. System and method for fast barrier synchronization
US6763519B1 (en) * 1999-05-05 2004-07-13 Sychron Inc. Multiprogrammed multiprocessor system with lobally controlled communication and signature controlled scheduling
JP2004038767A (ja) * 2002-07-05 2004-02-05 Matsushita Electric Ind Co Ltd バス調停装置
TWI256553B (en) * 2004-12-17 2006-06-11 Ind Tech Res Inst Apparatus and method for hardware semaphore
US8645959B2 (en) * 2005-03-30 2014-02-04 Intel Corporaiton Method and apparatus for communication between two or more processing elements
JP2009025939A (ja) * 2007-07-18 2009-02-05 Renesas Technology Corp タスク制御方法及び半導体集積回路
JP2009176116A (ja) * 2008-01-25 2009-08-06 Univ Waseda マルチプロセッサシステムおよびマルチプロセッサシステムの同期方法
JP5181762B2 (ja) * 2008-03-25 2013-04-10 富士通株式会社 分散処理を実行する演算装置とサーバおよび分散処理方法
US8365177B2 (en) * 2009-01-20 2013-01-29 Oracle International Corporation Dynamically monitoring and rebalancing resource allocation of monitored processes based on execution rates of measuring processes at multiple priority levels
WO2010092483A1 (en) * 2009-02-13 2010-08-19 Alexey Raevsky Devices and methods for optimizing data-parallel processing in multi-core computing systems
US8335911B2 (en) * 2009-05-21 2012-12-18 Oracle America, Inc. Dynamic allocation of resources in a threaded, heterogeneous processor
JP5549575B2 (ja) * 2010-12-17 2014-07-16 富士通株式会社 並列計算機システム、同期装置、並列計算機システムの制御方法
US20120179896A1 (en) * 2011-01-10 2012-07-12 International Business Machines Corporation Method and apparatus for a hierarchical synchronization barrier in a multi-node system
US8843932B2 (en) * 2011-01-12 2014-09-23 Wisconsin Alumni Research Foundation System and method for controlling excessive parallelism in multiprocessor systems
US8990823B2 (en) * 2011-03-10 2015-03-24 International Business Machines Corporation Optimizing virtual machine synchronization for application software

Also Published As

Publication number Publication date
US20140025925A1 (en) 2014-01-23
JP2014021774A (ja) 2014-02-03

Similar Documents

Publication Publication Date Title
US8676976B2 (en) Microprocessor with software control over allocation of shared resources among multiple virtual servers
US20150205644A1 (en) Task Scheduler Mechanism, Operating System, and Multiprocessor System
JP6161301B2 (ja) 割り込みスプレッド方法、割り込み要求信号スプレッダ回路、及びそれを備えるシステムオンチップ
WO2006014254A1 (en) An apparatus and method for heterogenous chip multiprocessors via resource allocation and restriction
JP2007334748A (ja) 情報処理装置およびアクセス制御方法
JP5633564B2 (ja) マルチコアシステムおよび外部入出力バス制御方法
Kao et al. Data-locality-aware mapreduce real-time scheduling framework
WO2016202154A1 (zh) 一种gpu资源的分配方法及***
JP6074932B2 (ja) 演算処理装置及び演算処理方法
Sharma et al. ETA-HP: an energy and temperature-aware real-time scheduler for heterogeneous platforms
WO2016202153A1 (zh) 一种gpu资源的分配方法及***
Rezaei et al. Ultrashare: Fpga-based dynamic accelerator sharing and allocation
JP5945617B2 (ja) マルチコアプロセッサの制御プログラム、電子機器及び制御方法
JP6079518B2 (ja) 演算処理装置及び演算処理装置の制御方法
Nair et al. Mediator-a mixed criticality deadline honored arbiter for multi-core real-time systems
JP4868012B2 (ja) コンピュータシステム、コンピュータシステムの制御方法、及びプログラム
US9389919B2 (en) Managing workload distribution among computer systems based on intersection of throughput and latency models
JPWO2012066621A1 (ja) 情報処理システム
JP2015041199A (ja) 情報処理装置
JP2011059915A (ja) 半導体装置
JP5734941B2 (ja) マルチコアプロセッサの制御プログラム、電子機器及び制御方法
JP2008250419A (ja) 競合調停装置、マスタスレーブシステム及び競合調停方法
US12030510B2 (en) Method for operating a processing unit
CN104951369B (zh) 消除热点资源竞争的方法和装置
JP5768586B2 (ja) 計算装置、計算装置の制御方法、及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150406

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151021

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160517

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160719

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: 20161213

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161226

R150 Certificate of patent or registration of utility model

Ref document number: 6074932

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150