(57)【要約】  それぞれ第１〜第３演算処理の対象である第１〜第３チェーン群において、第１演算処理後に連続して第２演算処理が実行される関係の、第１チェーン群を第１被判定チェーン群とし、第１演算処理後に、１以上の第３演算処理が実行された後に第２演算処理が実行される関係の、第１チェーン群に対して第３チェーン群を一定方式で計算したものを第２被判定チェーン群とし、第１又は第２被判定チェーン群が、第２演算処理の対象である第２チェーン群を包含するかを判定する判定回路（１２２１）と、第１及び第２被判定チェーン群が第２チェーン群を包含しない場合に、第２演算処理の識別子の初期化指示を生成する生成回路（１２２２）と、初期化指示が発行された場合に第２演算処理に対して初期化した識別子を獲得する一方、初期化指示が発行されなかった場合に第２演算処理に対して第１演算処理の識別子に連続する識別子を獲得する獲得回路（３２２）と、を備える。
2020090009.tif 000002
【特許請求の範囲】
【請求項１】
複数のチェーンを構成するマルチコアを有する演算処理装置であって、
前記複数のチェーンのうち第１の演算処理の対象である第１のチェーン群と、
前記複数のチェーンのうち第２の演算処理の対象である第２のチェーン群と、
前記複数のチェーンのうち第３の演算処理の対象である第３のチェーン群と、
において、
前記第１の演算処理の後に連続して前記第２の演算処理が実行される関係の、第１のチェーン群を第１の被判定チェーン群とし、
前記第１の演算処理の後に、少なくとも１つ以上の第３の演算処理が実行された後に前記第２の演算処理が実行される関係の、第１のチェーン群に対して第３のチェーン群を一定の方式で計算を実施したものを第２の被判定チェーン群とし、
前記複数のチェーンのうち前記第１又は第２の被判定チェーン群が、前記第２の演算処理の対象である前記第２のチェーン群を包含するかを判定する判定回路と、
前記第１及び第２の被判定チェーン群のいずれもが前記第２のチェーン群を包含しない場合に、前記第２の演算処理の識別子を初期化する初期化指示を生成する生成回路と、
前記初期化指示が発行された場合に前記第２の演算処理に対して初期化した識別子を獲得する一方、前記初期化指示が発行されなかった場合に前記第２の演算処理に対して前記第１の演算処理の識別子に連続する識別子を獲得する獲得回路と、
を備える、演算処理装置。
【請求項２】
前記一定の方式とは、前記第１のチェーン群に対して前記第３のチェーン群を取り除く処理である、
請求項１に記載の演算処理装置。
【請求項３】
前記獲得回路は、
前記複数のチェーン毎に前記マルチコアからメモリへのデータの読み書き処理を中継する複数の読み書き部にそれぞれ備えられ、
獲得した識別子を前記複数の読み書き部のうち他の読み書き部に通知する、
請求項１又は２に記載の演算処理装置。
【請求項４】
前記第２の演算処理に関する命令を複数に分割する分割回路を更に備え、
前記獲得回路は、識別子の獲得対象が前記命令の１分割目でない場合に、前記獲得対象に対して直前の獲得対象の識別子に連続する識別子を獲得する、
請求項１〜３のいずれか１項に記載の演算処理装置。
【請求項５】
複数のチェーンを構成するマルチコアを有する演算処理装置の制御方法であって、
前記複数のチェーンのうち第１の演算処理の対象である第１のチェーン群と、
前記複数のチェーンのうち第２の演算処理の対象である第２のチェーン群と、
前記複数のチェーンのうち第３の演算処理の対象である第３のチェーン群と、
において、
前記第１の演算処理の後に連続して前記第２の演算処理が実行される関係の、第１のチェーン群を第１の被判定チェーン群とし、
前記第１の演算処理の後に、少なくとも１つ以上の第３の演算処理が実行された後に前記第２の演算処理が実行される関係の、第１のチェーン群に対して第３のチェーン群を一定の方式で計算を実施したものを第２の被判定チェーン群とし、
前記複数のチェーンのうち前記第１又は第２の被判定チェーン群が、前記第２の演算処理の対象である前記第２のチェーン群を包含するかを判定し、
前記第１及び第２の被判定チェーン群のいずれもが前記第２のチェーン群を包含しない場合に、前記第２の演算処理の識別子を初期化する初期化指示を生成し、
前記初期化指示が発行された場合に前記第２の演算処理に対して初期化した識別子を獲得する一方、前記初期化指示が発行されなかった場合に前記第２の演算処理に対して前記第１の演算処理の識別子に連続する識別子を獲得する、
演算処理装置の制御方法。
【請求項６】
前記一定の方式とは、前記第１のチェーン群に対して前記第３のチェーン群を取り除く処理である、
請求項５に記載の演算処理装置の制御方法。
【請求項７】
前記複数のチェーン毎に前記マルチコアからメモリへのデータの読み書き処理を中継する複数の読み書き部のそれぞれによって識別子が獲得され、
獲得した識別子を前記複数の読み書き部のうち他の読み書き部に通知する、
請求項５又は６に記載の演算処理装置の制御方法。
【請求項８】
前記第２の演算処理に関する命令を複数に分割し、
識別子の獲得対象が前記命令の１分割目でない場合に、前記第２の演算処理に対して前記獲得対象に対して直前の獲得対象の識別子に連続する識別子を獲得する、
請求項５〜７のいずれか１項に記載の演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置及びその制御方法に関する。
【背景技術】
【０００２】
主記憶装置及びMemory Access Controller（ＭＡＣ）とコアのレジスタファイルとが１対多で結合されたマルチコア演算装置が存在する。【０００３】
マルチコアアーキテクチャでは、各コアにレジスタファイルと演算実行部とが設けられ、指示部がメモリのデータ読み出し／書き込み（別言すれば、ロード／ストア）や演算実行等の命令をデコードし、各読み書き部が命令を発行する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−１７５６３２号公報
【特許文献２】特表２００８−５０９４９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
マルチコア演算装置の性能は、メモリデータ転送のスループットの大きさに依存する。しかしながら、先行するマルチキャストロード命令のメモリリードコンプリーション受信まで後続のマルチキャストロード命令の処理を待つ制御が行なわれる場合には、メモリデータのスループットが低下するおそれがある。【０００６】
１つの側面では、本明細書に記載する技術は、マルチコアアーキテクチャにおいて、チェーン間の待ち合わせ時間を低減することにより、メモリデータのスループットを向上することを目的とする。
【課題を解決するための手段】
【０００７】
１つの側面において、演算処理装置は、複数のチェーンを構成するマルチコアを有する演算処理装置であって、前記複数のチェーンのうち第１の演算処理の対象である第１のチェーン群と、前記複数のチェーンのうち第２の演算処理の対象である第２のチェーン群と、前記複数のチェーンのうち第３の演算処理の対象である第３のチェーン群とにおいて、前記第１の演算処理の後に連続して前記第２の演算処理が実行される関係の、第１のチェーン群を第１の被判定チェーン群とし、前記第１の演算処理の後に、少なくとも１つ以上の第３の演算処理が実行された後に前記第２の演算処理が実行される関係の、第１のチェーン群に対して第３のチェーン群を一定の方式で計算を実施したものを第２の被判定チェーン群とし、前記複数のチェーンのうち前記第１又は第２の被判定チェーン群が、前記第２の演算処理の対象である前記第２のチェーン群を包含するかを判定する判定回路と、前記第１及び第２の被判定チェーン群のいずれもが前記第２のチェーン群を包含しない場合に、前記第２の演算処理の識別子を初期化する初期化指示を生成する生成回路と、前記初期化指示が発行された場合に前記第２の演算処理に対して初期化した識別子を獲得する一方、前記初期化指示が発行されなかった場合に前記第２の演算処理に対して前記第１の演算処理の識別子に連続する識別子を獲得する獲得回路と、を備える。
【発明の効果】
【０００８】
開示の演算処理装置によれば、マルチコアアーキテクチャにおいて、チェーン間の待ち合わせ時間を低減することにより、メモリデータのスループットを向上することができる。
【図面の簡単な説明】
【０００９】
【図１】関連例におけるアクセラレータの構成例を模式的に示すブロック図である。
【図２】関連例におけるアクセラレータの構成例およびメモリアクセス処理を説明するブロック図である。
【図３】図２に示したアクセラレータの書き込み部におけるメモリアクセス処理を説明するブロック図である。
【図４】図２に示したアクセラレータにおけるメモリアクセス処理を説明するフローチャートである。
【図５】図２に示したアクセラレータにおけるメモリアクセス処理を説明するフローチャートである。
【図６】図２に示したアクセラレータの読み書き部におけるマルチキャスト用ＲＥＱＩＤの初期化処理を説明するフローチャートである。
【図７】図２に示したアクセラレータの指示部におけるロード命令の発行処理を説明するフローチャートである。
【図８】図２に示したアクセラレータの読み書き部におけるＲＥＱＩＤの獲得処理を説明するフローチャートである。
【図９】図２に示した関連例におけるマルチキャストロード処理におけるＲＥＱＩＤの使用状況を例示するテーブルである。
【図１０】実施例における情報処理装置のハードウェア構成例を模式的に示すブロック図である。
【図１１】図１０に示したアクセラレータの構成例を模式的に示すブロック図である。
【図１２】図１１に示したアクセラレータにおけるリクエストパケットのフォーマットを示す図である。
【図１３】図１１に示したアクセラレータにおけるコンプリーションパケットのフォーマットを示す図である。
【図１４】図１１に示したアクセラレータにおけるメモリアクセス処理を説明するブロック図である。
【図１５】図１２に示したアクセラレータのマルチキャスト用ＲＥＱＩＤの同期監視回路の構成例を示す図である。
【図１６】図１２に示したアクセラレータのマルチキャスト用ＲＥＱＩＤの初期化信号生成回路の構成例を示す図である。
【図１７】図１２に示したアクセラレータのマルチキャスト用獲得回路の構成例を示す図である。
【図１８】図１１に示したアクセラレータの指示部におけるＲＥＱＩＤ初期化命令の発行処理を説明するフローチャートである。
【図１９】図１１に示したアクセラレータの読み書き部におけるＲＥＱＩＤの初期化処理を説明するフローチャートである。
【図２０】図１１に示したアクセラレータの指示部におけるロード命令の発行処理を説明するフローチャートである。
【図２１】図１１に示したアクセラレータの読み書き部におけるＲＥＱＩＤの獲得処理を説明するフローチャートである。
【図２２】図１１に示した実施例におけるマルチキャストロード処理におけるＲＥＱＩＤの使用状況を例示するテーブルである。
【発明を実施するための形態】
【００１０】
以下、図面を参照して一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。本実施形態は、その趣旨を逸脱しない範囲で種々変形して実施することができる。
【００１１】
また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【００１２】
以下、図中において、同一の符号を付した部分は同様の部分を示している。
【００１３】
〔Ａ〕関連例
図１は、関連例におけるアクセラレータ６００の構成例を模式的に示すブロック図である。
【００１４】
アクセラレータ６００は、演算命令を処理し、ＭＡＣ６，メモリ７及び複数（図示する例では、３つ）のコア８（「コア＃０〜＃２」）を備える。
【００１５】
ＭＡＣ６は、各コア８によるメモリ７に対するアクセスを処理する。
【００１６】
メモリ７は、一次記録メモリあるいはワーキングメモリとして利用されてよい。
【００１７】
各コア８は、ＭＡＣ６を介して、メモリ７に対するロード及びストアを実行する。各コア８は、指示部８１，読み書き部８２及び演算実行部８３として機能すると共に、レジスタファイル８４を記憶する。
【００１８】
レジスタファイル８４は、メモリ７から取得されたデータを記憶する。演算実行部８３は、レジスタファイル８４に記憶されたデータを用いて演算を行なう。
【００１９】
指示部８１は、ソフトウェアから送られたロード命令をデコードし、読み書き部８２にロード命令の実行を指示する。
【００２０】
読み書き部８２は、ロード命令をメモリアクセス単位に分割し、分割した各ロード命令にリクエストＩＤ（「ＲＥＱＩＤ」と称されてもよい。）を載せてメモリリードリクエストをＭＡＣ６へ発行する。
【００２１】
図２は、図１とは異なる、アクセラレータ６００におけるメモリアクセス処理を説明するブロック図であり、指示部８１及び読み書き部８２が各コアから独立して設けられる。図３は、図２に示したアクセラレータ６００の読み書き部８２におけるメモリアクセス処理を説明するブロック図である。
【００２２】
以下、図２及び図３を参照しながら、メモリアクセス処理を説明する。
【００２３】
指示部８１は、ソフトウェアからの命令をデコードする（図２及び図３の符号Ａ１参照）。
【００２４】
指示部８１は、全対象チェーンの読み書き部８２に、マルチキャストロード命令を発行する（図２及び図３の符号Ａ２参照）。この際、指示部８１は、全対象チェーンの読み書き部８２に対象チェーンを通知する。
【００２５】
各読み書き部８２の命令分割回路８２１における決定回路８２２は、対象命令が複数であるロード命令を受信したことにより、マルチキャストロード命令が発行されたと判断する。そして、命令分割回路８２１は、ロード命令を２５６バイト毎に分割する（図２及び図３の符号Ａ３参照）。
【００２６】
読み書き部８２のＲＥＱＩＤ管理回路８２３は、ユニキャスト用獲得回路８２４，マルチキャスト用獲得回路８２５及び獲得待ちバッファ８２６を備える。マルチキャスト用獲得回路８２５は、分割されたロード命令毎にＲＥＱＩＤとデータバッファ領域とを獲得する（図２及び図３の符号Ａ４参照）。ここで、マルチキャスト用獲得回路８２５は、分割された１つ目のリクエストに対して、ＲＥＱＩＤ＝０を取得する。マルチキャスト用獲得回路８２５は、ＲＥＱＩＤ＝０が使用中の場合には、ＲＥＱＩＤ＝０が解放されるまで待機する。以降、マルチキャスト用獲得回路８２５は、ＲＥＱＩＤが連番となるようにＲＥＱＩＤを取得する。
【００２７】
各読み書き部８２は、メモリリードリクエスト発行担当の読み書き部８２における獲得待ちバッファ８２６に対して、獲得したＲＥＱＩＤを通知する（図２及び図３の符号Ａ５参照）。これにより、メモリリードリクエスト発行担当の読み書き部８２は、各読み書き部８２において獲得されたＲＥＱＩＤが統一されたことを認識できる。
【００２８】
メモリリードリクエスト発行担当の読み書き部８２におけるメモリリクエスト生成回路８２７は、全ての対象チェーンの読み書き部８２から獲得したＲＥＱＩＤを通知された後、ＭＡＣ６のポート６１における受信バッファ６１１に対して、メモリリードリクエストを発行する（図２及び図３の符号Ａ６参照）。この際、ｄｓｔフィールドにおいて、対象チェーンがビットマップによって指定される。
【００２９】
全ての対象チェーンの読み書き部８２は、メモリリードリクエストの応答として、ＭＡＣ６のポート６１における送信バッファ６１２からメモリリードコンプリーションを受信し、付随するメモリリードデータをデータバッファ８２９に格納する（図２及び図３の符号Ａ７）。
【００３０】
各読み書き部８２のレジスタ制御リクエスト生成回路８２８は、データバッファ８２９からメモリリードデータを読み出し、コア８のレジスタファイル８４へのライトリクエストと共に読み台したメモリリードデータを転送する（図２及び図３の符号Ａ８参照）。
【００３１】
上述した符号Ａ４〜Ａ８によって示した処理は、分割された全てのリクエストに対して繰り返し実行される。
【００３２】
各読み書き部８２は、符号Ａ２において示したマルチキャストロード命令に対応する完了通知を指示部８１に対して発行する（図２及び図３の符号Ａ９参照）。
【００３３】
指示部８１は、全ての対象チェーンの読み書き部８２から完了通知を受け取り、命令の完了を認識する（図２及び図３の符号Ａ１０参照）。
【００３４】
上述した関連例におけるアクセラレータ６００におけるメモリアクセス処理を図４及び図５におけるフローチャート（ステップＳ１〜Ｓ１９）を参照しながら説明する。
【００３５】
図４において、指示部８１は、命令をデコードして、対象チェーンの読み書き部８２に命令を発行する（ステップＳ１）。
【００３６】
対象チェーンの読み書き部８２は、対象チェーンが複数あるかを判定する（ステップＳ２）。
【００３７】
対象チェーンが複数ない場合には（ステップＳ２のＮｏルート参照）、ユニキャスト動作が実施される。
【００３８】
一方、対象チェーンが複数ある場合には（ステップＳ２のＹｅｓルート参照）、読み書き部８２は、マルチキャスト用獲得回路８２５により、獲得したいＲＥＱＩＤが空いているかを判定する（ステップＳ３）。
【００３９】
獲得したいＲＥＱＩＤが空いていない場合には（ステップＳ３のＮｏルート参照）、ステップＳ３における処理が繰り返し実施される。
【００４０】
一方、獲得したいＲＥＱＩＤが空いている場合には（ステップＳ３のＹｅｓルート参照）、読み書き部８２は、リクエスト担当の読み書き部８２にＲＥＱＩＤが獲得できたことを通知する（ステップＳ４）。
【００４１】
読み書き部８２は、自身がリクエスト担当の読み書き部８２であるかを判定する（ステップＳ５）。
【００４２】
自身がリクエスト担当の読み書き部８２でない場合には（ステップＳ５のＮｏルート参照）、処理はステップＳ９へ進む。
【００４３】
一方、自身がリクエスト担当の読み書き部８２である場合には（ステップＳ５のＹｅｓルート参照）、読み書き部８２は、全ての対象チェーンからＲＥＱＩＤの獲得通知が発行されたかを判定する（ステップＳ６）。
【００４４】
ＲＥＱＩＤの獲得通知が発行されていない対象チェーンがある場合には（ステップＳ６のＮｏルート参照）、ステップＳ６における処理が繰り返し実施される。
【００４５】
一方、全ての対象チェーンからＲＥＱＩＤの獲得通知が発行された場合には（ステップＳ６のＹｅｓルート参照）、読み書き部８２は、ＭＡＣ６のポート６１において受信バッファ６１１に空きがあるかを判定する（ステップＳ７）。
【００４６】
受信バッファ６１１に空きがない場合には（ステップＳ７のＮｏルート参照）、ステップＳ７における処理が繰り返し実施される。
【００４７】
一方、受信バッファ６１１に空きがある場合には（ステップＳ７のＹｅｓルート参照）、読み書き部８２は、ＭＡＣ６にマルチキャストリードリクエストを発行する（ステップＳ８）。ここで、マルチキャストリードの宛先は、全ての対象チェーンに設定される。
【００４８】
ＭＡＣ６における処理は、図５のステップＳ１１以降に示す。
【００４９】
読み書き部８２は、分割した全てのリードリクエストを発行したかを判定する（ステップＳ９）。発行していないリードリクエストがある場合には（ステップＳ９のＮｏルート参照）、処理はステップＳ３へ戻る。
【００５０】
一方、分割した全てのリードリクエストを発行した場合には（ステップＳ９のＹｅｓルート参照）、読み書き部８２は、指示部８１からの後続の命令に対応するリクエストを発行する（ステップＳ１０）。そして、処理は、ステップＳ２へ戻る。
【００５１】
図５において、ＭＡＣ６は、マルチキャストリードリクエストを受信する（ステップＳ１１）。
【００５２】
ＭＡＣ６は、メモリリードを行なう（ステップＳ１２）。
【００５３】
ＭＡＣ６は、ｄｓｔフィールドの読み書き部８２に対して、リードデータを付加したコンプリーションを発行する（ステップＳ１３）。
【００５４】
読み書き部８２は、ＭＡＣ６からコンプリーションを受信する（ステップＳ１４）。
【００５５】
読み書き部８２は、各コア８に対し、リードデータを付加したレジスタライトリクエストを発行する（ステップＳ１５）。
【００５６】
読み書き部８２は、ＲＥＱＩＤ及びデータバッファ８２９を解放する（ステップＳ１６）。
【００５７】
読み書き部８２は、分割したリードリクエストに対応する、全てのレジスタライトリクエストを発行したか判定する（ステップＳ１７）。
【００５８】
発行していないレジスタライトリクエストがある場合には（ステップＳ１７のＮｏルート参照）、処理はステップＳ１４へ戻る。
【００５９】
一方、全てのレジスタライトリクエストを発行した場合には（ステップＳ１７のＹｅｓルート参照）、読み書き部８２は、指示部８１に自チェーンにおける命令の完了を通知する（ステップＳ１８）。
【００６０】
指示部８１は、全ての対象チェーンの読み書き部８２から命令完了の通知を受信したかを判定する（ステップＳ１９）。
【００６１】
命令完了の通知を受信していない対象チェーンがある場合には（ステップＳ１９のＮｏルート参照）、ステップＳ１９における処理が繰り返し実行される。
【００６２】
一方、全ての対象チェーンの読み書き部８２から命令完了の通知を受信した場合には（ステップＳ１９のＹｅｓルート参照）、指示部８１は命令の完了を認識して、メモリアクセス処理は終了する。
【００６３】
次に、関連例におけるアクセラレータ６００の読み書き部８２におけるマルチキャスト用ＲＥＱＩＤの初期化処理を、図６に示すフローチャート（ステップＳ２１〜Ｓ２５）に従って説明する。
【００６４】
読み書き部８２は、１つの命令のＮ番目の分割を処理する（ステップＳ２１）。
【００６５】
読み書き部８２は、Ｎが１であるかを判定する（ステップＳ２２）。
【００６６】
Ｎが１である場合には（ステップＳ２２のＹｅｓルート参照）、読み書き部８２は、マルチキャスト用獲得回路８２５を初期化する（ステップＳ２３）。そして、処理はステップＳ２５へ進む。
【００６７】
一方、Ｎが１でない場合には（ステップＳ２２のＮｏルート参照）、マルチキャスト用獲得回路８２５を更新する（ステップＳ２４）。
【００６８】
読み書き部８２は、マルチキャストにおいて発行するＲＥＱＩＤを決定する（ステップＳ２５）。そして、マルチキャスト用ＲＥＱＩＤの初期化処理は終了する。
【００６９】
次に、関連例におけるアクセラレータ６００の指示部８１におけるロード命令の発行処理を、図７に示すフローチャート（ステップＳ３１〜Ｓ３２）に従って説明する。
【００７０】
指示部８１は、ソフトウェアからのロード命令をデコードする（ステップＳ３１）。
【００７１】
指示部８１は、ロード命令及び対象チェーンを対象の読み書き部８２に発行する（ステップＳ３２）。そして、処理は図８のステップＳ４１以降の読み書き部８２における処理に引き継がれ、ロード命令の発行処理は終了する。
【００７２】
次に、関連例におけるアクセラレータ６００の読み書き部８２におけるＲＥＱＩＤの獲得処理を、図８に示すフローチャート（ステップＳ４１〜Ｓ４７）に従って説明する。
【００７３】
読み書き部８２は、図７のステップＳ３２に示した指示部８１からの指示に応じて、ロード命令及び対象チェーンを受信する（ステップＳ４１）。
【００７４】
読み書き部８２は、対象チェーンが複数あるかを判定する（ステップＳ４２）。
【００７５】
対象チェーンが複数ない場合には（ステップＳ４２のＮｏルート参照）、ユニキャスト動作が実施される。
【００７６】
一方、対象チェーンが複数ある場合には（ステップＳ４２のＹｅｓルート参照）、読み書き部８２は、ロード命令の１番目の分割を処理中であるかを判定する（ステップＳ４３）。
【００７７】
１番目の分割を処理中である場合には（ステップＳ４３のＹｅｓルート参照）、読み書き部８２は、マルチキャスト用獲得回路８２５を初期化する（ステップＳ４４）。そして、処理は、ステップＳ４６へ進む。
【００７８】
一方、１番目の分割を処理中でない場合には（ステップＳ４３のＮｏルート参照）、読み書き部８２は、マルチキャスト用獲得回路８２５を更新する（ステップＳ４５）。
【００７９】
読み書き部８２は、獲得したいＲＥＱＩＤが空いているかを判定する（ステップＳ４６）。
【００８０】
獲得したいＲＥＱＩＤが空いていない場合には（ステップＳ４６のＮｏルート参照）、ステップＳ４６における処理が繰り返し実行される。
【００８１】
一方、獲得したいＲＥＱＩＤが空いている場合には（ステップＳ４６のＹｅｓルート参照）、読み書き部８２は、獲得したＲＥＱＩＤの待ち合わせ処理を行なう（ステップＳ４７）。そして、ＲＥＱＩＤの獲得処理は終了する。
【００８２】
図９は、図２に示した関連例におけるマルチキャストロード処理におけるＲＥＱＩＤの使用状況を例示するテーブルである。
【００８３】
マルチコア演算装置の性能は、メモリデータ転送のスループットの大きさに依存する。上述した関連例では、マルチキャストロード命令が頻発しないことを前提とされている。そのため、マルチキャストロード命令が連続して指示部８１でデコードされ読み書き部８２に発行される場合には、各読み書き部８２は、１つ目のマルチキャストロード命令の実行によりマルチキャストに使用したリクエストＩＤ＝０が解放されるまで、２つ目のマルチキャストロード命令を実行できない。
【００８４】
例えば、図９に示すマルチキャストロード命令「１」〜「４」が連続して発行される場合を想定する。マルチキャストロード命令「１」の対象チェーンは＃０〜＃７であり、マルチキャストロード命令「２」の対象チェーンは＃０〜＃７である。また、マルチキャストロード命令「３」の対象チェーンは＃０〜＃３であり、マルチキャストロード命令「３」の対象チェーンは＃０〜＃７である。なお、各マルチキャストロード命令のメモリアクセスサイズは１キロバイトである。
【００８５】
各読み書き部８２がマルチキャストロード命令「１」を実行するにあたり、ＭＡＣ６へのマルチキャストメモリリードは合計４回発行される。この際に使用されるリクエストＩＤは、順に０，１，２，３である。
【００８６】
次に、読み書き部８２は、マルチキャストロード命令「１」を実行するにあたり、ＭＡＣ６へのマルチキャストメモリリードは合計４回発行される。この際に、未使用のリクエストＩＤは４〜１５であるがこれらのリクエストＩＤは使用できず、リクエストＩＤ＝０が解放するまで（別言すれば、「リード１−０１のコンプリーションを受信まで」）待ち、その後にリクエストＩＤ＝０が使用される。リクエストＩＤ＝１〜３についても、リクエストＩＤ＝０と同様である。
【００８７】
このため、マルチキャストロード命令「１」及び「２」について、メモリリードリクエストを連続して発行できない。マルチキャストロード命令「３」及び「４」についても、マルチキャストロード命令「１」及び「２」と同様に、メモリリードリクエストを連続して発行することができない。
【００８８】
これにより、各読み書き部８２間でリクエストＩＤを統一する処理のために、先行するマルチキャストロード命令のメモリリードのコンプリーションの受信まで後続のマルチキャストロード命令に対する処理が保留される。そして、メモリデータのスループットが低下してしまうおそれがある。
【００８９】
〔Ｂ〕実施形態の一例
〔Ｂ−１〕システム構成例
図１０は、実施例における情報処理装置１のハードウェア構成例を模式的に示すブロック図である。
【００９０】
情報処理装置１は、図１０に示すように、Central Processing Unit（ＣＰＵ）１０，Input/Output（Ｉ／Ｏ）コントローラ１１，アクセラレータ１２，ハードディスク１３，Ｉ／Ｏデバイス１４及びメモリ１５を有する。
【００９１】
Ｉ／Ｏコントローラ１１は、アクセラレータ１２，ハードディスク１３及びＩ／Ｏデバイス１４に接続される。ここで、Ｉ／Ｏデバイス１４は、アクセラレータ１２及びハードディスク１３以外のＩ／Ｏデバイスを指す。Ｉ／Ｏコントローラ１１は、ＣＰＵ１０からの指示を受けて、アクセラレータ１２，ハードディスク１３及びＩ／Ｏデバイス１４を制御する。そして、Ｉ／Ｏコントローラ１１は、アクセラレータ１２，ハードディスク１３及びＩ／Ｏデバイス１４とＣＰＵ１０との通信を中継する。
【００９２】
演算処理装置であるＣＰＵ１０は、Ｉ／Ｏコントローラ１１及びメモリ１５とバスで接続される。そして、ＣＰＵ１０は、メモリ１５とデータの送受信が可能である。また、ＣＰＵ１０は、Ｉ／Ｏコントローラ１１を介して、アクセラレータ１２，ハードディスク１３及びＩ／Ｏデバイス１４とデータの送受信が可能である。
【００９３】
ハードディスク１３は、Operating System（ＯＳ）や各種アプリケーションなどの様々なプログラムを格納する。
【００９４】
ＣＰＵ１０は、ハードディスク１３からプログラムを読み出し、メモリ１５上に展開して実行することで、ＯＳや各種アプリケーションを動作させる。アプリケーションとしては、例えば、ディープラーニングなどを実行するアプリケーションがある。
【００９５】
さらに、ＣＰＵ１０は、アプリケーションを実行する際の特定の処理をアクセラレータ１２に行なわせる。例えば、ＣＰＵ１０は、ディープラーニングなどにおける演算処理をアクセラレータ１２に行なわせる。具体的には、ＣＰＵ１０により実行されるソフトウェアが、Ｉ／Ｏコントローラ１１を介して演算に用いるデータとともに演算命令をアクセラレータ１２へ送信する。
【００９６】
図１１は、図１０に示したアクセラレータ１２の構成例を模式的に示すブロック図である。
【００９７】
アクセラレータ１２は、ＭＡＣ１２１，メモリ１２２，複数のコア１２３，指示部１２４及び読み書き部１２５を備える。
【００９８】
メモリ１２２は、一次記録メモリあるいはワーキングメモリとして利用されてよい。
【００９９】
ＭＡＣ１２１は、各コア１２３によるメモリ７に対するアクセスを処理する。ＭＡＣ１２１は、複数のポート１２１１（図１１では「Ｐ＃０〜＃７」と表記。）を備える。
【０１００】
複数のコア１２３と１つの読み書き部１２５と１つのポート１２１１とは、図１１において破線枠で示すチェーン＃０〜＃７毎に備えられる。図示する例では、各チェーンにおいて、７つのコア１２３が備えられる。例えば、チェーン＃０にはコア＃０−１〜＃０−Ｎが備えられ、チェーン＃１にはコア＃１−１〜＃１−Ｎが備えられ、チェーン＃７にはコア＃７−１〜＃７−Ｎが備えられる。
【０１０１】
各コア１２３は、読み書き部１２５及びＭＡＣ１２１を介して、メモリ１２２に対するロード及びストアを実行する。
【０１０２】
指示部１２４は、ソフトウェアから送られたロード命令をデコードし、読み書き部１２５にロード命令の実行を指示する。
【０１０３】
読み書き部１２５は、ロード命令をメモリアクセス単位に分割し、分割した各ロード命令にリクエストＩＤ（「ＲＥＱＩＤ」と称してもよい。）を載せてメモリリードリクエストをＭＡＣ１２１へ発行する。
【０１０４】
図１１に示すように、搭載されるコア１２３の数が多い場合には、回路実装や配線性の観点から、メモリ１２２へのアクセスバスをコア１２３間で共有しリング状に繋げた構成が採用される場合がある。
【０１０５】
ここで、同じメモリデータを複数のチェーンのコア群にロードする場合には、各読み書き部１２５がそれぞれ独立にメモリリードリクエストを発行すると、ＭＡＣ１２１は同じメモリ領域をリクエストの数だけリードすることになる。この場合には、ＭＡＣ１２１は同じ動作を繰り返すことになり、その間、後続命令の処理を待たせることになるため効率が悪い。そこで、命令は複数のチェーンを一度に指定したロード（「マルチキャストロード」と称してもよい。）命令がサポートされる。ＭＡＣ１２１及び読み書き部１２５は、複数のチェーンを指定したメモリリード（「マルチキャストリードリクエスト」と称してよい。）をサポートする。
【０１０６】
図１２は、図１１に示したアクセラレータ１２におけるリクエストパケットのフォーマットを示す図である。
【０１０７】
読み書き部１２５により生成されるマルチキャストリードリクエストは、図１２に示すフォーマットを有する。マルチキャストリードリクエストは、リクエストの種別を示すｏｐｃ、読み出したデータの送信先を示すｄｓｔ、割り当てられたＩＤを示すＲＥＱＩＤ及びデータの読み出しアドレスを示すＡｄｄｒｅｓｓが登録される。
【０１０８】
例えば、ｏｐｃ、ｄｓｔ及びＲＥＱＩＤは、第１サイクルで送られる。そして、Ａｄｄｒｅｓｓは、第１サイクル及び第２サイクルで送られる。
【０１０９】
図１３は、図１１に示したアクセラレータ１２におけるコンプリーションパケットのフォーマットを示す図である。
【０１１０】
読み書き部１２５により取得されるメモリリードリコンプリーションは、図１３に示すフォーマットを有する。メモリリードコンプリーションにおける第１サイクルで送信される領域は、リクエストの種別を示すｏｐｃ、応答の対象であるマルチキャストリードリクエストのＩＤを示すＲＥＱＩＤ及び応答のステータスであるＳｔａｔｕｓ、並びに、リザーブ（ｒｓｖ）の領域を有するヘッダが格納される。
【０１１１】
図１２に示したリクエストのｄｓｔフィールドには、コンプリーションが発行されるチェーンがビットマップにより指定される。図１２及び図１３に示したｏｐｃフィールドでは、メモリリード又はメモリライトのリクエストコンプリーションが判別される。図１３に示したＲＥＱＩＤフィールドは、図１２示したリクエストに対応するコンプリーションであり、同じ値が格納される。図１２に示したＡｄｄｒｅｓｓフィールドには、アクセスするアドレス値が格納される。
【０１１２】
指示部１２４は、各読み書き部１２５にロード命令と共に対象チェーンの情報を通知する。
【０１１３】
代表の読み書き部１２５は、ＭＡＣ１２１へのメモリリードリクエストの発行の際にｄｓｔフィールドに対象チェーンをビットマップで指定する。メモリリードリクエストを受け取ったＭＡＣ１２１は、メモリ１２２からデータを取得し、ｄｓｔフィールドで指定された全てのチェーンにコンプリーションを発行する。
【０１１４】
図１４は、図１１に示したアクセラレータ１２におけるメモリアクセス処理を説明するブロック図である。
【０１１５】
指示部１２４は、ソフトウェアからの命令をデコードする。指示部１２４は、全対象チェーンの読み書き部１２５に、マルチキャストロード命令を発行する。この際、指示部１２４は、全対象チェーンの読み書き部１２５に対象チェーンを通知する。指示部１２４は、ＲＥＱＩＤ初期化信号を読み書き部１２５へのインタフェース信号として、ロード命令と共に各読み書き部１２５に伝搬する。
【０１１６】
指示部１２４は、同期監視回路１２２１及び初期化信号生成回路１２２２を備える。
【０１１７】
図１５は、図１２に示したアクセラレータ１２のマルチキャスト用ＲＥＱＩＤの同期監視回路１２２１の構成例を示す図である。
【０１１８】
アクセラレータ１２においてチェーン＃０〜＃７が備えられる場合には、図１５に示すように、同期監視回路１２２１は、２８パターンの（Ｘ，Ｙ）の組み合わせを入力される。
【０１１９】
出力信号same_reqid_grp_XYも２８パターンあり、図１４に示したグループ表１２２０に格納される。load_validはロード命令のvalid信号であり、本回路の更新指示信号である。
【０１２０】
同期監視回路１２２１において、マルチキャストロード命令に対してchain[X]及び[Y]が共に対象チェーンである場合に、same_reqid_grp_XY=1に更新される。chain[X]及び[Y]の一方を対象とするマルチキャストロード命令、又は、chain[X]及び[Y]の一方を対象とするシングルキャストロード命令の場合には、same_reqid_grp_XY=0に更新される。また、chain[X]及び[Y]が共に対象チェーンでない場合には、前の値が保持される。
【０１２１】
same_reqid_grp_XY=1の場合に、chain[X]及び[Y]の読み書き部１２５が指示部１２４から最後に受信したロード命令は、同じマルチキャストロード命令であることを示す。
【０１２２】
従って、図１６を用いて後述されるmulticast_reqid_rst[7:0]により、既にchain[X]及び[Y]の読み書き部１２５では後述するマルチキャスト用獲得回路３２２が初期化済みであり、且つ、同じマルチキャストロード命令を処理していることから同じ数のＲＥＱＩＤが連番で使用される。そのため、次に同様のマルチキャストロード命令が処理される場合は、マルチキャスト用獲得回路３２２を初期化せずとも、同じＲＥＱＩＤを獲得できる状態であることを示す。つまり、same_reqid_grp_XY=1の場合には、マルチキャスト用獲得回路３２２が同期できていることを示す。
【０１２３】
一方、same_reqid_grp_XY=0である場合に、chain[X]及び[Y]の読み書き部１２５が最後に受信したロード命令は、異なるマルチキャストロード命令又はシングルキャストロード命令であることを示す。つまり、same_reqid_grp_XY=0の場合には、マルチキャスト用獲得回路３２２が同期されていないことを示す。
【０１２４】
別言すれば、同期監視回路１２２１は、複数のチェーンのうち第１又は第２の被判定チェーン群が、第２の演算処理の対象である第２のチェーン群を包含するかを判定する判定回路の一例である。第１の被判定チェーン群は、第１の演算処理の後に連続して第２の演算処理が実行される関係の、第１のチェーン群である。第２の被判定チェーン群は、第１の演算処理の後に、少なくとも１つ以上の第３の演算処理が実行された後に第２の演算処理が実行される関係の、第１のチェーン群に対して第３のチェーン群を一定の方式で計算を実施したものである。第１のチェーン群は複数のチェーンのうち第１の演算処理の対象であり、第２のチェーン群は複数のチェーンのうち第２の演算処理の対象であり、第３のチェーン群は複数のチェーンのうち第３の演算処理の対象である。
【０１２５】
ここで、一定の方式とは、第１のチェーン群に対して第３のチェーン群を取り除く処理である。
【０１２６】
図１６は、図１２に示したアクセラレータ１２のマルチキャスト用ＲＥＱＩＤの初期化信号生成回路１２２２の構成例を示す図である。
【０１２７】
初期化信号生成回路１２２２は、図１５に示したsame_reqid_grp_XYとマルチキャストロード発行対象のチェーンとを比較し、全ての対象チェーンにおける読み書き部１２５でマルチキャスト用のＲＥＱＩＤの同期がとれているかをチェックする。すなわち、初期化信号生成回路１２２２は、同期監視回路１２２１の出力について、same_reqid_grp_XY=1であるかをチェックする。
【０１２８】
初期化信号生成回路１２２２は、対象チェーンのいずれかにおいてsame_reqid_grp_XY=0であれば、マルチキャスト用のＲＥＱＩＤの同期が取れていないと判断し、multicast_reqid_rst[Z]=1（Zは、マルチキャストロード発行対象のチェーン）とする。一方、初期化信号生成回路１２２２は、全ての対象チェーンにおいてsame_reqid_grp_XY=1であれば、multicast_reqid_rst[Z]=0とする。
【０１２９】
別言すれば、初期化信号生成回路１２２２は、第１及び第２の被判定チェーン群のいずれもが第２のチェーン群を包含しない場合に、第２の演算処理の識別子を初期化する初期化指示を生成する生成回路の一例である。
【０１３０】
図１４に示すように、各読み書き部１２５の命令分割回路３１における決定回路３１１は、対象命令が複数であるロード命令を受信したことにより、マルチキャストロード命令が発行されたと判断する。そして、命令分割回路３１は、ロード命令を２５６バイト毎に分割する。
【０１３１】
別言すれば、命令分割回路３１は、第２の演算処理に関する命令を複数に分割する分割回路の一例である。
【０１３２】
読み書き部１２５のＲＥＱＩＤ管理回路３２は、ユニキャスト用獲得回路３２１，マルチキャスト用獲得回路３２２及び獲得待ちバッファ３２３を備える。マルチキャスト用獲得回路３２２は、分割されたロード命令毎にＲＥＱＩＤとデータバッファ領域とを獲得する。ここで、マルチキャスト用獲得回路３２２は、分割された１つ目のリクエストに対して、ＲＥＱＩＤ＝０を取得する。マルチキャスト用獲得回路３２２は、ＲＥＱＩＤ＝０が使用中の場合には、ＲＥＱＩＤ＝０が解放されるまで待機する。以降、マルチキャスト用獲得回路３２２は、ＲＥＱＩＤが連番となるようにＲＥＱＩＤを取得する。
【０１３３】
図１７は、図１２に示したアクセラレータ１２のマルチキャスト用獲得回路３２２の構成例を示す図である。
【０１３４】
上述した関連例においては、マルチキャストロード命令をメモリアクセス単位で分割する際に、分割した１つ目のリクエストにおいて初期化が実施されていた。
【０１３５】
本実施例において、マルチキャスト用獲得回路３２２は、各読み書き部１２５に分配されたＲＥＱＩＤ初期化信号であるmulticast_reqid_rstを用いて、(div_1st_memrd & multicast_reqid_rst)=1の場合に初期化を実行する。
【０１３６】
別言すれば、マルチキャスト用獲得回路３２２は、初期化指示が発行された場合に第２の演算処理に対して初期化した識別子を獲得する一方、初期化指示が発行されなかった場合に第２の演算処理に対して第１の演算処理の識別子に連続する識別子を獲得する獲得回路の一例である。
【０１３７】
また、マルチキャスト用獲得回路３２２は、識別子の獲得対象が命令の１分割目でない場合に、獲得対象に対して直前の獲得対象の識別子に連続する識別子を獲得してよい。
【０１３８】
図１４に示すように、各読み書き部１２５のマルチキャスト用獲得回路３２２は、メモリリードリクエスト発行担当の読み書き部１２５における獲得待ちバッファ３２３に対して、獲得したＲＥＱＩＤを通知する。これにより、メモリリードリクエスト発行担当の読み書き部１２５は、各読み書き部１２５において獲得されたＲＥＱＩＤが統一されたことを認識できる。
【０１３９】
別言すれば、マルチキャスト用獲得回路３２２は、獲得した識別子を複数の読み書き部１２５のうち他の読み書き部１２５に通知する獲得回路の一例である。
【０１４０】
メモリリードリクエスト発行担当の読み書き部１２５におけるメモリリクエスト生成回路３３は、全ての対象チェーンの読み書き部１２５から獲得したＲＥＱＩＤを通知された後、ＭＡＣ１２１のポート１２１１における受信バッファ２１に対して、メモリリードリクエストを発行する。この際、ｄｓｔフィールドにおいて、対象チェーンがビットマップによって指定される。
【０１４１】
全ての対象チェーンの読み書き部１２５は、メモリリードリクエストの応答として、ＭＡＣ１２１のポート１２１１における送信バッファ２２からメモリリードコンプリーションを受信し、付随するメモリリードデータをデータバッファ３５に格納する。
【０１４２】
各読み書き部１２５のレジスタ制御リクエスト生成回路３４は、データバッファ３５からメモリリードデータを読み出し、コア１２３のレジスタファイルへのライトリクエストと共に読み台したメモリリードデータを転送する。
【０１４３】
各読み書き部１２５は、マルチキャストロード命令に対応する完了通知を指示部１２４に対して発行する。
【０１４４】
指示部１２４は、全ての対象チェーンの読み書き部１２５から完了通知を受け取り、命令の完了を認識する。
【０１４５】
〔Ｂ−２〕動作例
図１１に示したアクセラレータ１２の指示部１２４におけるＲＥＱＩＤ初期化命令の発行処理を、図１８に示すフローチャート（ステップＳ５１〜Ｓ５５）に従って説明する。
【０１４６】
同期監視回路１２２１は、ＲＥＱＩＤ同期のためのグループ表１２２０を最新の状態に更新する（ステップＳ５１）。
【０１４７】
初期化信号生成回路１２２２は、グループ表１２２０において、発行するロード命令の全ての対象チェーンが包含されているかを判定する（ステップＳ５２）。
【０１４８】
全ての対象チェーンが包含されている場合には（ステップＳ５２のＹｅｓルート参照）、初期化信号生成回路１２２２は、ＲＥＱＩＤ初期化指示信号をde-assertする（ステップＳ５３）。そして、処理はステップＳ５５へ進む。
【０１４９】
一方、包含されない対象チェーンがある場合には（ステップＳ５２のＮｏルート参照）、初期化信号生成回路１２２２は、ＲＥＱＩＤ初期化指示信号をassertする（ステップＳ５４）。
【０１５０】
初期化信号生成回路１２２２は、ＲＥＱＩＤ初期化指示信号を読み書き部１２５に通知する。処理は図１９のステップＳ６１における読み書き部１２５の処理に引き継がれ、ＲＥＱＩＤ初期化命令の発行処理は終了する。
【０１５１】
次に、図１１に示したアクセラレータ１２の読み書き部１２５におけるマルチキャスト用ＲＥＱＩＤの初期化処理を、図１９に示すフローチャート（ステップＳ６１〜Ｓ６５）に従って説明する。
【０１５２】
命令分割回路３１は、図１８のステップＳ５５における指示部１２４からの送信に応じて、ＲＥＱＩＤ初期化指示信号を受信する（ステップＳ６１）。
【０１５３】
マルチキャスト用獲得回路３２２は、ＲＥＱＩＤ初期化指示信号が１であるかを判定する（ステップＳ６２）。
【０１５４】
ＲＥＱＩＤ初期化指示信号が１である場合には（ステップＳ６２のＹｅｓルート参照）、マルチキャスト用獲得回路３２２は、値を初期化される（ステップＳ６３）。そして、処理はステップＳ６５へ進む。
【０１５５】
一方、ＲＥＱＩＤ初期化指示信号が１でない場合には（ステップＳ６２のＮｏルート参照）、マルチキャスト用獲得回路８２５は、値を更新又は保持させられる（ステップＳ６４）。
【０１５６】
決定回路３１１は、マルチキャストにおいて発行するＲＥＱＩＤを決定する（ステップＳ６５）。そして、マルチキャスト用ＲＥＱＩＤの初期化処理は終了する。
【０１５７】
次に、図１１に示したアクセラレータ１２の指示部１２４におけるロード命令の発行処理を、図２０に示すフローチャート（ステップＳ７１〜Ｓ７６）に従って説明する。
【０１５８】
指示部１２４は、ソフトウェアからのロード命令をデコードする（ステップＳ７１）。
【０１５９】
初期化信号生成回路１２２２は、グループ表１２２０において、発行するロード命令の全ての対象チェーンが包含されているかを判定する（ステップＳ７２）。
【０１６０】
全ての対象チェーンが包含されている場合には（ステップＳ７２のＹｅｓルート参照）、初期化信号生成回路１２２２は、ＲＥＱＩＤ初期化指示信号をde-assertする（ステップＳ７３）。そして、処理はステップＳ７５へ進む。
【０１６１】
一方、包含されない対象チェーンがある場合には（ステップＳ７２のＮｏルート参照）、初期化信号生成回路１２２２は、ＲＥＱＩＤ初期化指示信号をassertする（ステップＳ７４）。
【０１６２】
初期化信号生成回路１２２２は、ロード命令及び対象チェーンを対象の読み書き部１２５に通知する（ステップＳ７５）。そして、処理は図２１のステップＳ８１以降の読み書き部１２５における処理に引き継がれる。
【０１６３】
同期監視回路１２２１は、次回のロード命令の際に参照するために、ＲＥＱＩＤ同期のためのグループ表１２２０を対象チェーンに基づいて更新する（ステップＳ７６）。
【０１６４】
次に、図１１に示したアクセラレータ１２の読み書き部１２５におけるＲＥＱＩＤの獲得処理を、図２１に示すフローチャート（ステップＳ８１〜Ｓ８８）に従って説明する。
【０１６５】
命令分割回路３１は、図２０のステップＳ７５に示した指示部１２４からの通知に応じて、ＲＥＱＩＤ初期化指示信号と共に、ロード命令及び対象チェーンを受信する（ステップＳ８１）。
【０１６６】
決定回路３１１は、対象チェーンが複数あるかを判定する（ステップＳ８２）。
【０１６７】
対象チェーンが複数ない場合には（ステップＳ８２のＮｏルート参照）、ユニキャスト動作が実施される。
【０１６８】
一方、対象チェーンが複数ある場合には（ステップＳ８２のＹｅｓルート参照）、マルチキャスト用獲得回路３２２は、ロード命令の１番目の分割を処理中であるかを判定する（ステップＳ８３）。
【０１６９】
１番目の分割を処理中である場合には（ステップＳ８３のＹｅｓルート参照）、マルチキャスト用獲得回路３２２は、ＲＥＱＩＤ初期化指示信号が１であるかを判定する（ステップＳ８４）。
【０１７０】
ＲＥＱＩＤ初期化指示信号が１でない場合には（ステップＳ８４のＮｏルート参照）、処理はステップＳ８６へ進む。
【０１７１】
一方、ＲＥＱＩＤ初期化指示信号が１である場合には、マルチキャスト用獲得回路３２２は、値を初期化される（ステップＳ８５）。そして、処理は、ステップＳ８７へ進む。
【０１７２】
ステップＳ８３において、１番目の分割を処理中でない場合には（ステップＳ８３のＮｏルート参照）、マルチキャスト用獲得回路３２２は、値を更新される（ステップＳ８６）。
【０１７３】
マルチキャスト用獲得回路３２２は、獲得したいＲＥＱＩＤが空いているかを判定する（ステップＳ８７）。
【０１７４】
獲得したいＲＥＱＩＤが空いていない場合には（ステップＳ８７のＮｏルート参照）、ステップＳ８７における処理が繰り返し実行される。
【０１７５】
一方、獲得したいＲＥＱＩＤが空いている場合には（ステップＳ８７のＹｅｓルート参照）、マルチキャスト用獲得回路３２２は、獲得したＲＥＱＩＤの待ち合わせ処理を行なう（ステップＳ８８）。そして、ＲＥＱＩＤの獲得処理は終了する。
【０１７６】
〔Ｂ−３〕効果
図２２は、図１１に示した実施例におけるマルチキャストロード処理におけるＲＥＱＩＤの使用状況を例示するテーブルである。
【０１７７】
上述した実施例においては、マルチキャストロード命令を連続して処理する場合に、ＲＥＱＩＤを初期化せずに連番で使用することができる。
【０１７８】
図２２に示す例では、マルチキャストロード命令「１」〜「４」の４つの命令が連続して発行されている。マルチキャストロード命令「１」，「２」及び「４」は対象がチェーン＃０〜＃７であり、マルチキャストロード命令「３」は対象がチェーン＃０〜＃３である。なお、マルチキャストロード命令「１」〜「４」のメモリアクセスサイズは、いずれも１キロバイトである。
【０１７９】
マルチキャストロード命令「１」にとって、マルチキャストロード命令「２」は、ロード対象のチェーンがＲＥＱＩＤ同期のためのグループ表１２２０に包含されている。また、マルチキャストロード命令「２」とって、マルチキャストロード命令「３」は、ロード対象のチェーンがＲＥＱＩＤ同期のためのグループ表１２２０に包含されている。
【０１８０】
一方、マルチキャストロード命令「３」にとって、マルチキャストロード命令「４」は、ロード対象のチェーンがＲＥＱＩＤ同期のためのグループ表１２２０に包含されていないため、ＲＥＱＩＤがassertされて初期化されている。
【０１８１】
これにより、図９に示した関連例におけるマルチキャストロード処理におけるＲＥＱＩＤの使用状況を例示するテーブルと比較して、ＲＥＱＩＤの初期化を行なう機会が減少している。そして、使用中のＲＥＱＩＤの解放を待つ機会が低減し、ＭＡＣ１２１に対するメモリリードリクエストを速やかに発行できるため、メモリデータバスのスループットの低減を防止できる。
【０１８２】
上述した実施形態の一例におけるアクセラレータ１２によれば、例えば、以下の作用効果を奏することができる。
【０１８３】
同期監視回路１２２１は、複数のチェーンのうち第１又は第２の被判定チェーン群が、第２の演算処理の対象である第２のチェーン群を包含するかを判定する。第１の被判定チェーン群は、第１の演算処理の後に連続して第２の演算処理が実行される関係の、第１のチェーン群である。第２の被判定チェーン群は、第１の演算処理の後に、少なくとも１つ以上の第３の演算処理が実行された後に第２の演算処理が実行される関係の、第１のチェーン群に対して第３のチェーン群を一定の方式で計算を実施したものである。第１のチェーン群は複数のチェーンのうち第１の演算処理の対象であり、第２のチェーン群は複数のチェーンのうち第２の演算処理の対象であり、第３のチェーン群は複数のチェーンのうち第３の演算処理の対象である。初期化信号生成回路１２２２は、第１及び第２の被判定チェーン群のいずれもが第２のチェーン群を包含しない場合に、第２の演算処理の識別子を初期化する初期化指示を生成する。マルチキャスト用獲得回路３２２は、初期化指示が発行された場合に第２の演算処理に対して初期化した識別子を獲得する一方、初期化指示が発行されなかった場合に第２の演算処理に対して第１の演算処理の識別子に連続する識別子を獲得する。
【０１８４】
これにより、マルチコアアーキテクチャにおいて、ＲＥＱＩＤの初期化回数を減少させて、チェーン間の待ち合わせ時間を低減することにより、メモリデータのスループットを向上することができる。
【０１８５】
マルチキャスト用獲得回路３２２は、獲得した識別子を複数の読み書き部１２５のうち他の読み書き部１２５に通知する。
【０１８６】
これにより、メモリリードリクエスト発行担当の読み書き部１２５は、各読み書き部１２５において獲得されたＲＥＱＩＤが統一されたことを認識できる。
【０１８７】
命令分割回路３１は、第２の演算処理に関する命令を複数に分割する。マルチキャスト用獲得回路３２２は、識別子の獲得対象が命令の１分割目でない場合に、獲得対象に対して直前の獲得対象の識別子に連続する識別子を獲得する。
【０１８８】
これにより、一連の命令については連続するＲＥＱＩＤを獲得することができる。
【０１８９】
〔Ｃ〕その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【符号の説明】
【０１９０】
１              ：情報処理装置
７，１５，１２２：メモリ
８，１２３      ：コア
１０            ：ＣＰＵ
１１            ：Ｉ／Ｏコントローラ
１２，６００    ：アクセラレータ
１３            ：ハードディスク
１４            ：Ｉ／Ｏデバイス
２１，６１１    ：受信バッファ
２２，６１２    ：送信バッファ
３１，８２１    ：命令分割回路
３２，８２３    ：ＲＥＱＩＤ管理回路
３３，８２７    ：メモリリクエスト生成回路
３４，８２８    ：レジスタ制御リクエスト生成回路
３５，８２９    ：データバッファ
６１，１２１１  ：ポート
８１，１２４    ：指示部
８２，１２５    ：読み書き部
８３            ：演算実行部
８４            ：レジスタファイル
３１１，８２２  ：決定回路
３２１，８２４  ：ユニキャスト用獲得回路
３２２，８２５  ：マルチキャスト用獲得回路
３２３，８２６  ：獲得待ちバッファ
１２２０        ：グループ表
１２２１        ：同期監視回路
１２２２        ：初期化信号生成回路
【図１】
2020090009.tif 000003
【図２】
2020090009.tif 000004
【図３】
2020090009.tif 000005
【図４】
2020090009.tif 000006
【図５】
2020090009.tif 000007
【図６】
2020090009.tif 000008
【図７】
2020090009.tif 000009
【図８】
2020090009.tif 000010
【図９】
2020090009.tif 000011
【図１０】
2020090009.tif 000012
【図１１】
2020090009.tif 000013
【図１２】
2020090009.tif 000014
【図１３】
2020090009.tif 000015
【図１４】
2020090009.tif 000016
【図１５】
2020090009.tif 000017
【図１６】
2020090009.tif 000018
【図１７】
2020090009.tif 000019
【図１８】
2020090009.tif 000020
【図１９】
2020090009.tif 000021
【図２０】
2020090009.tif 000022
【図２１】
2020090009.tif 000023
【図２２】
2020090009.tif 000024
【国際調査報告】
2020090009.tif 000025
2020090009.tif 000026
2020090009.tif 000027
2020090009.tif 000028