JP2014191663A - 演算処理装置、情報処理装置、および演算処理装置の制御方法 - Google Patents
演算処理装置、情報処理装置、および演算処理装置の制御方法 Download PDFInfo
- Publication number
- JP2014191663A JP2014191663A JP2013067651A JP2013067651A JP2014191663A JP 2014191663 A JP2014191663 A JP 2014191663A JP 2013067651 A JP2013067651 A JP 2013067651A JP 2013067651 A JP2013067651 A JP 2013067651A JP 2014191663 A JP2014191663 A JP 2014191663A
- Authority
- JP
- Japan
- Prior art keywords
- processing unit
- cache memory
- core
- data
- assistant
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】計算を行う複数の処理部に対して、データを効率的に取得できる技術を提供する。
【解決手段】演算処理装置は、キャッシュメモリに接続される複数の第1の処理部と、キャッシュメモリに接続されるとともに第1の処理部が処理するデータを複数の第1の処理部のそれぞれの処理前に前記キャッシュメモリに取得する複数の第2の処理部と、複数の第2の処理部のデータの前記キャッシュメモリへの取得のスケジュールを制御するスケジュール処理部と、を備える。
【選択図】図4
【解決手段】演算処理装置は、キャッシュメモリに接続される複数の第1の処理部と、キャッシュメモリに接続されるとともに第1の処理部が処理するデータを複数の第1の処理部のそれぞれの処理前に前記キャッシュメモリに取得する複数の第2の処理部と、複数の第2の処理部のデータの前記キャッシュメモリへの取得のスケジュールを制御するスケジュール処理部と、を備える。
【選択図】図4
Description
本発明は、キャッシュメモリと複数の処理部とを有する演算処理装置に関する。
コンピュータの処理では、処理部、例えば、プロセッサがプログラム処理のためにメモリにアクセスし、データを読み出し、読み出したデータを処理し、メモリに書き戻すという情報処理が支配的となる場合がある。以下、処理部をコアともいう。
そこで、メモリアクセスの速度を向上させるために、処理部の外部にあるメモリと処理部との間に、キャッシュと呼称される高速な小容量メモリが配置される。つまり、キャッシュによって、処理部がメモリをアクセスする実質的な速度を高速化する方法が利用される。
このキャッシュの技術では、処理部がアクセスするメモリを予測して、外部メモリから事前に読み出しを行いキャッシュに書き込むプリフェッチが広く利用されている。プリフェッチは、例えば、コンパイル時にプリフェッチの実行を指定するプリフェッチ命令をバイナリプログラムに組み込むことで実現される。
一方、計算速度の向上においては、処理部のクロックサイクルを短く、高周波化する方法に限界がある。そのため、現在は、計算を行う多数の処理部を並列に動作させる方法がとられている。さらに、例えば、計算を行う処理部より前に、補助的な処理部を用いてプリフェッチ等の命令によりデータを事前に取得するシステムが提案されている。
ところで、計算を行う複数の処理部を有する演算処理装置の場合、データを事前に取得するタイミングは、処理部ごとに異なる。したがって、データを事前に取得するための補助的処理部を用いる技術を、複数の処理部を有する演算処理装置に拡大すると、計算を行う処理部がデータを必要とするときに、データが用意できていないという事態も生じ得る。
そこで、本発明の課題は、計算を行う複数の処理部に対して、データを効率的に取得できる技術を提供することにある。
1つの側面では、開示の実施形態は、以下の演算処理装置によって例示される。すなわち、演算処理装置は、キャッシュメモリに接続される複数の第1の処理部と、キャッシュメモリに接続されるとともに第1の処理部が処理するデータを複数の第1の処理部のそれぞれの処理前に前記キャッシュメモリに取得する複数の第2の処理部と、複数の第2の処
理部のデータの前記キャッシュメモリへの取得のスケジュールを制御するスケジュール処理部と、を備える。
理部のデータの前記キャッシュメモリへの取得のスケジュールを制御するスケジュール処理部と、を備える。
本演算処理装置によれば、計算を行う複数の処理部に対するデータを効率的に取得できる。
以下、図面を参照して、一実施形態に係る演算処理装置について説明する。以下の実施形態の構成は例示であり、本演算処理装置は実施形態の構成には限定されない。
[比較例]
図1から図3を参照して、比較例に係る演算処理装置を説明する。図1は、比較例に係る演算処理装置50の構成を例示する図である。演算処理装置50は、複数の計算コア1と、アシスタントコア2と、キャッシュメモリ4と、メモリ5と、クロスバー6を有する。図1では、計算コア1は複数例示されている。以下、個々の計算コアを区別する場合には、例えば、計算コア1−1、1−2のように呼ぶことにする。また、複数の演算コア1をプロセッサともいう。
[比較例]
図1から図3を参照して、比較例に係る演算処理装置を説明する。図1は、比較例に係る演算処理装置50の構成を例示する図である。演算処理装置50は、複数の計算コア1と、アシスタントコア2と、キャッシュメモリ4と、メモリ5と、クロスバー6を有する。図1では、計算コア1は複数例示されている。以下、個々の計算コアを区別する場合には、例えば、計算コア1−1、1−2のように呼ぶことにする。また、複数の演算コア1をプロセッサともいう。
計算コア1は、メモリ5に実行可能に展開されたコンピュータプログラムの命令列とデータを、キャッシュメモリ4を介して取得する。そして、計算コア1は、取得した命令列の実行により、取得したデータを処理し、キャッシュメモリ4を介して処理結果をメモリ5に格納する。
計算コア1が実行する命令列中には、ソースプログラムのコンパイル時にコンパイラによって組み込まれたプリフェッチ命令が含まれる。計算コア1は、プリフェッチ命令を取得すると、アシスタントコア2にプリフェッチ命令の実行を要求する。
アシスタントコア2は、計算コア1からの要求にしたがって、プリフェッチ命令を実行する。プリフェッチ命令の実行によって、データがキャッシュメモリ4に取得される。したがって、計算コア1がデータを処理するときには、処理対象のデータは、キャッシュメモリ4に存在することになる。すなわち、アシスタントコア2は、プリフェッチを実行するコアとして、計算コア1が効率的に処理を実行することを支援する。
キャッシュメモリ4は、小容量であるが高速にデータの読み出しと書き込みが可能なメモリである。メモリ5は、キャッシュメモリ4よりも大容量であるが、データの読み出し
と書き込みの速度がキャッシュメモリ4よりも遅い。計算コア1が効率的にキャッシュメモリ4を利用することで、演算処理装置50の処理が高速化される。
と書き込みの速度がキャッシュメモリ4よりも遅い。計算コア1が効率的にキャッシュメモリ4を利用することで、演算処理装置50の処理が高速化される。
図1の構成で、複数の計算コア1およびアシスタントコア2は、互いに並列にキャッシュメモリ4にアクセス可能である。例えば、複数の計算コア1およびアシスタントコア2は、クロスバー6を通じて、キャッシュメモリ4に並列にアクセスする。クロスバー6は、インターコネクトとも呼ばれる。クロスバー6は、同一のサイクルにおいて、複数の計算コア1およびアシスタントコア2を含む、複数のコアとキャッシュメモリ4とを並列に接続する。1つの構成例では、キャッシュメモリ4を、例えば、8個のバンクに分割することが可能である。その場合に、クロスバー6は、8個のコアと8個のバンクとを並列に接続する。
図2に、複数の計算コア1−1、1−2等が実行する命令列を例示する。例えば、計算コア1−1は、命令1から命令3、プリフェッチ命令2、命令4から命令8を実行する。また、本実施例では、命令6がプリフェッチ命令1で取得されるデータを使用することがコンパイル段階で分かっているものとする。同様に、計算コア1−2は、命令9から命令12、プリフェッチ命令2、命令13から命令16を実行する。また、命令15がプリフェッチ命令1で取得されるデータを使用することがコンパイル段階で分かっているものとする。
図3は、複数の計算コア1−1、1−2等によって実行される命令列中の各命令の実行タイミングの関係を例示する図である。図3のように、プリフェッチ命令は、アシスタントコア2で実行される。例えば、パイプラインの処理中に、計算コア1−1がプリフェッチ命令1を取得すると、1つのステージで、プリフェッチ命令1のアシスタントコア2への転送と実行依頼を行い、さらに命令4を実行する。したがって、比較例の構成では、プリフェッチ命令の存在によって、計算コア1−1でのパイプラインに遅延は生じていない。
一方、アシスタントコア2は、プリフェッチ命令の実行依頼を受けると、例えば、計算コア1−1が命令4、5を実行する間に、プリフェッチ命令1に対応するプリフェッチを実行する。
ところで、計算コア1−2は、命令12の次にプリフェッチ命令2を取得する。しかし、図3の例では、計算コア1−2がプリフェッチ命令2を取得したとき、アシスタントコア2は、プリフェッチ命令2によるプリフェッチを実行中である。したがって、アシスタントコア2は、計算コア1−2からプリフェッチ命令2の実行依頼を受けても、直ちにプリフェッチ命令2を実行することができない。このため、アシスタントコア2によるプリフェッチ命令2の実行開始と実行完了が遅延する。したがって、計算コア1−2において、プリフェッチ命令2によって取得されるデータを処理する命令15の実行開始タイミングがプリフェッチ命令2の実行完了まで遅延する。すなわち、比較例の構成では、複数の計算コア1が並列に命令を実行する場合に、プリフェッチ命令によっては、一部のコアについて、データが事前に準備できない場合が生じ得る。
図4から図8を参照して、実施例に係る演算処理装置10を説明する。図4は、実施例1に係る演算処理装置10の構成を例示する図である。演算処理装置10は、複数の計算コア1と、複数のアシスタントコア2と、キャッシュスケジューラ3と、キャッシュメモリ4と、メモリ5と、クロスバー6A、6Bと、を有する。演算処理装置10は、図1に例示した比較例の演算処理装置50と比較して、アシスタントコア2を複数個有し、さらに、キャッシュスケジューラ3を有している。複数のアシスタントコア2およびキャッシ
ュスケジューラ3の構成以外の演算処理装置10の構成は、比較例の演算処理装置50と同様である。計算コア1が第1の処理部の一例である。アシスタントコア2が第2の処理部の一例である。キャッシュスケジューラ3がスケジュール処理部の一例である。
ュスケジューラ3の構成以外の演算処理装置10の構成は、比較例の演算処理装置50と同様である。計算コア1が第1の処理部の一例である。アシスタントコア2が第2の処理部の一例である。キャッシュスケジューラ3がスケジュール処理部の一例である。
アシスタントコア2の構成および作用は、比較例の演算処理装置50のものと同様である。ただし、実施例の演算処理装置10では、複数のアシスタントコア2が、クロスバー6Aを介して並列にキャッシュメモリ4にアクセスする点が比較例の演算処理装置50と相違する。
すなわち、複数の計算コア1および複数のアシスタントコア2は、クロスバー6Aを介して並列にキャッシュメモリ4にアクセスする。例えば、図1の場合と同様、キャッシュメモリ4は、8個のバンクに分割される。クロスバー6Aは、複数の計算コア1および複数のアシスタントコア2に含まれる8個のコアを並列にキャッシュメモリ4の8個のバンクに接続する。ただし、本実施例において、キャッシュメモリ4のバンク数が8個に限定される訳ではない。
さらに、実施例では、各アシスタントコア2は、それぞれキャッシュスケジューラ3から読み出し可能なレジスタ7を有している。レジスタ7には、各アシスタントコア2が、使用中である否かを示すビジーフラグが各アシスタントコア2によって個別に設定される。アシスタントコア2が使用中とは、アシスタントコア2がプリフェッチを実行中である状態を例示できる。
キャッシュスケジューラ3は、例えば、主記憶装置に実行可能に展開された命令を実行するコアと、コアが実行する命令列およびコアが処理するデータを記憶する主記憶装置を有する。キャッシュスケジューラ3は、主記憶装置の命令列を実行することで、クロスバー6Bを介して複数の計算コア1および複数のアシスタントコア2と通信する。なお、クロスバー6Bとクロスバー6Aとは同一のクロスバーであってもよい。すなわち、複数の計算コア1、アシスタントコア2、キャッシュスケジューラ3、およびキャッシュメモリ4がクロスバー6Aによって、接続される構成であってもよい。ただし、クロスバー6Aは、クロスバー6Bとは独立にキャッシュメモリ4の各バンクと、複数の計算コア1および複数アシスタントコア2を含むコアとを接続するものであってもよい。この場合に、クロスバー6Bは、クロスバー6Aおよびキャッシュメモリ4とは独立に、キャッシュスケジューラ3と、複数の計算コア1および複数のアシスタントコア2を含むコアとを接続すればよい。
いずれの構成であっても、キャッシュスケジューラ3は、クロスバー6Bを介して、計算コア1からプリフェッチ命令の通知を受ける。プリフェッチ命令には、プリフェッチ対象となるメモリ5のアドレスを含む。
キャッシュスケジューラ3は、いずれかの計算コア1からプリフェッチ命令の通知を受けると、複数のアシスタントコア2のうち、空き状態にあってプリフェッチ命令を実行可能なアシスタントコア2を決定する。例えば、キャッシュスケジューラ3は、レジスタ7にアクセスし、空き状態にあるアシスタントコア2が複数ある場合には、いずれかを選択する。ただし、選択の仕方に限定がある訳ではない。例えば、キャッシュスケジューラ3は、レジスタ7によって空き状態にあることを最初に認識したアシスタントコア2を選択すればよい。なお、図10の構成では、キャッシュスケジューラ3は、専用の伝送路を通じて使用フラグ7にアクセスする。ただし、キャッシュスケジューラ3は、クロスバー7Bを通じて使用フラグ7にアクセスする構成としてもよい。
そして、キャッシュスケジューラ3は、選択した空き状態にあるアシスタントコア2に
、計算コア1から通知されたプリフェッチ命令の実行を依頼する。プリフェッチ命令の実行依頼を受けたアシスタントコア2は、プリフェッチ命令で指定されたメモリ5のアドレスからプリフェッチを実行する。したがって、計算コア1がメモリ5にアクセスすると、アクセスしたアドレスのデータはキャッシュメモリ4に用意されていることになる。
、計算コア1から通知されたプリフェッチ命令の実行を依頼する。プリフェッチ命令の実行依頼を受けたアシスタントコア2は、プリフェッチ命令で指定されたメモリ5のアドレスからプリフェッチを実行する。したがって、計算コア1がメモリ5にアクセスすると、アクセスしたアドレスのデータはキャッシュメモリ4に用意されていることになる。
図5に、キャッシュスケジューラ3が実行する処理のフローチャートを例示する。この処理では、まず、キャッシュスケジューラ3は、伝送路を介していずれかの計算コア1からプリフェッチ命令の通知の受信がある否かを判定する(S1)。プリフェッチ命令の通知の受信があると、キャッシュスケジューラ3は、通知されたプリフェッチ命令を受け取る(S2)。そして、キャッシュスケジューラ3は、主記憶装置のキューにプリフェッチ命令を格納する(S3)。
そして、キャッシュスケジューラ3は、キューにプリフェッチ命令が待ち状態で残っているか、否かを判定する(S4)。S4の判定で、待ち状態のプリフェッチ命令がある場合、キャッシュスケジューラ3は、空きアシスタントコア2を探索する(S5)。上述のように、キャッシュスケジューラ3は、複数のアシスタントコア2それぞれのレジスタ7を参照し、アシスタントコア2がそれぞれ空き状態か否かを判定すればよい。
そして、S5の処理の結果、空きアシスタントコア2が存在しない場合(S6でNO)、キャッシュスケジューラ3は、制御をS1に戻す。すなわち、プリフェッチ命令の通知の有無の判定から処理を繰り返す。一方、S6の判定で、空きアシスタントコア2が存在した場合(S6でYES)、S5で探索された空きアシスタントコア2にクロスバー6Bを通じてアクセスし、プリフェッチ命令の実行を依頼する(S7)。プリフェッチ命令は、例えば、スケジューラ3からアシスタントコア2への所定のコマンドを用いて依頼される。その後、キャッシュスケジューラ3は、制御をS1に戻す。
図6に、プリフェッチ命令の実行依頼を受けたアシスタントコア2の処理を例示する。図6の処理は、アシスタントコア2がクロスバー6Bを介して、キャッシュスケジューラ3からのプリフェッチ命令の実行依頼を受けたときに開始する。プリフェッチ命令の実行依頼を受けると、アシスタントコア2は、まず、レジスタ7に、使用中を示すビジーフラグを設定する(A1)。そして、プリフェッチ命令の実行依頼で指定されたメモリ5のアドレスからプリフェッチ命令を実行する(A2)。そして、プリフェッチ命令が完了すると、アシスタントコア2は、レジスタ7に設定された使用中を示すビジーフラグをクリアする(A3)。
図7に、実施例1の演算処理装置10の効果を例示する。ここでは、比較例の図2と同様の命令が実行される場合を想定する。すなわち、図2と同様、計算コア1−1は、命令3の次に、プリフェッチ命令を認識する。例えば、計算コア1−1は、命令3の次の命令フェッチの後、デコードされた命令列にプリフェッチ命令があると、プリフェッチ命令をキャッシュスケジューラ3に通知する。キャッシュスケジューラ3は、計算コア1−1からプリフェッチ命令の通知を受けると、図5のフローにしたがって、空き状態のアシスタントコア2を検索し、プリフェッチ命令の実行を依頼する。この場合、プリフェッチ命令によってプリフェッチされたデータが命令6で利用されるとする。
同様に、計算コア1−2は、命令12の次に、プリフェッチ命令を認識する。例えば、計算コア1−2は、命令12の次の命令フェッチの後、デコードされた命令列にプリフェッチ命令があると、プリフェッチ命令をキャッシュスケジューラ3に通知する。キャッシュスケジューラ3は、計算コア1−2からプリフェッチ命令の通知を受けると、空き状態のアシスタントコア2を検索し、プリフェッチ命令の実行を依頼する。この場合、プリフェッチ命令によってプリフェッチされたデータが命令15で利用されるとする。
比較例の場合と異なり、実施例1では、キャッシュスケジューラ3によって検索された空き状態の複数のアシスタントコア2がクロスバー6Aを通じて、並列にキャッシュメモリ4のバンクにアクセス可能である。したがって、図7に例示したように、計算コア1−1において、命令3の次に認識されたプリフェッチ命令はアシスタントコア2−1によって実行され、計算コア1−2において、命令12の次に認識されたプリフェッチ命令は、アシスタントコア2−2によって実行される。
アシスタントコア2−1によるプリフェッチと、アシスタントコア2−2によるプリフェッチとは、クロスバー6Aおよびキャッシュメモリ4の複数のバンクを介して、並列に実行され得る。したがって、比較例の演算処理装置50の例とは異なり、実施例1の演算処理装置10では、異なる計算コア1で複数のプリフェッチ命令の実行が要求されている場合において、キャッシュスケジューラ3のスケジューリングにより複数のアシスタントコア2の並列動作が可能となる。
すなわち、キャッシュスケジューラ3は、計算コア1からプリフェッチの要求を受けると、空き状態にあるアシスタントコア2を検索し、空き状態にあるアシスタントコア2にプリフェッチの実行を依頼する。その結果、本実施例では、複数の計算コア1がプリフェッチを並列に要求する場合も、空き状態にあるアシスタントコア2によって並列にプリフェッチが可能となる。したがって、実施例1では、それぞれの計算コア1でのプリフェッチ要求によるキャッシュメモリ4へのデータの搭載が、そのデータを必要する命令実行に間に合う可能性を高めることができる。
さらに、キャッシュスケジューラ3からプリフェッチの依頼を受けたアシスタントコア2は、キャッシュスケジューラ3から読み取り可能なレジスタ7にビジーフラグを設定し、プリフェッチ完了後に、ビジーフラグをクリアする。したがって、キャッシュスケジューラ3は、簡易にアシスタントコア2の空き状態を管理できる。
図8および図9を参照して、実施例2に係る演算処理装置10Aを説明する。実施例1では、キャッシュスケジューラ3と複数のアシスタントコア2によって、並列にプリフェッチ命令を実行する処理例を説明した。実施例2では、演算処理装置10Aが、複数のコアグループA、B等に分かれた計算コア、アシスタントコア、キャッシュメモリを有する場合について説明する。演算処理装置10Aが、複数のコアグループA、B等に分かれる点以外では、演算処理装置10Aの構成は、実施例1の演算処理装置10と同様である。そこで、実施例2の構成要素において、実施例1と同様の構成については、同一の符号を付してその説明を省略する。
図8に、実施例2に係る演算処理装置の構成を例示する。図8のように、演算処理装置10Aは、メモリ5と、コアグループAと、コアグループBと、キャッシュスケジューラ3を有する。また、コアグループAは、複数の計算コア1−Aと、複数のアシスタントコア2−Aと、キャッシュメモリ4−Aと、クロスバー6A−Aとを有する。また、コアグループBは、複数の計算コア1−Bと、複数のアシスタントコア2−Bと、キャッシュメモリ4−Bと、クロスバー6A−Bとを有する。
コアグループAと、コアグループBとの間は、クロスバー6Cを通じて接続されている。例えば、コアグループAの計算コア1−Aがキャッシュメモリ4−Bにアクセスするためには、コアグループA内のクロスバー6A−A、コアグループB内のクロスバー6A−B、およびコアグループ間のクロスバー6Cが経由されることになる。したがって、コアグループA内の計算コア1−AがコアグループA内のキャッシュメモリ4−Aにアクセスする時間よりも、コアグループA外のキャッシュメモリ4−Bにアクセスする方が時間を要し、アクセスは低速となる。コアグループAが第1のグループの一例である。コアグループAの複数の計算コア1−Aが第1の処理部の一部の例である。コアグループAの複数のアシスタントコア2−Aが第2の処理部の一部の例である。キャッシュメモリ4−Aが第1のキャッシュメモリの一例である。
コアグループB内の計算コア1−Bが、コアグループB外のキャッシュメモリ4−Aにアクセスする場合も同様である。コアグループBが第2のグループの一例である。コアグループBの複数の計算コア1−Bが第1の処理部の他の一部の例である。コアグループBの複数のアシスタントコア2−Bが第2の処理部の他の一部の例である。キャッシュメモリ4−Bが第2のキャッシュメモリの一例である。
実施例2においては、キャッシュスケジューラ3は、プリフェッチの通知を受けた場合に、プリフェッチの通知を行った計算コアと同一のコアグループのアシスタントコアがプリフェッチを行うようにスケジューリングする。
図9に、実施例2に係るキャッシュスケジューラ3の処理をフローチャートに例示する。図9の処理は、S3AおよびS5Aの処理以外は、図5の処理と同様である。図9の例では、キャッシュスケジューラ3は、通知されたプリフェッチ命令を受け取ると(S2)、主記憶装置のコアグループごとに分かれたキューにプリフェッチ命令を格納する(S3A)。
そして、待ち状態のプリフェッチ命令がある場合、キャッシュスケジューラ3は、プリフェッチ命令のキューからコアグループを判定する。そして、キャッシュスケジューラ3は、待ち状態にあるプリフェッチ命令を通知した計算コア1と同一のコアグループの空きアシスタントコア2を探索する(S5A)。例えば、コアグループAの計算コア1−Aがプリフェッチ命令を通知し、コアグループAのキューに保持されたプリフェッチ命令に対して、キャッシュスケジューラ3は、コアグループAのアシスタントコア2−Aを検索する。そして、キャッシュスケジューラ3は、コアグループAの複数のアシスタントコア2−Aのいずれかが空き状態であるか否かを判定する(S6)。そして、キャッシュスケジューラ3は、コアグループAの複数のアシスタントコア2−Aのいずれかに、空きがある場合に、コアグループAの空き状態のアシスタントコア2−Aのいずれかを選択し、選択したアシスタントコア2にプリフェッチ命令の実行を依頼する(S7)。以上は、コアグループAにおける処理を例として説明したが、コアグループBにおいても、処理は同様である。
以上のように、実施例2の構成では、複数のコアグループに分かれた計算コア1、アシスタントコア2、キャッシュメモリ4に対して、プリフェッチ命令を通知した計算コア1と同一のコアグループのアシスタントコア2が同一のコアグループのキャッシュメモリ4に、プリフェッチを行う。したがって、計算コア1は、自身が所属するコアグループのキャッシュメモリ4にプリフェッチの結果を取得することが可能となる。つまり、計算コア1は、異なるコアグループのキャッシュメモリ4よりも高速に、自グループ内のキャッシュメモリ4からプリフェッチの結果を利用できる。以上は、コアグループA、Bを例に説明したが、コアグループ数が3以上の場合も同様である。
《コンピュータが読み取り可能な記録媒体》
コンピュータその他の機械、装置(以下、コンピュータ等)に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
《コンピュータが読み取り可能な記録媒体》
コンピュータその他の機械、装置(以下、コンピュータ等)に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、CD−ROM、CD−R/W、DVD、ブルーレイディスク、DAT、8mmテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスクやROM(リードオンリーメモリ)等がある。
《その他》
本実施形態は、以下の態様(付記と呼ぶ)を含む。付記の各構成は、他の付記の構成と任意に組み合わせることができる。
本実施形態は、以下の態様(付記と呼ぶ)を含む。付記の各構成は、他の付記の構成と任意に組み合わせることができる。
(付記1)
キャッシュメモリに接続される複数の第1の処理部と、
前記キャッシュメモリに接続されるとともに前記第1の処理部が処理するデータを前記複数の第1の処理部のそれぞれの処理前に前記キャッシュメモリに取得する複数の第2の処理部と、
前記複数の第2の処理部の前記データの前記キャッシュメモリへの取得のスケジュールを制御するスケジュール処理部と、を備える演算処理装置。
キャッシュメモリに接続される複数の第1の処理部と、
前記キャッシュメモリに接続されるとともに前記第1の処理部が処理するデータを前記複数の第1の処理部のそれぞれの処理前に前記キャッシュメモリに取得する複数の第2の処理部と、
前記複数の第2の処理部の前記データの前記キャッシュメモリへの取得のスケジュールを制御するスケジュール処理部と、を備える演算処理装置。
(付記2)
前記第1の処理部は、処理するデータの取得を前記スケジュール処理部に要求し、
前記スケジュール処理部は、前記キャッシュメモリへのデータの取得を実行中でない第2の処理部に、前記要求されたデータの取得を指示する付記1に記載の演算処理装置。
前記第1の処理部は、処理するデータの取得を前記スケジュール処理部に要求し、
前記スケジュール処理部は、前記キャッシュメモリへのデータの取得を実行中でない第2の処理部に、前記要求されたデータの取得を指示する付記1に記載の演算処理装置。
(付記3)
前記キャッシュメモリは、第1のキャッシュメモリと第2のキャッシュメモリを有し、
前記複数の第1の処理部の一部と、前記複数の第2の処理部の一部と、前記第1のキャッシュメモリとが第1のグループに属し、前記複数の第1の処理部の他の一部と、前記複数の第2の処理部の他の一部と、前記第2のキャッシュメモリとが第2のグループに属し、
前記スケジュール処理部は、前記それぞれのグループに属する第1の処理部からのデータの取得要求に対して、それぞれのグループに属する第2の処理部に前記要求されたデータの取得を指示する付記1または2に記載の演算処理装置。
前記キャッシュメモリは、第1のキャッシュメモリと第2のキャッシュメモリを有し、
前記複数の第1の処理部の一部と、前記複数の第2の処理部の一部と、前記第1のキャッシュメモリとが第1のグループに属し、前記複数の第1の処理部の他の一部と、前記複数の第2の処理部の他の一部と、前記第2のキャッシュメモリとが第2のグループに属し、
前記スケジュール処理部は、前記それぞれのグループに属する第1の処理部からのデータの取得要求に対して、それぞれのグループに属する第2の処理部に前記要求されたデータの取得を指示する付記1または2に記載の演算処理装置。
(付記4)
記憶装置と、
前記記憶装置のデータを保持するキャッシュメモリと、
前記キャッシュメモリを共有する複数の第1の処理部と、
前記複数の第1の処理部とキャッシュメモリを共有するとともに前記第1の処理部が処理するデータを前記複数の第1の処理部のそれぞれの処理前に前記キャッシュメモリに取得する複数の第2の処理部と、
前記複数の第2の処理部の前記データの前記キャッシュメモリへの取得のスケジュールを制御するスケジュール処理部と、を備える情報処理装置。
記憶装置と、
前記記憶装置のデータを保持するキャッシュメモリと、
前記キャッシュメモリを共有する複数の第1の処理部と、
前記複数の第1の処理部とキャッシュメモリを共有するとともに前記第1の処理部が処理するデータを前記複数の第1の処理部のそれぞれの処理前に前記キャッシュメモリに取得する複数の第2の処理部と、
前記複数の第2の処理部の前記データの前記キャッシュメモリへの取得のスケジュールを制御するスケジュール処理部と、を備える情報処理装置。
(付記5)
前記第1の処理部は、処理するデータの取得を前記スケジュール処理部に要求し、
前記スケジュール処理部は、前記キャッシュメモリへのデータの取得を実行中でない第2の処理部に、前記要求されたデータの取得を指示する付記4に記載の情報処理装置。
前記第1の処理部は、処理するデータの取得を前記スケジュール処理部に要求し、
前記スケジュール処理部は、前記キャッシュメモリへのデータの取得を実行中でない第2の処理部に、前記要求されたデータの取得を指示する付記4に記載の情報処理装置。
(付記6)
前記キャッシュメモリは、第1のキャッシュメモリと第2のキャッシュメモリを有し、
前記複数の第1の処理部の一部と、前記複数の第2の処理部の一部と、前記第1のキャッシュメモリとが第1のグループに属し、前記複数の第1の処理部の他の一部と、前記複数の第2の処理部の他の一部と、前記第2のキャッシュメモリとが第2のグループに属し、
前記スケジュール処理部は、前記それぞれのグループに属する第1の処理部からのデータの取得要求に対して、それぞれのグループに属する第2の処理部に前記要求されたデータの取得を指示する付記4または5に記載の情報処理装置。
前記キャッシュメモリは、第1のキャッシュメモリと第2のキャッシュメモリを有し、
前記複数の第1の処理部の一部と、前記複数の第2の処理部の一部と、前記第1のキャッシュメモリとが第1のグループに属し、前記複数の第1の処理部の他の一部と、前記複数の第2の処理部の他の一部と、前記第2のキャッシュメモリとが第2のグループに属し、
前記スケジュール処理部は、前記それぞれのグループに属する第1の処理部からのデータの取得要求に対して、それぞれのグループに属する第2の処理部に前記要求されたデータの取得を指示する付記4または5に記載の情報処理装置。
(付記7)
キャッシュメモリを有する演算処理装置の制御方法であって、
演算処理装置の第1の処理部は、処理するデータのキャッシュメモリへの取得をスケジュール処理部に要求し、
前記スケジュール処理部は、前記キャッシュメモリへのデータの取得を実行中でない第2の処理部に、前記要求されたデータの取得を指示する演算処理装置の制御方法。
キャッシュメモリを有する演算処理装置の制御方法であって、
演算処理装置の第1の処理部は、処理するデータのキャッシュメモリへの取得をスケジュール処理部に要求し、
前記スケジュール処理部は、前記キャッシュメモリへのデータの取得を実行中でない第2の処理部に、前記要求されたデータの取得を指示する演算処理装置の制御方法。
(付記8)
前記キャッシュメモリは、第1のキャッシュメモリと第2のキャッシュメモリを有し、
前記複数の第1の処理部の一部と、前記複数の第2の処理部の一部と、前記第1のキャッシュメモリとが第1のグループに属し、前記複数の第1の処理部の他の一部と、前記複数の第2の処理部の他の一部と、前記第2のキャッシュメモリとが第2のグループに属し、
前記スケジュール処理部は、前記それぞれのグループに属する第1の処理部からのデータの取得要求に対して、それぞれのグループに属する第2の処理部に前記要求されたデータの取得を指示する付記7に記載の演算処理装置の制御方法。
前記キャッシュメモリは、第1のキャッシュメモリと第2のキャッシュメモリを有し、
前記複数の第1の処理部の一部と、前記複数の第2の処理部の一部と、前記第1のキャッシュメモリとが第1のグループに属し、前記複数の第1の処理部の他の一部と、前記複数の第2の処理部の他の一部と、前記第2のキャッシュメモリとが第2のグループに属し、
前記スケジュール処理部は、前記それぞれのグループに属する第1の処理部からのデータの取得要求に対して、それぞれのグループに属する第2の処理部に前記要求されたデータの取得を指示する付記7に記載の演算処理装置の制御方法。
1、1−A、1−B 計算コア
2、2−A、2−B アシスタントコア
3 キャッシュスケジューラ
4、4−A、4−B キャッシュメモリ
5 メモリ
6、6A、6B、6A−A、6A−B、6C クロスバー
7 レジスタ
2、2−A、2−B アシスタントコア
3 キャッシュスケジューラ
4、4−A、4−B キャッシュメモリ
5 メモリ
6、6A、6B、6A−A、6A−B、6C クロスバー
7 レジスタ
Claims (5)
- キャッシュメモリに接続される複数の第1の処理部と、
前記キャッシュメモリに接続されるとともに前記第1の処理部が処理するデータを前記複数の第1の処理部のそれぞれの処理前に前記キャッシュメモリに取得する複数の第2の処理部と、
前記複数の第2の処理部の前記データの前記キャッシュメモリへの取得のスケジュールを制御するスケジュール処理部と、を備える演算処理装置。 - 前記第1の処理部は、処理するデータの取得を前記スケジュール処理部に要求し、
前記スケジュール処理部は、前記キャッシュメモリへのデータの取得を実行中でない第2の処理部に、前記要求されたデータの取得を指示する請求項1に記載の演算処理装置。 - 前記キャッシュメモリは、第1のキャッシュメモリと第2のキャッシュメモリを有し、
前記複数の第1の処理部の一部と、前記複数の第2の処理部の一部と、前記第1のキャッシュメモリとが第1のグループに属し、前記複数の第1の処理部の他の一部と、前記複数の第2の処理部の他の一部と、前記第2のキャッシュメモリとが第2のグループに属し、
前記スケジュール処理部は、前記それぞれのグループに属する第1の処理部からのデータの取得要求に対して、それぞれのグループに属する第2の処理部に前記要求されたデータの取得を指示する請求項1または2に記載の演算処理装置。 - 記憶装置と、
前記記憶装置のデータを保持するキャッシュメモリと、
前記キャッシュメモリを共有する複数の第1の処理部と、
前記複数の第1の処理部とキャッシュメモリを共有するとともに前記第1の処理部が処理するデータを前記複数の第1の処理部のそれぞれの処理前に前記キャッシュメモリに取得する複数の第2の処理部と、
前記複数の第2の処理部の前記データの前記キャッシュメモリへの取得のスケジュールを制御するスケジュール処理部と、を備える情報処理装置。 - キャッシュメモリと複数の第1の処理部と複数の第2の処理部とを有する演算処理装置の制御方法であって、スケジュール処理部が、
前記複数の第1の処理部のいずれかから、処理するデータのキャッシュメモリへの取得要求を受け付けるステップと、
前記キャッシュメモリへのデータの取得を実行中でない第2の処理部に、前記要求されたデータの取得を指示するステップと、を実行する演算処理装置の制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013067651A JP2014191663A (ja) | 2013-03-27 | 2013-03-27 | 演算処理装置、情報処理装置、および演算処理装置の制御方法 |
US14/207,850 US20140297956A1 (en) | 2013-03-27 | 2014-03-13 | Arithmetic processing apparatus, information processing apparatus and control method of arithmetic processing apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013067651A JP2014191663A (ja) | 2013-03-27 | 2013-03-27 | 演算処理装置、情報処理装置、および演算処理装置の制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014191663A true JP2014191663A (ja) | 2014-10-06 |
Family
ID=51622004
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013067651A Withdrawn JP2014191663A (ja) | 2013-03-27 | 2013-03-27 | 演算処理装置、情報処理装置、および演算処理装置の制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20140297956A1 (ja) |
JP (1) | JP2014191663A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016091305A (ja) * | 2014-11-05 | 2016-05-23 | コニカミノルタ株式会社 | 画像形成装置及び並列処理制御プログラム並びに並列処理制御方法 |
JP7476638B2 (ja) | 2020-04-15 | 2024-05-01 | 株式会社デンソー | マルチプロセッサシステム |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6488711B2 (ja) * | 2015-01-14 | 2019-03-27 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
JP2020184179A (ja) * | 2019-05-08 | 2020-11-12 | ファナック株式会社 | 加工制御システム及び加工システム |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8949579B2 (en) * | 2010-10-04 | 2015-02-03 | International Business Machines Corporation | Ineffective prefetch determination and latency optimization |
US8688960B2 (en) * | 2010-10-15 | 2014-04-01 | International Business Machines Corporation | Managing migration of a prefetch stream from one processor core to another processor core |
-
2013
- 2013-03-27 JP JP2013067651A patent/JP2014191663A/ja not_active Withdrawn
-
2014
- 2014-03-13 US US14/207,850 patent/US20140297956A1/en not_active Abandoned
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016091305A (ja) * | 2014-11-05 | 2016-05-23 | コニカミノルタ株式会社 | 画像形成装置及び並列処理制御プログラム並びに並列処理制御方法 |
JP7476638B2 (ja) | 2020-04-15 | 2024-05-01 | 株式会社デンソー | マルチプロセッサシステム |
Also Published As
Publication number | Publication date |
---|---|
US20140297956A1 (en) | 2014-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6903187B2 (ja) | タイミングを中断させるモードにおけるソフトウェアの後方互換性テスト | |
US9619298B2 (en) | Scheduling computing tasks for multi-processor systems based on resource requirements | |
JP3871458B2 (ja) | コンピュータ・システム | |
US10019283B2 (en) | Predicting a context portion to move between a context buffer and registers based on context portions previously used by at least one other thread | |
JP2011258147A (ja) | 命令発行制御装置及び方法 | |
JP2009099097A (ja) | データ処理装置 | |
US10073783B2 (en) | Dual mode local data store | |
KR20190033084A (ko) | 로드 스토어 유닛들을 바이패싱하여 스토어 및 로드 추적 | |
KR102205899B1 (ko) | 메모리의 뱅크 충돌을 방지하기 위한 방법 및 장치 | |
JP2014191663A (ja) | 演算処理装置、情報処理装置、および演算処理装置の制御方法 | |
US9921838B2 (en) | System and method for managing static divergence in a SIMD computing architecture | |
JP2004517383A (ja) | 補助プロセッサを用いて一次プロセッサ用の命令をプリフェッチする方法および装置 | |
CN114168202B (zh) | 指令调度方法、指令调度装置、处理器及存储介质 | |
CN114661442B (zh) | 处理方法及装置、处理器、电子设备及存储介质 | |
JPH1097423A (ja) | ループ処理の並列実行制御に適したレジスタ構成を有するプロセッサ | |
CN112470122B (zh) | 具有提前返回预测的分支目标缓冲器 | |
JP2008269114A (ja) | マルチスレッドプロセッサ及びそれに用いるスレッド間同期操作方法 | |
US20160179572A1 (en) | Method and apparatus for selecting preemption technique | |
JP5630798B1 (ja) | プロセッサーおよび方法 | |
GB2551381A (en) | Method of fetching instructions in an instruction fetch unit | |
CN111026442B (zh) | 一种cpu中用于消除程序无条件跳转开销的方法及装置 | |
US20240281255A1 (en) | Super-thread processor | |
US20140281368A1 (en) | Cycle sliced vectors and slot execution on a shared datapath | |
US10606602B2 (en) | Electronic apparatus, processor and control method including a compiler scheduling instructions to reduce unused input ports | |
JP2023540036A (ja) | 分岐予測リダイレクトのための代替パス |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20151204 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20160617 |