(57)【要約】      （修正有）【課題】自身が専有するローカルメモリと他の情報処理装置と共有するグローバルメモリとの双方にアクセス可能な情報処理装置であって、より処理を高速化することが可能な情報処理装置を提供する。【解決手段】アクセラレータ１０を有するシステムであって、グローバルメモリ１４をホストＣＰＵ１２と共有し、ローカルメモリ１０３及びグローバルメモリに格納されているデータに基づいて処理を実行する処理実行部１０２と、処理実行部の処理の実行に対してアクセス先のアドレスを変換するアドレス変換処理を実行するアドレス変換部１０１と、を備える。【選択図】図２
2019179411.tif 000002
【特許請求の範囲】
【請求項１】
自身が専有するローカルメモリと他の情報処理装置と共有するグローバルメモリとの双方にアクセス可能な情報処理装置であって、
前記ローカルメモリ及び前記グローバルメモリに格納されているデータに基づいて処理を実行する処理実行部（１０２）と、
前記処理実行部の処理の実行に対してアクセス先のアドレスを変換するアドレス変換処理を実行するアドレス変換部（１０１）と、を備える情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
前記アドレス変換部は、前記処理実行部が処理に要するデータが前記ローカルメモリに格納されていない場合に、前記処理実行部に対して前記グローバルメモリから前記ローカルメモリにデータを移すように前記アドレス変換処理を実行する、情報処理装置。
【請求項３】
請求項２に記載の情報処理装置であって、
前記アドレス変換部は、他の情報処理装置が前記グローバルメモリにアクセスする状況を監視し、前記グローバルメモリに必要とされるデータが無い場合に、前記処理実行部に対して前記ローカルメモリから前記グローバルメモリにデータを移すように前記アドレス変換処理を実行する、情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、自身が専有するローカルメモリと他の情報処理装置と共有するグローバルメモリとの双方にアクセス可能な情報処理装置に関する。
【背景技術】
【０００２】
自身が専有するローカルメモリと他の情報処理装置と共有するグローバルメモリとの双方にアクセス可能な情報処理装置として、下記特許文献１に記載のものが開示されている。下記特許文献１では、コンピュータユニットは、中央処理ユニット（ＣＰＵ）及びグラフィック処理ユニット（ＧＰＵ）の異種混合ユニットを含んでいる。システムは、複数の異種コンピュータユニットの各々に対する親バッファからサブバッファを作成する。サブバッファが親バッファと同じコンピュータユニットに関連付けられていない場合、システムは、サブバッファからのデータをそのコンピュータユニットのメモリにコピーする。システムは、更に、データへの更新を追跡しこれらの更新をサブバッファに転送する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２０１３−５２８８６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１では、親バッファとサブバッファとが関連付けられ、同期を取るように親バッファ及びサブバッファが更新される。このようにローカルメモリとグローバルメモリとの間で頻繁にデータ書き込み及び読み出しが行われると、ローカルメモリとグローバルメモリとの間のデータ転送時間がボトルネックとなり、処理の高速化に影響する。
【０００５】
本開示は、自身が専有するローカルメモリと他の情報処理装置と共有するグローバルメモリとの双方にアクセス可能な情報処理装置であって、より処理を高速化することが可能な情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本開示は、自身が専有するローカルメモリと他の情報処理装置と共有するグローバルメモリとの双方にアクセス可能な情報処理装置であって、ローカルメモリ及びグローバルメモリに格納されているデータに基づいて処理を実行する処理実行部（１０２）と、処理実行部の処理の実行に対してアクセス先のアドレスを変換するアドレス変換処理を実行するアドレス変換部（１０１）と、を備える。
【０００７】
処理実行部の処理の実行に対してアクセス先のアドレスを変換するアドレス変換処理を実行するので、処理実行部が必要とするデータのみにアクセスすることができ、より処理を高速化することが可能となる。
【０００８】
尚、「課題を解決するための手段」及び「特許請求の範囲」に記載した括弧内の符号は、後述する「発明を実施するための形態」との対応関係を示すものであって、「課題を解決するための手段」及び「特許請求の範囲」が、後述する「発明を実施するための形態」に限定されることを示すものではない。
【発明の効果】
【０００９】
本開示によれば、自身が専有するローカルメモリと他の情報処理装置と共有するグローバルメモリとの双方にアクセス可能な情報処理装置であって、より処理を高速化することが可能な情報処理装置を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、本実施形態の前提となる並列処理について説明するための図である。
【図２】図２は、図１に示される並列処理を実行するためのシステム構成例を示す図である。
【図３】図３は、本実施形態の処理の一例を示すためのグラフ構造を示す図である。
【図４】図４は、本実施形態のアクセラレータの処理を説明するための図である。
【図５】図５は、ローカルメモリ及びグローバルメモリの書き込み状況を説明するための図である。
【図６】図６は、ローカルメモリ及びグローバルメモリの書き込み状況を説明するための図である。
【図７】図７は、比較例としてのアクセラレータの処理を説明するための図である。
【図８】図８は、比較例におけるローカルメモリ及びグローバルメモリの書き込み状況を説明するための図である。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照しながら本実施形態について説明する。説明の理解を容易にするため、各図面において同一の構成要素に対しては可能な限り同一の符号を付して、重複する説明は省略する。
【００１２】
図１（Ａ）は、グラフ構造のプログラムコードを示しており、図１（Ｂ）は、スレッドの状態を示しており、図１（Ｃ）は、並列処理の状況を示している。
【００１３】
図１（Ａ）に示されるように、本実施形態が処理対象とするプログラムは、データと処理とが分割されているグラフ構造を有している。このグラフ構造は、プログラムのタスク並列性、グラフ並列性を保持している。
【００１４】
図１（Ａ）に示されるプログラムコードに対して、コンパイラによる自動ベクトル化とグラフ構造の抽出を行うと、図１（Ｂ）に示されるような大量のスレッドを生成することができる。
【００１５】
図１（Ｂ）に示される多量のスレッドに対して、ハードウェアによる動的レジスタ配置とスレッド・スケジューリングにより、図１（Ｃ）に示されるような並列実行を行うことができる。実行中にレジスタ資源を動的配置することで、異なる命令ストリームに対しても複数のスレッドを並列実行することができる。
【００１６】
続いて図２を参照しながら、動的レジスタ配置及びスレッド・スケジューリングを行うアクセラレータ１０を含むシステム構成例を説明する。
【００１７】
アクセラレータ１０は、ホストＣＰＵ１２及びグローバルメモリ１４と共に情報処理システムを構成している。ホストＣＰＵ１２は、データ処理を主として行う演算装置である。ホストＣＰＵ１２は、ＯＳをサポートしている。
【００１８】
グローバルメモリ１４は、ｂｕｆ０、ｂｕｆ１、ｂｕｆ２の３つのメモリ領域を有している。グローバルメモリ１４は、ＣＰＵ１２及びアクセラレータ１０からのアクセスに応じて、データの読み込みや書き出しを行っている。
【００１９】
アクセラレータ１０は、ホストＣＰＵ１２の重い演算負荷に対処するために設けられている個別のマスタとして位置づけられている。アクセラレータ１０は、アドレス変換部１０１と、実行コア１０２と、ローカルメモリ１０３とが設けられている。
【００２０】
アドレス変換部１０１は、処理実行部である実行コア１０２の処理の実行に対してアクセス先のアドレスを変換するアドレス変換処理を実行する部分である。アドレス変換部１０１は、処理実行部である実行コア１０２が処理に要するデータがローカルメモリ１０３に格納されていない場合に、処理実行部である実行コア１０２に対してグローバルメモリ１４からローカルメモリ１０３にデータを移すようにアドレス変換処理を実行する。アドレス変換部１０１は、他の情報処理装置であるホストＣＰＵ１２がグローバルメモリ１４にアクセスする状況を監視し、グローバルメモリ１４に必要とされるデータが無い場合に、処理実行部である実行コア１０２に対してローカルメモリ１０３からグローバルメモリ１４にデータを移すようにアドレス変換処理を実行する。
【００２１】
実行コア１０２は、本開示の処理実行部に相当し、ローカルメモリ１０３及びグローバルメモリ１４に格納されているデータに基づいて処理を実行する部分である。
【００２２】
ローカルメモリ１０３は、ｂｕｆ０、ｂｕｆ１、ｂｕｆ２の３つのメモリ領域を有している。ローカルメモリ１０３は、実行コア１０２からのアクセスのみを受け付けて、データの読み込みや書き出しを行っている。
【００２３】
上記したように本実施形態に係るアクセラレータ１０は、本開示の情報処理装置であって、自身が専有するローカルメモリ１０３と他の情報処理装置であるホストＣＰＵ１２と共有するグローバルメモリ１４との双方にアクセス可能なものであって、ローカルメモリ及び前記グローバルメモリに格納されているデータに基づいて処理を実行する処理実行部である実行コア１０２と、処理実行部である実行コア１０２の処理の実行に対してアクセス先のアドレスを変換するアドレス変換処理を実行するアドレス変換部１０１と、を備えるものである。
【００２４】
続いて、アクセラレータ１０の処理について、図３、図４、図５、図６を参照しながら説明する。図３は、説明に用いるためのプログラムのグラフ構造を例示する図である。図３に示される例では、ｂｕｆ０に格納されているデータを用いてＧｒａｐｈ１の処理を実行し、結果をｂｕｆ１に格納する。続いて、ｂｕｆ１に格納されているデータを用いてＧｒａｐｈ２の処理を実行し、結果をｂｕｆ２に格納する。このような処理を前提として説明を続ける。
【００２５】
図４は、図３に示されるような処理を実行する際のシーケンス図である。図５は、図４に示されるような処理を行った場合のグローバルメモリ１４及びローカルメモリ１０３の状況を示す図である。
【００２６】
図４に示されるように、ホストＣＰＵ１２から、アクセラレータ１０に対してＧｒａｐｈ１の実行が指示される（ステップＳ００１）。図５（Ａ）に示されるように、この時点では、ローカルメモリ１０３にはデータが格納されておらず、グローバルメモリ１４のｂｕｆ０にｄａｔａ００１が格納されている。
【００２７】
ステップＳ００１の実行指示に応じて、アドレス変換部１０１は、ローカルメモリ１０３にｂｕｆ０のデータが格納されているか否かを判断する（ステップＳ１０１）。ローカルメモリ１０３にｂｕｆ０のデータが格納されていれば、ステップＳ１０４の処理に進む。ローカルメモリ１０３にｂｕｆ０のデータが格納されていなければ、ステップＳ１０２の処理に進む。
【００２８】
図５（Ａ）に示されるように、この時点では、ローカルメモリ１０３にはデータが格納されていない場合、ステップＳ１０２の処理を実行する。ステップＳ１０２では、アドレス変換部１０１が、実行コア１０２に対して、グローバルメモリ１４からｂｕｆ０のデータを読み込んで、ローカルメモリ１０３に書き込む指示を出力する。
【００２９】
この指示に応じて、実行コア１０２は、ｂｕｆ０のデータをグローバルメモリ１４から読み込んで、ローカルメモリ１０３に書き込む（ステップＳ２０１）。図５（Ｂ）に示されるように、ローカルメモリ１０３のｂｕｆ０にもｄａｔａ００１が格納される。
【００３０】
続いて、アドレス変換部１０１から実行コア１０２に、Ｇｒａｐｈ１の実行指示が出力される（ステップＳ１０３）。この指示に応じて、実行コア１０２は、Ｇｒａｐｈ１の処理を実行する（ステップＳ２０２）。実行コア１０２は、実行結果をｂｕｆ１に書き込む（ステップＳ２０３）。この書き込みの結果、図５（Ｃ）に示されるように、ローカルメモリ１０３のｂｕｆ１にｄａｔａ００２が格納される。
【００３１】
実行コア１０２からホストＣＰＵ１２に、Ｇｒａｐｈ１の完了通知が送信される（ステップＳ２０４）。この段階では、図５（Ｃ）に示されるように、グローバルメモリ１４のｂｕｆ１にはデータが書き込まれていない。
【００３２】
アドレス変換部１０１は、ホストＣＰＵ１２のメモリアクセス状況をモニタリングする（ステップＳ１０４）。ホストＣＰＵ１２は、ステップＳ２０４の通知によってＧｒａｐｈ１が完了していることを認識しているので、Ｇｒａｐｈ１の実行結果であるｂｕｆ１をグローバルメモリ１４から読み込んで次の処理を行う場合がある（ステップＳ００２）。
【００３３】
アドレス変換部１０１は、ステップＳ００２におけるＣＰＵ１２の処理を検知し、グローバルメモリ１４にｂｕｆ１が格納されているか否かを判断する（ステップＳ１０５）。グローバルメモリ１４にｂｕｆ１が格納されていれば、特段のアクションは起こさない。グローバルメモリ１４にｂｕｆ１が格納されていない場合、ＣＰＵ１２に読込遅延処理を行う（ステップＳ１０７）。この処理は、後述する実行コア１０２の処理が終了するまでＣＰＵ１２がグローバルメモリ１４からデータを読み込む処理を遅延させるものである。
【００３４】
アドレス変換部１０１は、実行コア１０２にｂｕｆ１をローカルメモリ１０３からグローバルメモリ１４に書き込む指示を出力する（ステップＳ１０６）。この指示に応じて、実行コア１０２は、ローカルメモリ１０３のｂｕｆ１をグローバルメモリ１４に書き込む処理を実行する（ステップＳ２０５）。この書き込みの結果、図５（Ｄ）に示されるように、グローバルメモリ１４のｂｕｆ１にｄａｔａ００２が格納される。
【００３５】
このような必要に応じた場合のみのローカルメモリ１０３からグローバルメモリ１４への書き込みは、Ｇｒａｐｈ２まで処理が進む場合も実行される。図６は、その場合のローカルメモリ１０３及びグローバルメモリ１４のデータ書き込み状況を示すものである。
【００３６】
図６（Ａ）及び図６（Ｂ）は、図５（Ａ）図５（Ｂ）と同じ状況となっている。ここで、ＣＰＵ１２からＧｒａｐｈ２の実行が指示されると、実行コア１０２はＧｒａｐｈ２を実行することになり、結果であるｂｕｆ２のｄａｔａ００３をローカルメモリ１０３にのみ書き込む。
【００３７】
ＣＰＵ１２は通知によってＧｒａｐｈ２が完了していることを認識しているので、Ｇｒａｐｈ２の実行結果であるｂｕｆ２をグローバルメモリ１４から読み込んで次の処理を行う場合がある。このアクションをアドレス変換部１０１が認識し、実行コア１０２は、ローカルメモリ１０３からグローバルメモリ１４にｂｕｆ２の書き込みを行う。図６（Ｄ）に示されるように、ＣＰＵ１２が必要としなかったｂｕｆ１はグローバルメモリ１４へ掻き出されないので、メモリの無駄なアクセスを低減することができる。
【００３８】
比較のため、アドレス変換を行わない場合の例について、図７及び図８を参照しながら説明する。図７に示されるように、ホストＣＰＵから、アクセラレータに対してＧｒａｐｈ１の実行が指示される（ステップＳ０５１）。図８（Ａ）に示されるように、この時点では、ローカルメモリにはデータが格納されておらず、グローバルメモリのｂｕｆ０にｄａｔａ００１が格納されている。
【００３９】
実行コアは、グローバルメモリからｂｕｆ０を読み込んで、ローカルメモリに書き込む（ステップＳ２５１）。この段階で、図８（Ｂ）に示されるように、ローカルメモリのｂｕｆ１にデータが書き込まれる。
【００４０】
実行コアは、Ｇｒａｐｈ１を実行する（ステップＳ２５２）。実行コアは、Ｇｒａｐｈ１の実行結果であるｂｕｆ１をローカルメモリに書き込む（ステップＳ２５３）。実行コアは、ｂｕｆ１をグローバルメモリに書き込む（ステップＳ２５４）。この段階で、図８（Ｃ）に示されるように、グローバルメモリのｂｕｆ１にデータが書き込まれる。
【００４１】
実行コアは、Ｇｒａｐｈ１の完了通知をホストＣＰＵに送信する（ステップＳ２５５）。ホストＣＰＵは、グローバルメモリからｂｕｆ１を読み込む（ステップＳ０５２）。
【００４２】
実行コアがＧｒａｐｈ２を実行すると、実行完了時に即座にグローバルメモリにもｂｕｆ２が書き込まれ、図８（Ｄ）の状態となる。
【００４３】
本実施形態のメモリ書き込み例である図６と、比較例のメモリ書き込み例である図８とを比較すると明らかなように、本実施形態では必要な場合のみにローカルメモリ１０３からグローバルメモリ１４への書き込みが行われるので、より処理を高速化することができる。
【００４４】
以上、具体例を参照しつつ本実施形態について説明した。しかし、本開示はこれらの具体例に限定されるものではない。これら具体例に、当業者が適宜設計変更を加えたものも、本開示の特徴を備えている限り、本開示の範囲に包含される。前述した各具体例が備える各要素およびその配置、条件、形状などは、例示したものに限定されるわけではなく適宜変更することができる。前述した各具体例が備える各要素は、技術的な矛盾が生じない限り、適宜組み合わせを変えることができる。
【符号の説明】
【００４５】
１０１：アドレス変換部
１０２：実行コア（処理実行部）
【図１】
2019179411.tif 000003
【図２】
2019179411.tif 000004
【図３】
2019179411.tif 000005
【図４】
2019179411.tif 000006
【図５】
2019179411.tif 000007
【図６】
2019179411.tif 000008
【図７】
2019179411.tif 000009
【図８】
2019179411.tif 000010