(57)【要約】【課題】複数のスレッドを並列処理する際に、命令フェッチの競合や帯域不足を緩和するプリフェッチコントローラを提供する。【解決手段】プロセッサに設けられるプリフェッチコントローラであって、複数のスレッド毎に予め設定されている平均命令消費量と、現時点でのプリフェッチ量とを比較するプリフェッチ量比較部（６０１）と、プリフェッチ量比較部（６０１）の比較結果に基づいて、プリフェッチ量が相対的に不足しているスレッドのプリフェッチ優先順位を上昇させる優先順位変更部（６０２）と、を備える。【選択図】図６
2019179419.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサに設けられるプリフェッチコントローラであって、
複数のスレッド毎に予め設定されている平均命令消費量と、現時点でのプリフェッチ量とを比較するプリフェッチ量比較部（６０１）と、
前記プリフェッチ量比較部の比較結果に基づいて、プリフェッチ量が相対的に不足しているスレッドのプリフェッチ優先順位を上昇させる優先順位変更部（６０２）と、を備えるプリフェッチコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、プロセッサに設けられるプリフェッチコントローラに関する。
【背景技術】
【０００２】
命令キャッシュを備えるプロセッサでは、キャッシュミス後のキャッシュフィルを待たされることによって処理性能が低下するのを防止するために、プリフェッチ機能が広く採用されている。プリフェッチ機能は、プロセッサが将来実行するであろう命令を予測し、キャッシュミスが発生する前に予め命令キャッシュ等のプリフェッチバッファに読み込んでおく機能である（下記特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１６−１５７３７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載されているプリフェッチ手法では、複数のスレッドを並列処理する際に、命令フェッチの競合や帯域不足が発生するおそれがある。
【０００５】
本開示は、複数のスレッドを並列処理する際に、命令フェッチの競合や帯域不足を緩和するプリフェッチコントローラを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本開示は、プロセッサに設けられるプリフェッチコントローラであって、複数のスレッド毎に予め設定されている平均命令消費量と、現時点でのプリフェッチ量とを比較するプリフェッチ量比較部（６０１）と、プリフェッチ量比較部の比較結果に基づいて、プリフェッチ量が相対的に不足しているスレッドのプリフェッチ優先順位を上昇させる優先順位変更部（６０２）と、を備える。
【０００７】
本開示によれば、実際のプリフェッチ量の変動に応じてプリフェッチ優先順位を変更できるので、複数のスレッドを並列処理する際に、命令フェッチの競合や帯域不足を緩和することができる。
【０００８】
尚、「課題を解決するための手段」及び「特許請求の範囲」に記載した括弧内の符号は、後述する「発明を実施するための形態」との対応関係を示すものであって、「課題を解決するための手段」及び「特許請求の範囲」が、後述する「発明を実施するための形態」に限定されることを示すものではない。
【発明の効果】
【０００９】
本開示によれば、複数のスレッドを並列処理する際に、命令フェッチの競合や帯域不足を緩和するプリフェッチコントローラを提供することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、本実施形態の前提となる並列処理について説明するための図である。
【図２】図２は、図１に示される並列処理を実行するためのシステム構成例を示す図である。
【図３】図３は、図２に用いられるＤＦＰの構成例を示す図である。
【図４】図４は、コンパイラの機能的な構成例を説明するための図である。
【図５】図５は、コンパイラの処理を説明するための図である。
【図６】図６は、プリフェッチコントローラの機能的な構成例を説明するための図である。
【図７】図７は、プリフェッチコントローラの処理を説明するための図である。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照しながら本実施形態について説明する。説明の理解を容易にするため、各図面において同一の構成要素に対しては可能な限り同一の符号を付して、重複する説明は省略する。
【００１２】
図１（Ａ）は、グラフ構造のプログラムコードを示しており、図１（Ｂ）は、スレッドの状態を示しており、図１（Ｃ）は、並列処理の状況を示している。
【００１３】
図１（Ａ）に示されるように、本実施形態が処理対象とするプログラムは、データと処理とが分割されているグラフ構造を有している。このグラフ構造は、プログラムのタスク並列性、グラフ並列性を保持している。
【００１４】
図１（Ａ）に示されるプログラムコードに対して、コンパイラによる自動ベクトル化とグラフ構造の抽出を行うと、図１（Ｂ）に示されるような大量のスレッドを生成することができる。
【００１５】
図１（Ｂ）に示される多量のスレッドに対して、ハードウェアによる動的レジスタ配置とスレッド・スケジューリングにより、図１（Ｃ）に示されるような並列実行を行うことができる。実行中にレジスタ資源を動的配置することで、異なる命令ストリームに対しても複数のスレッドを並列実行することができる。
【００１６】
続いて図２を参照しながら、動的レジスタ配置及びスレッド・スケジューリングを行うアクセラレータとしてのＤＦＰ（Ｄａｔａ  Ｆｌｏｗ  Ｐｒｏｃｅｓｓｏｒ）１０を含むシステム構成例である、データ処理システム２を説明する。
【００１７】
データ処理システム２は、ＤＦＰ１０と、イベントハンドラ２０と、ホストＣＰＵ２１と、ＲＯＭ２２と、ＲＡＭ２３と、外部インターフェイス２４と、システムバス２５と、を備えている。ホストＣＰＵ２１は、データ処理を主として行う演算装置である。ホストＣＰＵ２１は、ＯＳをサポートしている。イベントハンドラ２０は、割り込み処理を生成する部分である。
【００１８】
ＲＯＭ２２は、読込専用のメモリである。ＲＡＭ２３は、読み書き用のメモリである。外部インターフェイス２４は、データ処理システム２外と情報授受を行うためのインターフェイスである。システムバス２５は、ＤＦＰ１０と、ホストＣＰＵ２１と、ＲＯＭ２２と、ＲＡＭ２３と、外部インターフェイス２４との間で情報の送受信を行うためのものである。
【００１９】
ＤＦＰ１０は、ホストＣＰＵ２１の重い演算負荷に対処するために設けられている個別のマスタとして位置づけられている。ＤＦＰ１０は、イベントハンドラ２０が生成した割り込みをサポートするように構成されている。
【００２０】
続いて図３を参照しながら、ＤＦＰ１０について説明する。図３に示されるように、ＤＦＰ１０は、コマンドユニット１２と、スレッドスケジューラ１４と、実行コア１６と、メモリサブシステム１８と、を備えている。
【００２１】
コマンドユニット１２は、コンフィグ・インターフェイスとの間で情報通信可能なように構成されている。コマンドユニット１２は、コマンドバッファとしても機能している。
【００２２】
スレッドスケジューラ１４は、図１（Ｂ）に例示されるような多量のスレッドの処理をスケジューリングする部分である。スレッドスケジューラ１４は、スレッドを跨いだスケジューリングを行うことが可能である。
【００２３】
実行コア１６は、４つのプロセッシングエレメントである、ＰＥ＃０と、ＰＥ＃１と、ＰＥ＃２と、ＰＥ＃３と、を有している。実行コア１６は、独立してスケジューリング可能な多数のパイプラインを有している。
【００２４】
メモリサブシステム１８は、アービタ１８１と、Ｌ１キャッシュ１８ａと、Ｌ２キャッシュ１８ｂと、を有している。メモリサブシステム１８は、システム・バス・インターフェイス及びＲＯＭインターフェイスとの間で情報通信可能なように構成されている。
【００２５】
続いて、図４を参照しながら、コンパイラ５０について説明する。コンパイラ５０は、機能的な構成要素として、ループ構造解析部５０１と、平均命令消費量算出部５０２と、を備える。
【００２６】
ループ構造解析部５０１は、図１に示されるようなグラフ構造のプログラムコードを解析して複数のスレッドを特定する部分である。
【００２７】
平均命令消費量算出部５０２は、ループ構造解析部５０１が特定した複数のスレッドそれぞれに対して平均命令消費量を算出する部分である。図５に示される例では、スレッド１の平均命令消費量が１５００、スレッド２の平均命令消費量が２０００、スレッド３の平均命令消費量が１０００、スレッド４の平均命令消費量が５０００となっている。平均命令消費量算出部５０２は、算出した平均命令消費量をＤＦＰ１０に通知する。
【００２８】
続いて、図６を参照しながら、ＤＦＰ１０に設けられるプリフェッチコントローラ６０について説明する。プリフェッチコントローラ６０は、機能的な構成要素として、プリフェッチ量比較部６０１と、優先順位変更部６０２と、を備える。
【００２９】
プリフェッチ量比較部６０１は、平均命令消費量算出部５０２から通知された平均命令消費量と、現時点でのプリフェッチ量とを比較する部分である。
【００３０】
優先順位変更部６０２は、プリフェッチ量比較部６０１の比較結果に基づいて、プリフェッチ量が相対的に不足しているスレッドのプリフェッチ優先順位を上昇させる部分である。優先順位変更部６０２は、この比較結果にスレッドの実行優先度を加味して優先順位を決定することができる。
【００３１】
図７に示される例では、スレッド１の平均命令消費量が１５００に対してプリフェッチ量が６００、スレッド２の平均命令消費量が２０００に対してプリフェッチ量が１７００、スレッド３の平均命令消費量が１０００に対してプリフェッチ量が１０００、スレッド４の平均命令消費量が５０００に対してプリフェッチ量が１００となっている。
【００３２】
図７に示される例の場合、スレッド１及びスレッド４の相対的なプリフェッチ量が相対的に不足しているのでプリフェッチ優先順位を上げ、スレッド２及びスレッド３のプリフェッチ優先順位を下げる。
【００３３】
上記説明したように、本実施形態は、プロセッサであるＤＦＰ１０に設けられるプリフェッチコントローラ６０であって、複数のスレッド毎に予め設定されている平均命令消費量と、現時点でのプリフェッチ量とを比較するプリフェッチ量比較部６０１と、プリフェッチ量比較部の比較結果に基づいて、プリフェッチ量が相対的に不足しているスレッドのプリフェッチ優先順位を上昇させる優先順位変更部６０２と、を備える。
【００３４】
本実施形態によれば、実際のプリフェッチ量の変動に応じてプリフェッチ優先順位を変更できるので、複数のスレッドを並列処理する際に、命令フェッチの競合や帯域不足を緩和することができる。
【００３５】
以上、具体例を参照しつつ本実施形態について説明した。しかし、本開示はこれらの具体例に限定されるものではない。これら具体例に、当業者が適宜設計変更を加えたものも、本開示の特徴を備えている限り、本開示の範囲に包含される。前述した各具体例が備える各要素およびその配置、条件、形状などは、例示したものに限定されるわけではなく適宜変更することができる。前述した各具体例が備える各要素は、技術的な矛盾が生じない限り、適宜組み合わせを変えることができる。
【符号の説明】
【００３６】
６０１：プリフェッチ量比較部
６０２：優先順位変更部
【図１】
2019179419.tif 000003
【図２】
2019179419.tif 000004
【図３】
2019179419.tif 000005
【図４】
2019179419.tif 000006
【図５】
2019179419.tif 000007
【図６】
2019179419.tif 000008
【図７】
2019179419.tif 000009