(57)【要約】      （修正有）【課題】メモリネットワークの輻輳状態の発生を抑制し、十分なメモリアクセス性能を発揮できるメモリアクセス制御装置、情報処理システム及びメモリアクセス制御方法を提供する。【解決手段】メモリアクセス制御装置２００は、所定の時刻において、プロセッサコアとメモリを接続するメモリネットワークに発行中のロードリクエストの数量である仕掛数を算出し、所定の時刻から所定の期間内に受信したロードリクエストのリプライの数量であるリプライ数を算出し、所定の期間内のロードリクエストの発行制限値を出力し、仕掛数、リプライ数及び発行制限値に基づいて、次の期間の発行制限値を決定し、仕掛数が次の期間の発行制限値より大きい場合、リクエストパイプライン１１１８にロードリクエストのホールド指示を出力する。【選択図】図３
2017173884.tif 000002
【特許請求の範囲】
【請求項１】
所定の時刻において、プロセッサコアとメモリを接続するメモリネットワークに発行中のロードリクエストの数量である仕掛数を算出する仕掛数算出手段と、
前記所定の時刻から所定の期間内に受信した前記ロードリクエストのリプライの数量であるリプライ数を算出するリプライ数算出手段と、
前記所定の期間内の前記ロードリクエストの発行制限値を出力する発行数制限手段と、
前記仕掛数、前記リプライ数、及び、前記発行制限値に基づいて、次の期間の前記発行制限値を決定する更新判定手段と、
前記仕掛数が前記次の期間の発行制限値より大きい場合、リクエストパイプラインに前記ロードリクエストのホールド指示を出力するホールド判定手段と、を包含するメモリアクセス制御装置。
【請求項２】
前記更新判定手段が、前記仕掛数が前記リプライ数より大きい場合、前記リプライ数を次の前記発行制限値として出力する、請求項１に記載のメモリアクセス制御装置。
【請求項３】
前更新判定手段が、前記リプライ数が現在の前記発行制限値より大きい場合、前記リプライ数を次の前記発行制限値として出力する、請求項１に記載のメモリアクセス制御装置。
【請求項４】
請求項１乃至３のいずれか１項の前記メモリアクセス制御装置を含む前記プロセッサコアと、
前記メモリネットワークと、
前記メモリと、を包含する情報処理システム。
【請求項５】
所定の時刻において、プロセッサコアとメモリを接続するメモリネットワークに発行中のロードリクエストの数量である仕掛数を算出し、
前記所定の時刻から所定の期間内に受信した前記ロードリクエストのリプライの数量であるリプライ数を算出し、
前記所定の期間内の前記ロードリクエストの発行制限値を出力し、
前記仕掛数、前記リプライ数、及び、前記発行制限値に基づいて、次の期間の前記発行制限値を決定し、
前記仕掛数が前記次の期間の発行制限値より大きい場合、リクエストパイプラインに前記ロードリクエストのホールド指示を出力する、メモリアクセス制御方法。
【請求項６】
前記仕掛数が前記リプライ数より大きい場合、前記リプライ数を次の前記発行制限値として出力する、請求項５に記載のメモリアクセス制御方法。
【請求項７】
前記リプライ数が現在の前記発行制限値より大きい場合、前記リプライ数を次の前記発行制限値として出力する、請求項５に記載のメモリアクセス制御方法。
【請求項８】
所定の時刻において、プロセッサコアとメモリを接続するメモリネットワークに発行中のロードリクエストの数量である仕掛数を算出する処理と、
前記所定の時刻から所定の期間内に受信した前記ロードリクエストのリプライの数量であるリプライ数を算出する処理と、
前記所定の期間内の前記ロードリクエストの発行制限値を出力する処理と、
前記仕掛数、前記リプライ数、及び、前記発行制限値に基づいて、次の期間の前記発行制限値を決定する処理と、
前記仕掛数が前記次の期間の発行制限値より大きい場合、リクエストパイプラインに前記ロードリクエストのホールド指示を出力する処理と、をコンピュータに実行させるプログラム。
【請求項９】
前記仕掛数が前記リプライ数より大きい場合、前記リプライ数を次の前記発行制限値として出力する処理を前記コンピュータに実行させる請求項８に記載のプログラム。
【請求項１０】
前記リプライ数が現在の前記発行制限値より大きい場合、前記リプライ数を次の前記発行制限値として出力する処理を前記コンピュータに実行させる請求項８に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリアクセス制御装置、情報処理システム、メモリアクセス制御方法、及び、そのためのプログラムに関する。
【背景技術】
【０００２】
クロック動作周波数の限界、発熱・消費電力の問題から、単一コアでの性能向上が困難になり、複数のコアをチップに搭載しトータルとして性能を出すアーキテクチャが主流である。
【０００３】
複数のコアがメモリを共有する共有メモリ型プロセッサの場合、各コアとメモリを結ぶネットワークを構築する必要がある。しかし、コア数が増大するのに伴い、ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）チップに搭載できるトランジスタ数の制限や配線性の問題により、全てのコアを直接メモリに接続することが困難になる。そして、メッシュやリング等のトポロジを採用しコアとメモリを間接的に接続する方式が現実的な状況にある。その場合、コアからメモリまでが等距離にならず、また、ネットワーク内の各ポイントで自コアのメモリ要求と他コアのメモリ要求の競合調停が発生するなどの要因でネットワークの負荷が高まると、一般的に言う輻輳のような状態に陥ることが判っている。輻輳状態に陥ると、メモリレイテンシの悪化、メモリロード命令のリプライ順序の大幅な逆転などが発生し、全体的な性能低下が顕著になる。特にＨＰＣ（ハイパフォーマンスコンピューティング：Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｃｏｍｐｕｔｉｎｇ）の分野では、メモリアクセス性能の向上が最重要性能パラメータの一つであり、この問題を回避する技術が非常に重要となる。
【０００４】
特許文献１は、マルチプロセッサシステムにおいて、各プロセッサが自律的にメモリ負荷を予測することで、ビジー信号による処理の停止が発生することを抑えた、メモリアクセス制御方式に関する技術を開示している。
【０００５】
特許文献２は、複数のコンピュータシステムがクロック同期して同時に処理を行う、フォルトトレラントコンピュータ装置に関する技術を開示している。
【０００６】
特許文献３は、効率的に排他制御を行うことが可能なメモリアクセス装置に関する技術を開示している。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００７−０９４６５７号公報
【特許文献２】特開２００６−１７２２４３号公報
【特許文献３】特開２００４−１１０４８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
２次元メッシュのような複数ポイントで競合調停が発生するメモリネットワークにおいて、各コアが無条件にメモリネットワーク上にリクエストを発行すると、メモリネットワーク内部で混雑が発生する。そして、レイテンシの悪化やロードリクエストのリプライ順の逆転が増大する、といった現象が発生する。また、コアが欲するデータが得られず演算処理が出来なくなる等、全体的な性能が低下するという問題がある。
【０００９】
これを回避するには、例えば、各コアの負荷状況等の統計情報を集約し、その情報を各コアへ伝達し、各コアはその情報を元に新規リクエストの発行制限を行うような対策が考えられる。しかし、多数のコアの情報をタイムリーに集約し、各コアへフィードバックをかけるのは、現実的に困難である。
【００１０】
特許文献１は、メモリアクセス時間が予め定めた閾値を超えるかを監視して、許容発行数の増減を制御している。しかし、レイテンシを考慮して、逐次、各コア（各プロセッサ）からメモリに発行するリクエスト数の制限値を設定することはできない。
【００１１】
特許文献２は、リードカウンタを用いてライト命令を制限し、双方のプロセッサの動作の同期化を行っている。しかし、単にリードリクエストとリード終了の数量を比較してライト命令を制御しており、逐次、制限値を最適化することはできない。
【００１２】
特許文献３は、複数のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）のメモリアクセス状態を監視するために設けたメモリアクセス装置が全てのＣＰＵのメモリアクセス状態を集約して管理しており、適用対象が限定される。
【００１３】
従って、上記の文献に記載の技術は、いずれも、レイテンシを考慮して、逐次、各コアからメモリに発行するリクエスト数の制限値を設定できないため、メモリネットワークの輻輳状態が発生するか、もしくは、制限を掛け過ぎてメモリアクセス性能が発揮できなくなる可能性がある。
【００１４】
このため、本発明の目的は、上述した課題を解決すること、すなわち、メモリネットワークの輻輳状態の発生を抑制し、十分なメモリアクセス性能を発揮できるメモリアクセス制御装置等を提供することにある。
【課題を解決するための手段】
【００１５】
本発明のメモリアクセス制御装置は、所定の時刻において、プロセッサコアとメモリを接続するメモリネットワークに発行中のロードリクエストの数量である仕掛数を算出する仕掛数算出手段と、前記所定の時刻から所定の期間内に受信した前記ロードリクエストのリプライの数量であるリプライ数を算出するリプライ数算出手段と、前記所定の期間内の前記ロードリクエストの発行制限値を出力する発行数制限手段と、前記仕掛数、前記リプライ数、及び、前記発行制限値に基づいて、次の期間の前記発行制限値を決定する更新判定手段と、前記仕掛数が前記次の期間の発行制限値より大きい場合、リクエストパイプラインに前記ロードリクエストのホールド指示を出力するホールド判定手段と、を包含する。
【００１６】
本発明のメモリアクセス制御方法は、所定の時刻において、プロセッサコアとメモリを接続するメモリネットワークに発行中のロードリクエストの数量である仕掛数を算出し、前記所定の時刻から所定の期間内に受信した前記ロードリクエストのリプライの数量であるリプライ数を算出し、前記所定の期間内の前記ロードリクエストの発行制限値を出力し、前記仕掛数、前記リプライ数、及び、前記発行制限値に基づいて、次の期間の前記発行制限値を決定し、前記仕掛数が前記次の期間の発行制限値より大きい場合、リクエストパイプラインに前記ロードリクエストのホールド指示を出力する。
【００１７】
本発明のコンピュータプログラムは、所定の時刻において、プロセッサコアとメモリを接続するメモリネットワークに発行中のロードリクエストの数量である仕掛数を算出する処理と、前記所定の時刻から所定の期間内に受信した前記ロードリクエストのリプライの数量であるリプライ数を算出する処理と、前記所定の期間内の前記ロードリクエストの発行制限値を出力する処理と、前記仕掛数、前記リプライ数、及び、前記発行制限値に基づいて、次の期間の前記発行制限値を決定する処理と、前記仕掛数が前記次の期間の発行制限値より大きい場合、リクエストパイプラインに前記ロードリクエストのホールド指示を出力する処理と、をコンピュータに実行させる。
【発明の効果】
【００１８】
本発明によれば、メモリネットワークの輻輳状態の発生を抑制し、十分なメモリアクセス性能を発揮できる。
【図面の簡単な説明】
【００１９】
【図１】図１は、第一の実施の形態に係る、情報処理システムの構成の一例を示すブロック図である。
【図２】図２は、プロセッサコアの構成の一例を示すブロック図である。
【図３】図３は、リクエスト発行制御部の詳細構成を中心とするメモリアクセス制御装置の構成の一例を示すブロック図である。
【図４】図４は、第二の実施形態に係る、メモリアクセス制御装置の構成の一例を示すブロック図である。
【発明を実施するための形態】
【００２０】
＜第一の実施形態＞
本発明の第一の実施の形態について、図面を参照して詳細に説明する。
【００２１】
図１は、第一の実施の形態に係る、情報処理システム１００の構成の一例を示すブロック図である。
【００２２】
情報処理システム１００は、マルチコアプロセッサ１０００、メモリネットワーク２０００、及び、複数のバンクにインタリーブされたメモリ（外部メモリ３００１、３００２、３００３、３００４）を含む。
【００２３】
マルチコアプロセッサ１０００は、複数のプロセッサコア１００１、１００２、１００３、１００４を含む。図１は、プロセッサコア１００１〜１００４および外部メモリ３００１〜３００４の数量が４の例を示しているが、各々の数量は４に限定されず２以上の任意の数量であっても良い。各プロセッサコア１００１〜１００４は、メモリネットワーク２０００を介して接続される。なお、プロセッサコア１００１〜１００４と外部メモリ３００１〜３００４の間にキャッシュが存在する構成も考えられるが、本実施形態の説明においては、必須ではないので割愛する。
【００２４】
図２は、プロセッサコア１００１〜１００４の構成の一例を示すブロック図である。なお、ブロック図中の矢印は、一例であって、各構成要素間のすべての信号及びデータの方向を限定するものではない。
【００２５】
プロセッサコア１００１〜１００４の各々は、内部に、リクエスト発行制御部１１０１、及び、リプライ受信制御部１１０２を有する。
【００２６】
以下の説明で、プロセッサコア１００１〜１００４の各々は、単にコアとも呼ばれる。また、外部メモリ３００１〜３００４の各々は、単にメモリとも呼ばれる。
【００２７】
リクエスト発行制御部１１０１は、コアの内部（内部Ｌｏｇｉｃ）からのメモリロード／ストア要求を受け、メモリネットワーク２０００向けにロード／ストアリクエストパケットを発行する機能を有する。
【００２８】
また、リプライ受信制御部１１０２は、ロードリクエストを含むロードリクエストパケットに対するメモリからのリプライ（データ）を含むロードリプライパケットを、メモリネットワーク２０００から受信する。また、リプライ受信制御部１１０２は、コアの内部へリプライであるデータを転送する。さらに、リプライ受信制御部１１０２は、本実施形態の機能を実現するため、リプライの受信をリクエスト発行制御部１１０１に連絡するためのインタフェース１１０３を有する。
【００２９】
ところで、メモリネットワーク２０００の輻輳状態は、ネットワーク内に滞留するリクエストの数が増大することにより発生する。従って、コアからメモリに発行するリクエスト数に制限を設けることで解消することが可能である。ただし、制限を掛け過ぎるとメモリアクセス性能が発揮できないため、適切に制限を行うことが重要となる。
【００３０】
本実施形態では、あるプロセッサコア（たとえば、プロセッサコア１００１）がある時刻にメモリネットワーク２０００に発行した仕掛中のロードリクエスト数に対して、一定時間の経過後にどのくらいリプライが戻ってきたかどうかを観測し、戻ってきたリプライ数に応じて制限値を変動させる。リクエスト発行制御部１１０１は、戻ってくるリプライ数が仕掛中のリクエスト数（リクエストの仕掛数）より少なければ、メモリネットワーク２０００が混雑していると判断し、次のリクエスト数を制限するための発行制限値を決定する。一方、リクエスト発行制御部１１０１は、戻ってくるリプライ数が仕掛中のリクエスト数よりも多ければ、メモリネットワークが空いており制限を緩和可能と判断し、リクエスト数を緩和するための次の発行制限値を決定する。ここで、一定時間とは、メモリアクセスの理想レイテンシを想定し、適切な値を見極めた上で設定される値である。
【００３１】
本実施形態では、図２に示すプロセッサコア内でメモリアクセスの発行・受信制御を司るリクエスト発行制御部１１０１に、前出のアルゴリズム（リプライ数とリクエスト数の関係に基づく発行制限値の決定）を判定する後述の図３に示す機構を設ける。これにより、本実施形態は、刻々と変わるメモリネットワーク２０００の負荷状況に応じ、輻輳回避とメモリ性能維持という、相反する条件を鑑みつつ、最適な制限を実現することができる。
【００３２】
図３は、リクエスト発行制御部１１０１の詳細構成を中心とするメモリアクセス制御装置２００の一部の構成の一例を示すブロック図である。なお、ブロック図中の矢印は、一例であって、各構成要素間のすべての信号及びデータの方向を限定するものではない。
【００３３】
メモリアクセス制御装置２００は、経過時間カウンタ部１１１１、仕掛数カウンタ部１１１２、リプライ数カウンタ部１１１３、仕掛数カウンタ部１１１４、ＭＬＤ（Ｍａｘ  ＬｏａＤ）更新判定部１１１５、発行数制限部１１１６、ホールド判定部１１１７、及び、リクエストパイプライン１１１８を含む。リクエスト発行制御部１１０１は、少なくとも、リプライ数カウンタ部１１１３とリクエストパイプライン１１１８を含むが、図３のそれ以外の構成部を含んでもよい。ＭＬＤは、後述されるように発行制限値を表す。
【００３４】
ここで、経過時間カウンタ部１１１１、仕掛数カウンタ部１１１２、リプライ数カウンタ部１１１３、仕掛数カウンタ部１１１４、ＭＬＤ更新判定部１１１５、発行数制限部１１１６、ホールド判定部１１１７、及び、リクエストパイプライン１１１８は、例えば、論理回路等のハードウェア回路で構成されてもよい。
【００３５】
また、経過時間カウンタ部１１１１、仕掛数カウンタ部１１１２、リプライ数カウンタ部１１１３、仕掛数カウンタ部１１１４、ＭＬＤ更新判定部１１１５、発行数制限部１１１６、ホールド判定部１１１７、及び、リクエストパイプライン１１１８は、コンピュータである、メモリアクセス制御装置２００のプロセッサが、図示されないメモリ上のプログラムを実行することで実現される機能ユニットでも良い。
【００３６】
経過時間カウンタ部１１１１は、内部にクロックサイクルを計測するカウンタを有する。そして、経過時間カウンタ部１１１１は、クロックサイクル毎に時間を計上し、外部から設定されるある設定値まで達すると周囲の関連ブロックに更新指示４００１を発しつつ、自身のカウンタをクリアして再度時間の計上を繰り返すブロックである。周囲の関連ブロックは、この更新指示４００１をトリガーとして、各自の動作を行う。関連ブロックは、仕掛数カウンタ部１１１２、リプライ数カウンタ部１１１３および発行数制限部１１１６である。
【００３７】
仕掛数カウンタ部１１１２は、ある時刻においてメモリネットワーク２０００に発行中のロードリクエスト数を保持するためのフリップフロップを有する。そして、仕掛数カウンタ部１１１２は、経過時間カウンタ部１１１１から更新指示４００１を受け付けると、その時点での後述する仕掛数カウンタ部１１１４からの仕掛数情報４００４の値をコピーして、次回の更新指示が来るまでの間は値を保持し続ける。
【００３８】
リプライ数カウンタ部１１１３は、ある一定期間にリプライ制御部１１０２に到達したロードリプライ数を観測してリプライ数情報４００３を出力する。具体的に、リプライ数カウンタ部１１１３は、リプライ制御部１１０２からリプライ情報１１０３のインタフェースを介して通知されるリプライ通知４００５を受けると、内部に持つカウンタをカウントアップする。また、リプライ数カウンタ部１１１３は、経過時間カウンタ１１１１からの更新指示４００１を受信すると、自身のカウンタをクリアする機能を有する。
【００３９】
仕掛数カウンタ部１１１４は、メモリネットワーク２０００に発行して仕掛っているロードリクエスト数を常時カウントする。仕掛数カウンタ部１１１４は、後述するリクエストパイプライン１１１８からロードリクエスト（ロードリクエストパケット）が発行されたら、その旨をリクエスト発行通知４００６を経由して受信し、内部のカウンタの値を＋１（インクリメント）する。また、仕掛数カウンタ部１１１４は、リプライ通知４００５を受信した場合、内部のカウンタの値を−１（デクリメント）する。つまり、このカウンタの値は、各時刻におけるロードリクエストの仕掛数を意味する。仕掛数カウンタ部１１１４は、同じ仕掛数を仕掛数情報４００４及び４００８として、それぞれ仕掛数カウンタ部１１１２及びホールド判定部１１１７に出力する。
【００４０】
ＭＬＤ更新判定部１１１５は、現期間（現在の更新タイミングの期間）における各種情報を受け取り、次の更新までの期間（次期）のリクエストの発行制限値を決定する。ＭＬＤ更新判定部１１１５は、仕掛数カウンタ部１１１２からは後述する仕掛数情報４００２を、リプライ数カウンタ１１１３からはリプライ数情報４００３を、また、後述の発行数制限部１１１６からは現期間の発行制限値を表す現制限値情報４００９を受け取る。そして、ＭＬＤ更新判定部１１１５は、受け取った情報を基に次の期間における発行制限値を決定、決定された発行制限値を次期制限値情報４０１０として発行数制限部１１１６に返却する。
【００４１】
発行数制限部１１１６は、ある期間における発行制限値を保持するブロックである。発行数制限部１１１６は、経過時間カウンタ部１１１１から通知される更新指示４００１を受信すると、ＭＬＤ更新判定部１１１５から通知される次期制限値情報４０１０を内部のフリップフロップに取り込み、次の更新指示４００１が来るまでその値（発行制限値）を保持し続ける。発行数制限部１１１６は、保持している発行制限値を制限値情報４００７としてホールド判定部１１１７に出力する。
【００４２】
ホールド判定部１１１７は、後述するリクエストパイプライン１１１８に存在するロードリクエストをメモリネットワーク２０００へ発行するかホールドするかを判定する。具体的には、ホールド判定部１１１７は、発行数制限部１１１６から通知される制限値情報４００７と仕掛数カウンタ部１１１４から通知される仕掛数情報４００８を入力とする。そして、ホールド判定部１１１７は、仕掛数情報４００８の値が制限値情報４００７を上回った場合にリクエストパイプライン１１１８にホールド指示４０１１を通知する。
【００４３】
本実施形態の構成で述べた各ブロックは、それぞれが連携し、全体として以下の（０）〜（６）に示す式による制御を実現する。
（０）  ＭＬＤ＜＝発行可能ロードリクエスト数
（１）  ＬＤ＿ＣＮＴ［ｔ］＜＝時刻ｔにおける仕掛りロード数
（２）  ＲＹ＿ＣＮＴ［ｔ＋Ｔ］＜＝時刻ｔからｔ＋Ｔ間で受信したリプライ数
（３）  ＩＦ（ＬＤ＿ＣＮＴ［ｔ］＞ＲＹ＿ＣＮＴ［ｔ＋Ｔ］）  ＭＬＤ＜＝ＲＹ＿ＣＮＴ［ｔ＋Ｔ］
（４）  ＩＦ（ＭＬＤ＜ＲＹ＿ＣＮＴ［ｔ＋Ｔ］）  ＭＬＤ＜＝ＲＹ＿ＣＮＴ［ｔ＋Ｔ］
（５）  ｔ＜＝ｔ＋Ｔ
（６）  ｇｏｔｏ（１）
ここで、（０）式のＭＬＤは、発行制限値である。ＬＤ＿ＣＮＴ［ｔ］は、仕掛数カウンタ部１１１２で時刻ｔに保持されている仕掛数である。ＲＹ＿ＣＮＴ［ｔ＋Ｔ］は、リプライ数カウンタ部１１１３により時刻ｔからｔ＋Ｔ間で計数されるリプライ数である。式中の時間「Ｔ」はレイテンシ制御パラメータであり、コア〜メモリ間距離（レイテンシ）をもとに最適に設定されるパラメータ値である。なお、上記の式（０）〜（５）において、「＜＝」は、矢印を表す。そして、式（０）〜（５）の各式は、「＜＝」の右側の項目を「＜＝」の左側の項目に設定することを意味する。例えば、式（３）は、ＩＦ以下の条件（ＬＤ＿ＣＮＴ［ｔ］＞ＲＹ＿ＣＮＴ［ｔ＋Ｔ］）を満足する場合、リプライ数（ＲＹ＿ＣＮＴ［ｔ＋Ｔ］）を発行制限値（ＭＬＤ）に設定することを意味する。
【００４４】
次に図３の各ブロックの動作について説明する。
【００４５】
図３の経過時間カウンタ部１１１１は、時間Ｔが経過する度に、周囲の各ブロックへ更新指示４００１の発信を繰り返し、更新のタイミングを指示する。
【００４６】
仕掛数カウンタ部１１１４は、常時、メモリネットワーク２０００へ仕掛中のロードリクエスト数をカウントしており、更新タイミングのある時刻（「ｔ」とする）の時点における値を、仕掛数カウンタ部１１１２にコピーする。コピーされた値は、Ｔ時間経過後の次の更新タイミングまで値が保持される。そして、その値は、仕掛数情報４００２としてＭＬＤ更新判定部１１１５に通知される。
【００４７】
リプライ数カウンタ部１１１３は、期間Ｔの間にリプライ制御部１１０２に戻ってきたリプライ数をカウントする。リプライ数カウンタ部１１１３は、経過時間カウンタ部１１１１からの更新指示４００１により値をリセットし、以降は次の更新指示４００１が来るまでリプライ数をカウントし続ける。つまり、更新時間からＴ時間経過後は、Ｔ時間の間に返却されたリプライ数を意味する。リプライ数カウンタ部１１１３は、この値も、リプライ数情報４００３として、ＭＬＤ更新判定部１１１５へ通知する。
【００４８】
ＭＬＤ更新判定部１１１５は、ｔ＋Ｔの時刻において、仕掛数カウンタ部１１１２から通知される仕掛数情報４００２、リプライ数カウンタ部１１１３から通知を受けたリプライ数情報４００３、及び、発行数制限部１１１６から通知を受けた現制限値情報４００９をもとに、上述の（３）、（４）式の評価を行う。すなわち、ＭＬＤ更新判定部１１１５は、仕掛数がリプライ数より大きいか（（３）式）、または、リプライ数が発行制限値より大きいか（（４）式）を評価する。そして、ＭＬＤ更新判定部１１１５は、その評価結果から次の期間ＴにおけるＭＬＤの値（発行制限値）を決定する。例えば、仕掛数がリプライ数より大きい場合（（３）式）、ＭＬＤ更新判定部１１１５は、リプライ数を次の期間の発行制限値に決定する。また、リプライ数が発行制限値より大きい場合（（４）式）、ＭＬＤ更新判定部１１１５は、リプライ数を次の期間の発行制限値に決定する。決定した発行制限値は、次期制限値情報４０１０として発行数制限部１１１６に通知される。
【００４９】
発行数制限部１１１６は、通知を受けた次期制限値情報４０１０を、経過時間カウンタ部１１１１からの更新指示４００１の受信タイミングで更新し、次の更新タイミング４００１が通知されるまで、これを保持する。
【００５０】
ホールド判定部１１１７は、発行数制限部１１１６からの制限値情報４００７、及び、仕掛数カウンタ部１１１４からの仕掛数情報４００８を受け取り、両者の大小比較を行う。ホールド判定部１１１７は、仕掛数情報４００８の値が制限値情報４００７を超えた場合は、これ以上のロードリクエストの発行を停止すべく、ホールド指示４０１１をリクエストパイプライン１１１８に通知する。
【００５１】
リクエストパイプライン１１１８は、ホールド指示４０１１を受信し、以降、メモリネットワーク２０００へのロードリクエスト発行を停止する。
【００５２】
その後、ある時間が経過すると、リプライ受信制御部１１０２にリプライが戻り、リプライ通知４００５が、仕掛数カウンタ１１１４に通知される。通知を受けた仕掛数カウンタ部１１１４は、内部に持つカウンタを減算し、その値を仕掛数情報４００８としてホールド判定部１１１７へ通知する。
【００５３】
ホールド判定部１１１７においては、最終的に仕掛数情報４００８が制限値情報４００７を下回るので、その後ホールド指示４０１１が解除され、ロードリクエストの発行が再開する。
【００５４】
以上の動作により、メモリアクセス制御装置２００は、発行数制限部１１１６に持つＭＬＤ（発行制限値）を適切に制御することができる。これにより、メモリアクセス制御装置２００は、プロセッサコア１００１〜１００４からのロードリクエスト発行数をメモリネットワーク２０００の負荷に応じて適切に制限することが可能となる。
【００５５】
ところで、仕掛数カウンタ部１１１４で観測される値として、前述の例では、リプライ数、つまりリプライのパケット数を前提としているが、必ずしもリプライパケット数である必要はなく、例えばリプライデータのバイト数でカウントしても良い。
【００５６】
例えば、リプライパケットが１６バイト幅のインタフェースである場合に、リプライが８バイト×２パケットで返されるのか、もしくは１６バイト×１パケットで返されるのかが、メモリ側の制御によって決まり、発行元のコア側からは判断できない場合を考える。この場合、ロードリクエスト発行時に、８バイトで「１」、１６バイトで「２」を仕掛数カウンタ部１１１４に加算するようにすると、リプライがいずれの返却方法でも辻褄が合うようにすることができる。
【００５７】
また、ＭＬＤ更新判定部１１１５で判定に使用するアルゴリズムに関しても、本実施形態に記載のものに限定されるものではなく、様々なバリエーションが可能である。
【００５８】
例えば、式（３）、（４）においては、ある期間のリプライ数をそのまま次期の発行制限値（ＭＬＤ）として反映しているが、この変動が大き過ぎる場合には、現状のＭＬＤと次期のＭＬＤとの平均を取る等して、変動幅を狭めることも可能である。
【００５９】
また、式には記載していないが、メモリアクセス制御装置２００は、ＭＬＤの最小値を設定し、ＭＬＤが当該設定値を下回る場合には次期のＭＬＤとして当該設定値を採用し、想定以上に性能を低下させないような制約を設けることも可能である。もちろん同様に、ＭＬＤの最大値を設定する事も可能である。
【００６０】
この他、ＬＤ＿ＣＮＴ［ｔ］＜ＲＹ＿ＣＮＴ［ｔ＋Ｔ］＜ＭＬＤの関係が成立する場合、つまり仕掛中カウンタ値より多くのリプライが返却されたものの、ＭＬＤを越えるほどではない、という場合においては、ＭＬＤの更新が行われないことになる。そのような場合においては、ＭＬＤを現状維持するのではなく、自律的にＭＬＤを上げていくような方式も考えられる。
【００６１】
ところで、本実施形態のメモリアクセス制御装置２００は、メモリネットワーク２０００の混雑状況を把握するために、他コアの動作状況等の収集網が不要である。メモリアクセス制御装置２００は、他コアの事情には関与せず、自身のコアのリクエスト発行とそのリプライ状況のみ監視することで、メモリネットワーク２０００の混雑状態を推測することができる。これにより、メモリアクセス制御装置２００は、刻々のメモリネットワーク２０００の混雑状況の変化に追従した発行制御が可能になる。
【００６２】
また、本実施形態の情報処理システム１００は、刻々のメモリネットワーク２０００の状況変化に対し応答性の高いタイムリーなフィードバックを行うことができ、ＨＰＣ（ハイパフォーマンスコンピューティング）分野に求められる高い性能を実現することができる。
【００６３】
このように、本実施形態の情報処理システム１００は、マルチコアのプロセッサにおいて、各々のコアからメモリネットワーク２０００へ発行するリクエスト数を自律的かつ適切に制限することにより、メモリネットワーク２０００全体が輻輳状態に陥ることを回避できる。
【００６４】
また、本実施形態の情報処理システム１００は、メモリネットワーク２０００の混雑状況を知るために、各コアの負荷状況やメモリネットワーク２０００の負荷状況を集約するための機能が不要であり、低コストで実現できる。
【００６５】
本実施形態に係る情報処理システム１００は、以下に記載するような効果を奏する。
【００６６】
すなわち、メモリネットワークの輻輳状態の発生を抑制し十分なメモリアクセス性能を発揮できる、という効果を奏する。
【００６７】
その理由は、仕掛数、リプライ数、及び、現在の発行制限値に基づいて、次の発行制限値を出力し、仕掛数が発行制限値より大きい場合、リクエストパイプラインにロードリクエストのホールド指示を出力するからである。
＜第二の実施形態＞
次に、本発明の第二の実施の形態について図面を参照して詳細に説明する。
【００６８】
図は、第二の実施形態に係る、メモリアクセス制御装置１０の構成の一例を示すブロック図である。第二の実施形態は、第一の実施形態のメモリアクセス制御装置２００の最小構成の一例に該当する。
【００６９】
メモリアクセス制御装置１０は、仕掛数算出部１１、リプライ数算出部１２、発行数制限部１３、更新判定部１４、及び、ホールド判定部１５を含む。
【００７０】
仕掛数算出部１１は、所定の時刻において、プロセッサコアとメモリを接続するメモリネットワークに発行中のロードリクエストの数量である仕掛数を算出する。
【００７１】
リプライ数算出部１２は、所定の時刻から所定の期間内に受信したロードリクエストのリプライの数量であるリプライ数を算出する。なお、算出は、カウンタによる計数やＣＰＵによる計算も含む。
【００７２】
発行数制限部１３は、所定の期間内のロードリクエストの発行制限値を出力する。
【００７３】
更新判定部１４は、仕掛数、リプライ数、及び、発行制限値に基づいて、次の期間の発行制限値を決定する。
【００７４】
ホールド判定部１５は、仕掛数が次の期間の発行制限値より大きい場合、リクエストパイプラインにロードリクエストのホールド指示を出力する。
【００７５】
本実施形態に係るメモリアクセス制御装置１０は、以下に記載するような効果を奏する。
【００７６】
すなわち、メモリネットワークの輻輳状態の発生を抑制し十分なメモリアクセス性能を発揮できる、という効果を奏する。
【００７７】
その理由は、仕掛数、リプライ数、及び、現在の発行制限値に基づいて、次の発行制限値を出力し、仕掛数が発行制限値より大きい場合、リクエストパイプラインにロードリクエストのホールド指示を出力するからである。
【００７８】
以上、図面を参照して本発明の実施形態を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【００７９】
１０    メモリアクセス制御装置
１１    仕掛数算出部
１２    リプライ数算出部
１３    発行数制限部
１４    更新判定部
１５    ホールド判定部
１００    情報処理システム
２００    メモリアクセス制御装置
１０００    マルチコアプロセッサ
１００１    プロセッサコア
１００２    プロセッサコア
１００３    プロセッサコア
１００４    プロセッサコア
１１０１    リクエスト発行制御部
１１０２    リプライ受信制御部
１１０３    リプライ情報
１１１１    経過時間カウンタ部
１１１２    仕掛数カウンタ部
１１１３    リプライ数カウンタ部
１１１４    仕掛数カウンタ部
１１１５    ＭＬＤ更新判定部
１１１６    発行数制限部
１１１７    ホールド判定部
１１１８    リクエストパイプライン
２０００    メモリネットワーク
３００１    外部メモリ
３００２    外部メモリ
３００３    外部メモリ
３００４    外部メモリ
４００１    更新指示
４００２    仕掛数情報
４００３    リプライ数情報
４００４    仕掛数情報
４００５    リプライ通知
４００６    リクエスト発行通知
４００７    制限値情報
４００８    仕掛数情報
４００９    現制限値情報
４０１０    次期制限値情報
４０１１    ホールド指示
【図１】
2017173884.tif 000003
【図２】
2017173884.tif 000004
【図３】
2017173884.tif 000005
【図４】
2017173884.tif 000006