(57)【要約】【課題】計算を行う複数の処理部に対して、データを効率的に取得できる技術を提供する。【解決手段】演算処理装置は、キャッシュメモリに接続される複数の第１の処理部と、キャッシュメモリに接続されるとともに第１の処理部が処理するデータを複数の第１の処理部のそれぞれの処理前に前記キャッシュメモリに取得する複数の第２の処理部と、複数の第２の処理部のデータの前記キャッシュメモリへの取得のスケジュールを制御するスケジュール処理部と、を備える。【選択図】図４
2014191663.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリに接続される複数の第１の処理部と、
前記キャッシュメモリに接続されるとともに前記第１の処理部が処理するデータを前記複数の第１の処理部のそれぞれの処理前に前記キャッシュメモリに取得する複数の第２の処理部と、
前記複数の第２の処理部の前記データの前記キャッシュメモリへの取得のスケジュールを制御するスケジュール処理部と、を備える演算処理装置。
【請求項２】
前記第１の処理部は、処理するデータの取得を前記スケジュール処理部に要求し、
前記スケジュール処理部は、前記キャッシュメモリへのデータの取得を実行中でない第２の処理部に、前記要求されたデータの取得を指示する請求項１に記載の演算処理装置。
【請求項３】
前記キャッシュメモリは、第１のキャッシュメモリと第２のキャッシュメモリを有し、
前記複数の第１の処理部の一部と、前記複数の第２の処理部の一部と、前記第１のキャッシュメモリとが第１のグループに属し、前記複数の第１の処理部の他の一部と、前記複数の第２の処理部の他の一部と、前記第２のキャッシュメモリとが第２のグループに属し、
前記スケジュール処理部は、前記それぞれのグループに属する第１の処理部からのデータの取得要求に対して、それぞれのグループに属する第２の処理部に前記要求されたデータの取得を指示する請求項１または２に記載の演算処理装置。
【請求項４】
記憶装置と、
前記記憶装置のデータを保持するキャッシュメモリと、
前記キャッシュメモリを共有する複数の第１の処理部と、
前記複数の第１の処理部とキャッシュメモリを共有するとともに前記第１の処理部が処理するデータを前記複数の第１の処理部のそれぞれの処理前に前記キャッシュメモリに取得する複数の第２の処理部と、
前記複数の第２の処理部の前記データの前記キャッシュメモリへの取得のスケジュールを制御するスケジュール処理部と、を備える情報処理装置。
【請求項５】
キャッシュメモリと複数の第１の処理部と複数の第２の処理部とを有する演算処理装置の制御方法であって、スケジュール処理部が、
前記複数の第１の処理部のいずれかから、処理するデータのキャッシュメモリへの取得要求を受け付けるステップと、
前記キャッシュメモリへのデータの取得を実行中でない第２の処理部に、前記要求されたデータの取得を指示するステップと、を実行する演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリと複数の処理部とを有する演算処理装置に関する。
【背景技術】
【０００２】
コンピュータの処理では、処理部、例えば、プロセッサがプログラム処理のためにメモリにアクセスし、データを読み出し、読み出したデータを処理し、メモリに書き戻すという情報処理が支配的となる場合がある。以下、処理部をコアともいう。
【０００３】
そこで、メモリアクセスの速度を向上させるために、処理部の外部にあるメモリと処理部との間に、キャッシュと呼称される高速な小容量メモリが配置される。つまり、キャッシュによって、処理部がメモリをアクセスする実質的な速度を高速化する方法が利用される。
【０００４】
このキャッシュの技術では、処理部がアクセスするメモリを予測して、外部メモリから事前に読み出しを行いキャッシュに書き込むプリフェッチが広く利用されている。プリフェッチは、例えば、コンパイル時にプリフェッチの実行を指定するプリフェッチ命令をバイナリプログラムに組み込むことで実現される。
【０００５】
一方、計算速度の向上においては、処理部のクロックサイクルを短く、高周波化する方法に限界がある。そのため、現在は、計算を行う多数の処理部を並列に動作させる方法がとられている。さらに、例えば、計算を行う処理部より前に、補助的な処理部を用いてプリフェッチ等の命令によりデータを事前に取得するシステムが提案されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特表２００４−５１７３８３号公報
【特許文献２】特開２０１０−５５４５８号公報
【特許文献３】特開２００１−１７５６１９号公報
【特許文献４】特開２００８−５９０５７号公報
【特許文献５】特開２０１１−１４１７４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、計算を行う複数の処理部を有する演算処理装置の場合、データを事前に取得するタイミングは、処理部ごとに異なる。したがって、データを事前に取得するための補助的処理部を用いる技術を、複数の処理部を有する演算処理装置に拡大すると、計算を行う処理部がデータを必要とするときに、データが用意できていないという事態も生じ得る。
【０００８】
そこで、本発明の課題は、計算を行う複数の処理部に対して、データを効率的に取得できる技術を提供することにある。
【課題を解決するための手段】
【０００９】
１つの側面では、開示の実施形態は、以下の演算処理装置によって例示される。すなわち、演算処理装置は、キャッシュメモリに接続される複数の第１の処理部と、キャッシュメモリに接続されるとともに第１の処理部が処理するデータを複数の第１の処理部のそれぞれの処理前に前記キャッシュメモリに取得する複数の第２の処理部と、複数の第２の処
理部のデータの前記キャッシュメモリへの取得のスケジュールを制御するスケジュール処理部と、を備える。
【発明の効果】
【００１０】
本演算処理装置によれば、計算を行う複数の処理部に対するデータを効率的に取得できる。
【図面の簡単な説明】
【００１１】
【図１】比較例に係る演算処理装置の構成を例示する図である。
【図２】複数の計算コアが実行する命令列を例示する図である。
【図３】複数の計算コアによって実行される命令列中の各命令の実行タイミングの関係を例示する図である。
【図４】実施例１に係る演算処理装置の構成を例示する図である。
【図５】実施例１に係るキャッシュスケジューラが実行する処理のフローチャートを例示する図である。
【図６】プリフェッチ命令の実行依頼を受けたアシスタントコアの処理を例示する図である。
【図７】実施例１の演算処理装置の効果を例示する図である。
【図８】実施例２に係る演算処理装置の構成を例示する図である。
【図９】実施例２に係るキャッシュスケジューラが実行する処理のフローチャートを例示する図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照して、一実施形態に係る演算処理装置について説明する。以下の実施形態の構成は例示であり、本演算処理装置は実施形態の構成には限定されない。
［比較例］
図１から図３を参照して、比較例に係る演算処理装置を説明する。図１は、比較例に係る演算処理装置５０の構成を例示する図である。演算処理装置５０は、複数の計算コア１と、アシスタントコア２と、キャッシュメモリ４と、メモリ５と、クロスバー６を有する。図１では、計算コア１は複数例示されている。以下、個々の計算コアを区別する場合には、例えば、計算コア１−１、１−２のように呼ぶことにする。また、複数の演算コア１をプロセッサともいう。
【００１３】
計算コア１は、メモリ５に実行可能に展開されたコンピュータプログラムの命令列とデータを、キャッシュメモリ４を介して取得する。そして、計算コア１は、取得した命令列の実行により、取得したデータを処理し、キャッシュメモリ４を介して処理結果をメモリ５に格納する。
【００１４】
計算コア１が実行する命令列中には、ソースプログラムのコンパイル時にコンパイラによって組み込まれたプリフェッチ命令が含まれる。計算コア１は、プリフェッチ命令を取得すると、アシスタントコア２にプリフェッチ命令の実行を要求する。
【００１５】
アシスタントコア２は、計算コア１からの要求にしたがって、プリフェッチ命令を実行する。プリフェッチ命令の実行によって、データがキャッシュメモリ４に取得される。したがって、計算コア１がデータを処理するときには、処理対象のデータは、キャッシュメモリ４に存在することになる。すなわち、アシスタントコア２は、プリフェッチを実行するコアとして、計算コア１が効率的に処理を実行することを支援する。
【００１６】
キャッシュメモリ４は、小容量であるが高速にデータの読み出しと書き込みが可能なメモリである。メモリ５は、キャッシュメモリ４よりも大容量であるが、データの読み出し
と書き込みの速度がキャッシュメモリ４よりも遅い。計算コア１が効率的にキャッシュメモリ４を利用することで、演算処理装置５０の処理が高速化される。
【００１７】
図１の構成で、複数の計算コア１およびアシスタントコア２は、互いに並列にキャッシュメモリ４にアクセス可能である。例えば、複数の計算コア１およびアシスタントコア２は、クロスバー６を通じて、キャッシュメモリ４に並列にアクセスする。クロスバー６は、インターコネクトとも呼ばれる。クロスバー６は、同一のサイクルにおいて、複数の計算コア１およびアシスタントコア２を含む、複数のコアとキャッシュメモリ４とを並列に接続する。１つの構成例では、キャッシュメモリ４を、例えば、８個のバンクに分割することが可能である。その場合に、クロスバー６は、８個のコアと８個のバンクとを並列に接続する。
【００１８】
図２に、複数の計算コア１−１、１−２等が実行する命令列を例示する。例えば、計算コア１−１は、命令１から命令３、プリフェッチ命令２、命令４から命令８を実行する。また、本実施例では、命令６がプリフェッチ命令１で取得されるデータを使用することがコンパイル段階で分かっているものとする。同様に、計算コア１−２は、命令９から命令１２、プリフェッチ命令２、命令１３から命令１６を実行する。また、命令１５がプリフェッチ命令１で取得されるデータを使用することがコンパイル段階で分かっているものとする。
【００１９】
図３は、複数の計算コア１−１、１−２等によって実行される命令列中の各命令の実行タイミングの関係を例示する図である。図３のように、プリフェッチ命令は、アシスタントコア２で実行される。例えば、パイプラインの処理中に、計算コア１−１がプリフェッチ命令１を取得すると、１つのステージで、プリフェッチ命令１のアシスタントコア２への転送と実行依頼を行い、さらに命令４を実行する。したがって、比較例の構成では、プリフェッチ命令の存在によって、計算コア１−１でのパイプラインに遅延は生じていない。
【００２０】
一方、アシスタントコア２は、プリフェッチ命令の実行依頼を受けると、例えば、計算コア１−１が命令４、５を実行する間に、プリフェッチ命令１に対応するプリフェッチを実行する。
【００２１】
ところで、計算コア１−２は、命令１２の次にプリフェッチ命令２を取得する。しかし、図３の例では、計算コア１−２がプリフェッチ命令２を取得したとき、アシスタントコア２は、プリフェッチ命令２によるプリフェッチを実行中である。したがって、アシスタントコア２は、計算コア１−２からプリフェッチ命令２の実行依頼を受けても、直ちにプリフェッチ命令２を実行することができない。このため、アシスタントコア２によるプリフェッチ命令２の実行開始と実行完了が遅延する。したがって、計算コア１−２において、プリフェッチ命令２によって取得されるデータを処理する命令１５の実行開始タイミングがプリフェッチ命令２の実行完了まで遅延する。すなわち、比較例の構成では、複数の計算コア１が並列に命令を実行する場合に、プリフェッチ命令によっては、一部のコアについて、データが事前に準備できない場合が生じ得る。
【実施例１】
【００２２】
図４から図８を参照して、実施例に係る演算処理装置１０を説明する。図４は、実施例１に係る演算処理装置１０の構成を例示する図である。演算処理装置１０は、複数の計算コア１と、複数のアシスタントコア２と、キャッシュスケジューラ３と、キャッシュメモリ４と、メモリ５と、クロスバー６Ａ、６Ｂと、を有する。演算処理装置１０は、図１に例示した比較例の演算処理装置５０と比較して、アシスタントコア２を複数個有し、さらに、キャッシュスケジューラ３を有している。複数のアシスタントコア２およびキャッシ
ュスケジューラ３の構成以外の演算処理装置１０の構成は、比較例の演算処理装置５０と同様である。計算コア１が第１の処理部の一例である。アシスタントコア２が第２の処理部の一例である。キャッシュスケジューラ３がスケジュール処理部の一例である。
【００２３】
アシスタントコア２の構成および作用は、比較例の演算処理装置５０のものと同様である。ただし、実施例の演算処理装置１０では、複数のアシスタントコア２が、クロスバー６Ａを介して並列にキャッシュメモリ４にアクセスする点が比較例の演算処理装置５０と相違する。
【００２４】
すなわち、複数の計算コア１および複数のアシスタントコア２は、クロスバー６Ａを介して並列にキャッシュメモリ４にアクセスする。例えば、図１の場合と同様、キャッシュメモリ４は、８個のバンクに分割される。クロスバー６Ａは、複数の計算コア１および複数のアシスタントコア２に含まれる８個のコアを並列にキャッシュメモリ４の８個のバンクに接続する。ただし、本実施例において、キャッシュメモリ４のバンク数が８個に限定される訳ではない。
【００２５】
さらに、実施例では、各アシスタントコア２は、それぞれキャッシュスケジューラ３から読み出し可能なレジスタ７を有している。レジスタ７には、各アシスタントコア２が、使用中である否かを示すビジーフラグが各アシスタントコア２によって個別に設定される。アシスタントコア２が使用中とは、アシスタントコア２がプリフェッチを実行中である状態を例示できる。
【００２６】
キャッシュスケジューラ３は、例えば、主記憶装置に実行可能に展開された命令を実行するコアと、コアが実行する命令列およびコアが処理するデータを記憶する主記憶装置を有する。キャッシュスケジューラ３は、主記憶装置の命令列を実行することで、クロスバー６Ｂを介して複数の計算コア１および複数のアシスタントコア２と通信する。なお、クロスバー６Ｂとクロスバー６Ａとは同一のクロスバーであってもよい。すなわち、複数の計算コア１、アシスタントコア２、キャッシュスケジューラ３、およびキャッシュメモリ４がクロスバー６Ａによって、接続される構成であってもよい。ただし、クロスバー６Ａは、クロスバー６Ｂとは独立にキャッシュメモリ４の各バンクと、複数の計算コア１および複数アシスタントコア２を含むコアとを接続するものであってもよい。この場合に、クロスバー６Ｂは、クロスバー６Ａおよびキャッシュメモリ４とは独立に、キャッシュスケジューラ３と、複数の計算コア１および複数のアシスタントコア２を含むコアとを接続すればよい。
【００２７】
いずれの構成であっても、キャッシュスケジューラ３は、クロスバー６Ｂを介して、計算コア１からプリフェッチ命令の通知を受ける。プリフェッチ命令には、プリフェッチ対象となるメモリ５のアドレスを含む。
【００２８】
キャッシュスケジューラ３は、いずれかの計算コア１からプリフェッチ命令の通知を受けると、複数のアシスタントコア２のうち、空き状態にあってプリフェッチ命令を実行可能なアシスタントコア２を決定する。例えば、キャッシュスケジューラ３は、レジスタ７にアクセスし、空き状態にあるアシスタントコア２が複数ある場合には、いずれかを選択する。ただし、選択の仕方に限定がある訳ではない。例えば、キャッシュスケジューラ３は、レジスタ７によって空き状態にあることを最初に認識したアシスタントコア２を選択すればよい。なお、図１０の構成では、キャッシュスケジューラ３は、専用の伝送路を通じて使用フラグ７にアクセスする。ただし、キャッシュスケジューラ３は、クロスバー７Ｂを通じて使用フラグ７にアクセスする構成としてもよい。
【００２９】
そして、キャッシュスケジューラ３は、選択した空き状態にあるアシスタントコア２に
、計算コア１から通知されたプリフェッチ命令の実行を依頼する。プリフェッチ命令の実行依頼を受けたアシスタントコア２は、プリフェッチ命令で指定されたメモリ５のアドレスからプリフェッチを実行する。したがって、計算コア１がメモリ５にアクセスすると、アクセスしたアドレスのデータはキャッシュメモリ４に用意されていることになる。
【００３０】
図５に、キャッシュスケジューラ３が実行する処理のフローチャートを例示する。この処理では、まず、キャッシュスケジューラ３は、伝送路を介していずれかの計算コア１からプリフェッチ命令の通知の受信がある否かを判定する（Ｓ１）。プリフェッチ命令の通知の受信があると、キャッシュスケジューラ３は、通知されたプリフェッチ命令を受け取る（Ｓ２）。そして、キャッシュスケジューラ３は、主記憶装置のキューにプリフェッチ命令を格納する（Ｓ３）。
【００３１】
そして、キャッシュスケジューラ３は、キューにプリフェッチ命令が待ち状態で残っているか、否かを判定する（Ｓ４）。Ｓ４の判定で、待ち状態のプリフェッチ命令がある場合、キャッシュスケジューラ３は、空きアシスタントコア２を探索する（Ｓ５）。上述のように、キャッシュスケジューラ３は、複数のアシスタントコア２それぞれのレジスタ７を参照し、アシスタントコア２がそれぞれ空き状態か否かを判定すればよい。
【００３２】
そして、Ｓ５の処理の結果、空きアシスタントコア２が存在しない場合（Ｓ６でＮＯ）、キャッシュスケジューラ３は、制御をＳ１に戻す。すなわち、プリフェッチ命令の通知の有無の判定から処理を繰り返す。一方、Ｓ６の判定で、空きアシスタントコア２が存在した場合（Ｓ６でＹＥＳ）、Ｓ５で探索された空きアシスタントコア２にクロスバー６Ｂを通じてアクセスし、プリフェッチ命令の実行を依頼する（Ｓ７）。プリフェッチ命令は、例えば、スケジューラ３からアシスタントコア２への所定のコマンドを用いて依頼される。その後、キャッシュスケジューラ３は、制御をＳ１に戻す。
【００３３】
図６に、プリフェッチ命令の実行依頼を受けたアシスタントコア２の処理を例示する。図６の処理は、アシスタントコア２がクロスバー６Ｂを介して、キャッシュスケジューラ３からのプリフェッチ命令の実行依頼を受けたときに開始する。プリフェッチ命令の実行依頼を受けると、アシスタントコア２は、まず、レジスタ７に、使用中を示すビジーフラグを設定する（Ａ１）。そして、プリフェッチ命令の実行依頼で指定されたメモリ５のアドレスからプリフェッチ命令を実行する（Ａ２）。そして、プリフェッチ命令が完了すると、アシスタントコア２は、レジスタ７に設定された使用中を示すビジーフラグをクリアする（Ａ３）。
【００３４】
図７に、実施例１の演算処理装置１０の効果を例示する。ここでは、比較例の図２と同様の命令が実行される場合を想定する。すなわち、図２と同様、計算コア１−１は、命令３の次に、プリフェッチ命令を認識する。例えば、計算コア１−１は、命令３の次の命令フェッチの後、デコードされた命令列にプリフェッチ命令があると、プリフェッチ命令をキャッシュスケジューラ３に通知する。キャッシュスケジューラ３は、計算コア１−１からプリフェッチ命令の通知を受けると、図５のフローにしたがって、空き状態のアシスタントコア２を検索し、プリフェッチ命令の実行を依頼する。この場合、プリフェッチ命令によってプリフェッチされたデータが命令６で利用されるとする。
【００３５】
同様に、計算コア１−２は、命令１２の次に、プリフェッチ命令を認識する。例えば、計算コア１−２は、命令１２の次の命令フェッチの後、デコードされた命令列にプリフェッチ命令があると、プリフェッチ命令をキャッシュスケジューラ３に通知する。キャッシュスケジューラ３は、計算コア１−２からプリフェッチ命令の通知を受けると、空き状態のアシスタントコア２を検索し、プリフェッチ命令の実行を依頼する。この場合、プリフェッチ命令によってプリフェッチされたデータが命令１５で利用されるとする。
【００３６】
比較例の場合と異なり、実施例１では、キャッシュスケジューラ３によって検索された空き状態の複数のアシスタントコア２がクロスバー６Ａを通じて、並列にキャッシュメモリ４のバンクにアクセス可能である。したがって、図７に例示したように、計算コア１−１において、命令３の次に認識されたプリフェッチ命令はアシスタントコア２−１によって実行され、計算コア１−２において、命令１２の次に認識されたプリフェッチ命令は、アシスタントコア２−２によって実行される。
【００３７】
アシスタントコア２−１によるプリフェッチと、アシスタントコア２−２によるプリフェッチとは、クロスバー６Ａおよびキャッシュメモリ４の複数のバンクを介して、並列に実行され得る。したがって、比較例の演算処理装置５０の例とは異なり、実施例１の演算処理装置１０では、異なる計算コア１で複数のプリフェッチ命令の実行が要求されている場合において、キャッシュスケジューラ３のスケジューリングにより複数のアシスタントコア２の並列動作が可能となる。
【００３８】
すなわち、キャッシュスケジューラ３は、計算コア１からプリフェッチの要求を受けると、空き状態にあるアシスタントコア２を検索し、空き状態にあるアシスタントコア２にプリフェッチの実行を依頼する。その結果、本実施例では、複数の計算コア１がプリフェッチを並列に要求する場合も、空き状態にあるアシスタントコア２によって並列にプリフェッチが可能となる。したがって、実施例１では、それぞれの計算コア１でのプリフェッチ要求によるキャッシュメモリ４へのデータの搭載が、そのデータを必要する命令実行に間に合う可能性を高めることができる。
【００３９】
さらに、キャッシュスケジューラ３からプリフェッチの依頼を受けたアシスタントコア２は、キャッシュスケジューラ３から読み取り可能なレジスタ７にビジーフラグを設定し、プリフェッチ完了後に、ビジーフラグをクリアする。したがって、キャッシュスケジューラ３は、簡易にアシスタントコア２の空き状態を管理できる。
【実施例２】
【００４０】
図８および図９を参照して、実施例２に係る演算処理装置１０Ａを説明する。実施例１では、キャッシュスケジューラ３と複数のアシスタントコア２によって、並列にプリフェッチ命令を実行する処理例を説明した。実施例２では、演算処理装置１０Ａが、複数のコアグループＡ、Ｂ等に分かれた計算コア、アシスタントコア、キャッシュメモリを有する場合について説明する。演算処理装置１０Ａが、複数のコアグループＡ、Ｂ等に分かれる点以外では、演算処理装置１０Ａの構成は、実施例１の演算処理装置１０と同様である。そこで、実施例２の構成要素において、実施例１と同様の構成については、同一の符号を付してその説明を省略する。
【００４１】
図８に、実施例２に係る演算処理装置の構成を例示する。図８のように、演算処理装置１０Ａは、メモリ５と、コアグループＡと、コアグループＢと、キャッシュスケジューラ３を有する。また、コアグループＡは、複数の計算コア１−Ａと、複数のアシスタントコア２−Ａと、キャッシュメモリ４−Ａと、クロスバー６Ａ−Ａとを有する。また、コアグループＢは、複数の計算コア１−Ｂと、複数のアシスタントコア２−Ｂと、キャッシュメモリ４−Ｂと、クロスバー６Ａ−Ｂとを有する。
【００４２】
コアグループＡと、コアグループＢとの間は、クロスバー６Ｃを通じて接続されている。例えば、コアグループＡの計算コア１−Ａがキャッシュメモリ４−Ｂにアクセスするためには、コアグループＡ内のクロスバー６Ａ−Ａ、コアグループＢ内のクロスバー６Ａ−Ｂ、およびコアグループ間のクロスバー６Ｃが経由されることになる。したがって、コアグループＡ内の計算コア１−ＡがコアグループＡ内のキャッシュメモリ４−Ａにアクセスする時間よりも、コアグループＡ外のキャッシュメモリ４−Ｂにアクセスする方が時間を要し、アクセスは低速となる。コアグループＡが第１のグループの一例である。コアグループＡの複数の計算コア１−Ａが第１の処理部の一部の例である。コアグループＡの複数のアシスタントコア２−Ａが第２の処理部の一部の例である。キャッシュメモリ４−Ａが第１のキャッシュメモリの一例である。
【００４３】
コアグループＢ内の計算コア１−Ｂが、コアグループＢ外のキャッシュメモリ４−Ａにアクセスする場合も同様である。コアグループＢが第２のグループの一例である。コアグループＢの複数の計算コア１−Ｂが第１の処理部の他の一部の例である。コアグループＢの複数のアシスタントコア２−Ｂが第２の処理部の他の一部の例である。キャッシュメモリ４−Ｂが第２のキャッシュメモリの一例である。
【００４４】
実施例２においては、キャッシュスケジューラ３は、プリフェッチの通知を受けた場合に、プリフェッチの通知を行った計算コアと同一のコアグループのアシスタントコアがプリフェッチを行うようにスケジューリングする。
【００４５】
図９に、実施例２に係るキャッシュスケジューラ３の処理をフローチャートに例示する。図９の処理は、Ｓ３ＡおよびＳ５Ａの処理以外は、図５の処理と同様である。図９の例では、キャッシュスケジューラ３は、通知されたプリフェッチ命令を受け取ると（Ｓ２）、主記憶装置のコアグループごとに分かれたキューにプリフェッチ命令を格納する（Ｓ３Ａ）。
【００４６】
そして、待ち状態のプリフェッチ命令がある場合、キャッシュスケジューラ３は、プリフェッチ命令のキューからコアグループを判定する。そして、キャッシュスケジューラ３は、待ち状態にあるプリフェッチ命令を通知した計算コア１と同一のコアグループの空きアシスタントコア２を探索する（Ｓ５Ａ）。例えば、コアグループＡの計算コア１−Ａがプリフェッチ命令を通知し、コアグループＡのキューに保持されたプリフェッチ命令に対して、キャッシュスケジューラ３は、コアグループＡのアシスタントコア２−Ａを検索する。そして、キャッシュスケジューラ３は、コアグループＡの複数のアシスタントコア２−Ａのいずれかが空き状態であるか否かを判定する（Ｓ６）。そして、キャッシュスケジューラ３は、コアグループＡの複数のアシスタントコア２−Ａのいずれかに、空きがある場合に、コアグループＡの空き状態のアシスタントコア２−Ａのいずれかを選択し、選択したアシスタントコア２にプリフェッチ命令の実行を依頼する（Ｓ７）。以上は、コアグループＡにおける処理を例として説明したが、コアグループＢにおいても、処理は同様である。
【００４７】
以上のように、実施例２の構成では、複数のコアグループに分かれた計算コア１、アシスタントコア２、キャッシュメモリ４に対して、プリフェッチ命令を通知した計算コア１と同一のコアグループのアシスタントコア２が同一のコアグループのキャッシュメモリ４に、プリフェッチを行う。したがって、計算コア１は、自身が所属するコアグループのキャッシュメモリ４にプリフェッチの結果を取得することが可能となる。つまり、計算コア１は、異なるコアグループのキャッシュメモリ４よりも高速に、自グループ内のキャッシュメモリ４からプリフェッチの結果を利用できる。以上は、コアグループＡ、Ｂを例に説明したが、コアグループ数が３以上の場合も同様である。
《コンピュータが読み取り可能な記録媒体》
コンピュータその他の機械、装置（以下、コンピュータ等）に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
【００４８】
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／Ｗ、ＤＶＤ、ブルーレイディスク、ＤＡＴ、８ｍｍテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスクやＲＯＭ（リードオンリーメモリ）等がある。
【００４９】
《その他》
本実施形態は、以下の態様（付記と呼ぶ）を含む。付記の各構成は、他の付記の構成と任意に組み合わせることができる。
【００５０】
（付記１）
キャッシュメモリに接続される複数の第１の処理部と、
前記キャッシュメモリに接続されるとともに前記第１の処理部が処理するデータを前記複数の第１の処理部のそれぞれの処理前に前記キャッシュメモリに取得する複数の第２の処理部と、
前記複数の第２の処理部の前記データの前記キャッシュメモリへの取得のスケジュールを制御するスケジュール処理部と、を備える演算処理装置。
【００５１】
（付記２）
前記第１の処理部は、処理するデータの取得を前記スケジュール処理部に要求し、
前記スケジュール処理部は、前記キャッシュメモリへのデータの取得を実行中でない第２の処理部に、前記要求されたデータの取得を指示する付記１に記載の演算処理装置。
【００５２】
（付記３）
前記キャッシュメモリは、第１のキャッシュメモリと第２のキャッシュメモリを有し、
前記複数の第１の処理部の一部と、前記複数の第２の処理部の一部と、前記第１のキャッシュメモリとが第１のグループに属し、前記複数の第１の処理部の他の一部と、前記複数の第２の処理部の他の一部と、前記第２のキャッシュメモリとが第２のグループに属し、
前記スケジュール処理部は、前記それぞれのグループに属する第１の処理部からのデータの取得要求に対して、それぞれのグループに属する第２の処理部に前記要求されたデータの取得を指示する付記１または２に記載の演算処理装置。
【００５３】
（付記４）
記憶装置と、
前記記憶装置のデータを保持するキャッシュメモリと、
前記キャッシュメモリを共有する複数の第１の処理部と、
前記複数の第１の処理部とキャッシュメモリを共有するとともに前記第１の処理部が処理するデータを前記複数の第１の処理部のそれぞれの処理前に前記キャッシュメモリに取得する複数の第２の処理部と、
前記複数の第２の処理部の前記データの前記キャッシュメモリへの取得のスケジュールを制御するスケジュール処理部と、を備える情報処理装置。
【００５４】
（付記５）
前記第１の処理部は、処理するデータの取得を前記スケジュール処理部に要求し、
前記スケジュール処理部は、前記キャッシュメモリへのデータの取得を実行中でない第２の処理部に、前記要求されたデータの取得を指示する付記４に記載の情報処理装置。
【００５５】
（付記６）
前記キャッシュメモリは、第１のキャッシュメモリと第２のキャッシュメモリを有し、
前記複数の第１の処理部の一部と、前記複数の第２の処理部の一部と、前記第１のキャッシュメモリとが第１のグループに属し、前記複数の第１の処理部の他の一部と、前記複数の第２の処理部の他の一部と、前記第２のキャッシュメモリとが第２のグループに属し、
前記スケジュール処理部は、前記それぞれのグループに属する第１の処理部からのデータの取得要求に対して、それぞれのグループに属する第２の処理部に前記要求されたデータの取得を指示する付記４または５に記載の情報処理装置。
【００５６】
（付記７）
キャッシュメモリを有する演算処理装置の制御方法であって、
演算処理装置の第１の処理部は、処理するデータのキャッシュメモリへの取得をスケジュール処理部に要求し、
前記スケジュール処理部は、前記キャッシュメモリへのデータの取得を実行中でない第２の処理部に、前記要求されたデータの取得を指示する演算処理装置の制御方法。
【００５７】
（付記８）
前記キャッシュメモリは、第１のキャッシュメモリと第２のキャッシュメモリを有し、
前記複数の第１の処理部の一部と、前記複数の第２の処理部の一部と、前記第１のキャッシュメモリとが第１のグループに属し、前記複数の第１の処理部の他の一部と、前記複数の第２の処理部の他の一部と、前記第２のキャッシュメモリとが第２のグループに属し、
前記スケジュール処理部は、前記それぞれのグループに属する第１の処理部からのデータの取得要求に対して、それぞれのグループに属する第２の処理部に前記要求されたデータの取得を指示する付記７に記載の演算処理装置の制御方法。
【符号の説明】
【００５８】
１、１−Ａ、１−Ｂ  計算コア
２、２−Ａ、２−Ｂ  アシスタントコア
３  キャッシュスケジューラ
４、４−Ａ、４−Ｂ  キャッシュメモリ
５  メモリ
６、６Ａ、６Ｂ、６Ａ−Ａ、６Ａ−Ｂ、６Ｃ  クロスバー  
７  レジスタ
【図１】
2014191663.tif 000003
【図２】
2014191663.tif 000004
【図３】
2014191663.tif 000005
【図４】
2014191663.tif 000006
【図５】
2014191663.tif 000007
【図６】
2014191663.tif 000008
【図７】
2014191663.tif 000009
【図８】
2014191663.tif 000010
【図９】
2014191663.tif 000011