(57)【要約】【課題】制御情報と値をインターコネクトデバイスの縮約演算装置に送信する際にプロセッサコアの実行性能の低下を防ぐこと。【解決手段】キャッシュコヒーレントバス３７とインターコネクトデバイス３４に縮約演算専用バッファ３６を接続する。そして、プロセッサコア３１は、制御情報と値を縮約演算専用バッファ３６に転送する。そして、インターコネクトデバイス３４は、縮約演算専用バッファ３６から制御情報と値を一括して取得する。【選択図】図２
2019191704.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサコアと、
他のプロセッサと通信する通信部と、
メインメモリを制御するメモリコントローラと、
前記複数のプロセッサコア、前記通信部及び前記メモリコントローラを接続するバスと、
前記バスと前記通信部に接続される縮約演算バッファとを有し、
プロセッサコアは、前記通信部が備える縮約演算装置を制御する制御情報と該縮約演算装置が演算を行う値とを前記縮約演算バッファに書き込み、
前記通信部は、前記縮約演算バッファから前記制御情報と値を読み出して前記縮約演算装置に渡すことを特徴とするプロセッサ。
【請求項２】
前記プロセッサコアは、前記制御情報と値を専用の命令を用いて前記縮約演算バッファに書き込むことを特徴とする請求項１に記載のプロセッサ。
【請求項３】
前記プロセッサコアは、前記制御情報と値を特定のメモリ空間へのメモリ書き込み命令又は特定のアドレスへのＩＯ出力命令を用いて前記縮約演算バッファに書き込むことを特徴とする請求項１に記載のプロセッサ。
【請求項４】
前記プロセッサコアは、前記制御情報と値を特定のメモリ空間への複数のメモリ書き込み命令又は特定のアドレスへの複数のＩＯ出力命令を用いて前記縮約演算バッファに書き込む際、命令順序の入れ替え機能を一時的に無効化することを特徴とする請求項３に記載のプロセッサ。
【請求項５】
前記縮約演算バッファは、前記制御情報と値の組を複数有し、
前記通信部は、読み出す組のアドレスを指定して、前記縮約演算バッファから前記制御情報と値とを読み出すことを特徴とする請求項１〜４のいずれか１つに記載のプロセッサ。
【請求項６】
プロセッサと該プロセッサで実行されるプログラムを記憶するメインメモリとを備え、
前記プロセッサは、
複数のプロセッサコアと、
他の情報処理装置のプロセッサと通信する通信部と、
前記メインメモリを制御するメモリコントローラと、
前記複数のプロセッサコア、前記通信部及び前記メモリコントローラを接続するバスと、
前記バスと前記通信部に接続される縮約演算バッファとを有し、
プロセッサコアは、前記通信部が備える縮約演算装置を制御する制御情報と該縮約演算装置が演算を行う値とを前記縮約演算バッファに書き込み、
前記通信部は、前記縮約演算バッファから前記制御情報と値を読み出して前記縮約演算装置に渡すことを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサ及び情報処理装置に関する。
【背景技術】
【０００２】
並列計算では、データは複数のプロセッサに分割して配置され、各プロセッサの計算結果の値を集約・交換する処理が繰り返される。ここで、集約した値の総和を次の処理が用いる場合、集約の途中で値同士の加算を行えば、プロセッサ間の通信量を削減することができる。このような並列処理は縮約演算と呼ばれる。分散メモリ型の並列計算機ではプロセッサ間データ転送のコストが高いため、縮約演算は特に重要となる。
【０００３】
分散メモリ型の並列計算機で縮約演算を行う場合、各プロセッサはマイクロ秒オーダーの通信とマイクロ秒未満の計算を繰り返す。また、並列計算機システムではマルチタスクのオペレーティングシステムが稼働しており、各プロセッサは秒オーダーの間隔で強制的にタスクを切り替える。並列計算機システムでは通常、強制的に切り替えられた計算タスクが再び走行するまでミリ秒オーダーの時間がかかる。このオーバーヘッドはシステムノイズと呼ばれる。システムノイズは単一プロセッサの計算時間に対しては大きな影響を及ぼさないが、縮約演算に対しては破滅的な影響を及ぼすことが知られている。
【０００４】
縮約演算に対するシステムノイズの影響は、計算タスクと並行して走行しているシステム管理タスク等の数を減らす、各システム管理タスクはごく短時間の処理を行い直ちに待機状態に移行する等の対策により、ある程度緩和可能である。しかし、マルチタスクのオペレーティングシステムを使用し、かつプロセッサが通信と計算の処理を行っている限り、根本的にはシステムノイズの影響を回避することはできない。
【０００５】
そこで、多くの並列計算機システムでは、インターコネクトデバイスに縮約演算専用の装置又は回路を搭載し、システムノイズの影響を回避する。ここで、インターコネクトデバイスは、他のプロセッサと通信を行う通信装置である。また、インターコネクトデバイスに搭載された縮約演算装置はインターコネクトデバイスのＩＯレジスタ経由でアクセスされる。例えば、縮約演算装置を制御するための制御情報、縮約演算される値はＩＯレジスタ経由で縮約演算装置に渡される。
【０００６】
なお、並列計算機システムに関する従来技術として、ファイルサーバとの間のデータ転送の負荷を軽減する技術がある。この技術では、並列計算処理を行う複数の情報処理装置のうちの１つの情報処理装置は、算出部と、決定部と、転送部とを有する。算出部は、第１のデータ長と、第２のデータ長と、複数の情報処理装置のそれぞれの位置情報とに基づき複数の情報処理装置の重心位置を算出する。ここで、第１のデータ長は、自情報処理装置以外の各情報処理装置から取得した、ファイルサーバに次に読み込み又は書き込みを要求するデータの長さである。第２のデータ長は、自情報処理装置が次にファイルサーバに読み込み又は書き込みを要求するデータの長さである。決定部は、重心位置に応じて複数の情報処理装置のうちからデータ中継を行う情報処理装置を決定する。転送部は、データ中継を行う情報処理装置が自情報処理装置である場合、複数の情報処理装置のそれぞれが次に読み込み又は書き込みを要求するデータをまとめてファイルサーバとの間で転送する。
【０００７】
また、従来技術として、エミュレートされた共有メモリアーキテクチャのためのプロセッサアーキテクチャ構成体がある。このプロセッサアーキテクチャ構成体は、各々がインタリーブスレッド間パイプラインと、データに算術演算および論理演算を実行するための複数の機能ユニットとを備えるい複数のマルチスレッドプロセッサを備える。パイプラインは少なくとも２つの並列に動作可能なパイプラインブランチを含む。第１のパイプラインブランチは、整数演算を実行するように配列されたＡＬＵ（Arithmetic  Logic  Unit）等の複数の機能ユニットの第１のサブグループを含む。第２のパイプラインブランチは、浮動小数点演算を実行するように配列されたＦＰＵ（Floating-Point  Unit）等の複数の機能ユニットの第２の非オーバーラップのサブグループをむ。さらに、浮動小数点演算のために配列された少なくとも第２のサブグループの機能ユニットのうちの１つ又は複数が、パイプラインのメモリアクセスセグメントと並列に動作可能に配置される。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１７−２１６１８号公報
【特許文献２】特表２０１６−５３４４３３号公報
【特許文献３】特開２０１２−５８９５８号公報
【特許文献４】特開２０１２−１２８８０８号公報
【特許文献５】特開２０１２−１２８８０９号公報
【非特許文献】
【０００９】
【非特許文献１】“The  Case  of  the  Missing  Supercomputer  Performance:Achieving  Optimal  Performance  on  the  8,192  Processors  of  ASCI  Q,”  Fabrizio  Petrini  et  al.,  the  ACM/IEEE  Conference  on  Supercomputing  (SC03),  2003.
【非特許文献２】“Unfolding  the  IBM  E-server  Blue  Gene  Solution,”  IBM  Redbooks,  pp.27-29,  2005.
【非特許文献３】“The  Tofu  Interconnect  2,”  Yuichiro  Ajima  et  al.,  IEEE  22nd  Annual  Symposium  on  High  Performance  Interconnects  (HOTI),  2014.
【発明の概要】
【発明が解決しようとする課題】
【００１０】
プロセッサは、深いパイプラインで構成され、さらに命令処理結果のレジスタやメモリへの書き込みを遅延するバッファを備え、命令実行順序の入れ替えや、分岐命令の後続命令の投機的実行を行ってパイプラインの充填率を向上している。プロセッサは、ＩＯレジスタにアクセスする際、プロセッサによるメモリやＩＯレジスタへのアクセスの、プロセッサ外部から見た順序を保証する必要がある。
【００１１】
そのため、ＩＯレジスタへのアクセスに先立って、先行命令処理結果のＣＰＵ（Central  Processing  Unit）レジスタやメモリへの書き込みを完了させる必要がある。この制約により、ＩＯレジスタへのアクセスは、パイプラインへの命令投入を停止させるオーバーヘッドを伴うので、プロセッサ実行性能低下の原因となる。プロセッサがＩＯレジスタ経由でインターコネクトデバイスに縮約演算を指示する場合、オーバーヘッドの大きなＩＯレジスタへのアクセスを複数回（制御情報で１回、値で１回以上）行うことになり、プロセッサ実行性能が低下するという問題がある。
【００１２】
なお、ＩＯレジスタの代わりにＤＭＡ（Direct  Memory  Access）を使用することが考えられる。具体的には、プロセッサは、メインメモリ上に縮約演算の制御情報と値を書き込んだ後、ＤＭＡでインターコネクトデバイスに制御情報と値を転送する。しかし、ＤＭＡの起動には最低限のＩＯレジスタへのアクセスを含む制御が必要であり、ＤＭＡ起動のオーバーヘッドを避けることはできない。
【００１３】
本発明は、１つの側面では、縮約演算装置に制御情報と値を渡す場合のプロセッサ実行性能の低下を防ぐことを目的とする。
【課題を解決するための手段】
【００１４】
１つの態様では、プロセッサは、複数のプロセッサコアと、他のプロセッサと通信する通信部と、メインメモリを制御するメモリコントローラとを有する。また、プロセッサは、複数のプロセッサコア、通信部及びメモリコントローラを接続するバスと、バスと通信部に接続される縮約演算バッファとを有する。プロセッサコアは、通信部が備える縮約演算装置を制御する制御情報と該縮約演算装置が演算を行う値とを縮約演算バッファに書き込む。通信部は、縮約演算バッファから制御情報と値を読み出して縮約演算装置に渡す。
【発明の効果】
【００１５】
１つの側面では、本発明は、縮約演算装置に制御情報と値を渡す場合のプロセッサ実行性能の低下を防ぐことができる。
【図面の簡単な説明】
【００１６】
【図１】図１は、実施例に係る分散メモリ型並列計算機の構成を示す図である。
【図２】図２は、ノードの構成を示す図である。
【図３】図３は、インターコネクトデバイスによる１組の制御情報と値の選択を説明するための図である。
【図４】図４は、制御情報と値の転送シーケンスを示す図である。
【発明を実施するための形態】
【００１７】
以下に、本願の開示するプロセッサ及び情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例】
【００１８】
まず、実施例に係る分散メモリ型並列計算機の構成について説明する。図１は、実施例に係る分散メモリ型並列計算機の構成を示す図である。図１に示すように、実施例に係る分散メモリ型並列計算機１は、メッシュ状に配置された複数のノード２を有する。なお、ここでは説明の便宜上、２次元に配置される場合を示すが、ノード２は、３次元、６次元等の、より高次元に配置されてもよい。また、ノード２は、トーラス状に配置されてもよい。
【００１９】
ノード２は、他のノード２と連携して並列処理を行う情報処理装置である。ノード２は、インターコネクトデバイス３４を有し、インターコネクトデバイス３４を介して上下左右のノード２と通信を行う。
【００２０】
図２は、ノード２の構成を示す図である。図２に示すように、ノード２は、プロセッサＳｏＣ（System-on-Chip）３と、メインメモリ４と、ＨＤＤ（Hard  Disk  Drive）５とを有する。プロセッサＳｏＣ３は、複数のプロセッサコア３１を含むプロセッサ・チップである。メインメモリ４は、プログラムやプログラムの実行途中結果などを記憶するメモリである。ＨＤＤ５は、プログラムやデータを格納するディスク装置である。
【００２１】
プロセッサＳｏＣ３は、４個のプロセッサコア３１と、メモリコントローラ３２と、周辺デバイス３３と、インターコネクトデバイス３４と、ブリッジ３５と、縮約演算専用バッファ３６とを有する。なお、プロセッサＳｏＣ３は、８個、１６個等のより多くのプロセッサコア３１を有してもよい。
【００２２】
４個のプロセッサコア３１、メモリコントローラ３２、ブリッジ３５及び縮約演算専用バッファ３６は、キャッシュコヒーレントバス３７で接続される。ブリッジ３５、周辺デバイス３３及びインターコネクトデバイス３４はペリフェラルバス３８で接続される。
【００２３】
プロセッサコア３１は、メインメモリ４からプログラムを読み出して実行する。プロセッサコア３１は、複数のＣＰＵレジスタを有する。メモリコントローラ３２は、メインメモリ４と接続され、メインメモリ４からのプログラム及びデータの読み出し、メインメモリ４へのプログラム及びデータの書き込みを制御する。
【００２４】
周辺デバイス３３は、ＨＤＤ５等の周辺装置と接続するインタフェースである。周辺デバイス３３は、ＬＡＮ（Local  Area  Network）と接続する。周辺デバイス３３は、ＩＯレジスタ３９を有する。プロセッサコア３１は、ＣＰＵレジスタの内容をＩＯレジスタ３９に書き込む命令、もしくはＩＯレジスタ３９の内容をＣＰＵレジスタに読み出す命令により、周辺デバイス３３にアクセスする。ＩＯレジスタ３９は、プロセッサコア３１のＩＯ空間もしくはメモリ空間にマップされる。
【００２５】
インターコネクトデバイス３４は、他のノード２のプロセッサＳｏＣ３と通信を行う。インターコネクトデバイス３４は、ＩＯレジスタ４０と縮約演算装置４１を有する。プロセッサコア３１は、ＣＰＵレジスタの内容をＩＯレジスタ４０に書き込む命令、もしくはＩＯレジスタ４０の内容をＣＰＵレジスタに読み出す命令により、インターコネクトデバイス３４にアクセスする。ＩＯレジスタ４０は、プロセッサコア３１のＩＯ空間もしくはメモリ空間にマップされる。
【００２６】
縮約演算装置４１は、縮約演算を行う。縮約演算には、総和、総乗、総論理和、総論理積、最大値及び最小値がある。縮約演算装置４１は、それぞれの縮約演算に対応する演算器を有する。
【００２７】
１ユーザーが並列プログラムを実行する際に使用するプロセッサコア３１は分散メモリ型並列計算機１の一部である。また、縮約演算は並列プログラムが複数プロセッサコア３１に分割したデータのうちの一部だけで行われる場合があるので、縮約演算装置４１は利用するユーザー及びユーザーが実行する複数の縮約演算グループを識別する機能を備える。ここで、並列プログラムが複数プロセッサコア３１に分割したデータのうちの一部とは、例えば２次元に分割したデータの該当行もしくは該当列のデータである。
【００２８】
また、並列プログラムは縮約演算を含む繰り返し処理を行う場合があり、前後の縮約演算が相互にデータを破壊するレーシングが起きないように、縮約演算装置４１は縮約演算の順序を識別してデータを保護する管理機能を備える。
【００２９】
縮約演算装置４１の機能を利用する際、ユーザーは、縮約演算グループの設定や縮約演算順序の初期化は事前に行い、縮約演算の種類や縮約演算グループの識別子は縮約演算毎に設定する。プロセッサコア３１は、縮約演算の種類や縮約演算グループの識別子を制御情報として縮約演算される値とともに縮約演算装置４１に渡す。
【００３０】
ブリッジ３５は、キャッシュコヒーレントバス３７とペリフェラルバス３８を接続する。キャッシュコヒーレントバス３７のデータ転送単位は、プロセッサコア３１の間及びプロセッサコア３１とメモリコントローラ３２との間は、キャッシュラインサイズであり、プロセッサコア３１と周辺デバイス３３との間は、ＩＯレジスタサイズである。また、周辺デバイス３３とメモリコントローラ３２との間の連続ＤＭＡデータがキャッシュコヒーレントバス３７を介して転送される。
【００３１】
縮約演算専用バッファ３６は、プロセッサコア３１が縮約演算装置４１に渡す制御情報と値を記憶する。制御情報と値は、プロセッサコア３１の複数のＣＰＵレジスタから縮約演算専用バッファ３６に転送される。
【００３２】
このため、プロセッサコア３１には、連続する複数のＣＰＵレジスタの内容を読み出してバッファに格納し、バッファに格納した内容をキャッシュコヒーレントバス３７経由で縮約演算専用バッファ３６に転送する機能が必要になる。また、プロセッサコア３１には、この機能を起動する機能も必要になる。
【００３３】
これらの機能を実現するための手段としては、プロセッサコア３１の命令セットの拡張がある。すなわち、プロセッサコア３１は、連続する複数のＣＰＵレジスタの内容を読み出してバッファに格納し、バッファに格納した内容をキャッシュコヒーレントバス３７経由で縮約演算専用バッファ３６に転送する命令を実行することで制御情報と値を転送する。
【００３４】
また、別の手段として、メモリ書き込み命令又はＩＯ出力命令の利用がある。プロセッサコア３１は、特定のメモリ空間へのメモリ書き込みを行うことで制御情報と値を縮約演算専用バッファ３６に転送する。あるいは、プロセッサコア３１は、特定のアドレスのＩＯレジスタへの書き込みを行うことで制御情報と値を縮約演算専用バッファ３６に転送する。特定のアドレスは、ＩＯレジスタ３９及びＩＯレジスタ４０のアドレス以外のアドレスである。
【００３５】
メモリ書き込み命令やＩＯ出力命令ではＣＰＵレジスタは１つしか使われないが、制御情報と値の転送には複数のＣＰＵレジスタが使用される。このため、プロセッサコア３１は、複数のＣＰＵレジスタに対してメモリ書き込み命令やＩＯ出力命令を複数実行する際、命令順序の入れ替え機能を一時的に無効化し、誤動作が起きないようにする。
【００３６】
なお、命令セットに複数ＣＰＵレジスタの内容を１命令でメインメモリ４に書き込むブロック書き込み命令が存在する場合、プロセッサコア３１は、ブロック書き込み命令を使用することで、命令順序入れ替え機能を無効化することはない。
【００３７】
縮約演算専用バッファ３６は、インターコネクトデバイス３４に直結される。制御情報と値は、縮約演算専用バッファ３６から一括してインターコネクトデバイス３４に転送される。インターコネクトデバイス３４は、制御情報と値を受信して縮約演算装置４１に渡す。
【００３８】
また、縮約演算装置４１は複数の縮約演算グループに対応するので、縮約演算専用バッファ３６は制御情報と値の組を縮約演算グループに対応する数だけ保持する。縮約演算専用バッファ３６の内容を全て信号として出力してインターコネクトデバイス３４に接続すると信号数が多くなりすぎる。
【００３９】
そこで、縮約演算装置４１は、１つの組だけをインターコネクトデバイス３４に出力する。どの組の値を出力するかはインターコネクトデバイス３４が選択する。このように、１つの組だけをインターコネクトデバイス３４に出力することで、縮約演算専用バッファ３６から出力する信号線を制御情報と値の組１つ分だけに削減することができる。
【００４０】
このため、インターコネクトデバイス３４は、制御情報と値の組を識別するアドレス信号を出力し、縮約演算専用バッファ３６はアドレス信号を入力して対応する制御情報と値の組をインターコネクトデバイス３４に出力する。
【００４１】
図３は、インターコネクトデバイス３４による１組の制御情報と値の選択を説明するための図である。図３に示すように、縮約演算専用バッファ３６は、バッファ部３６ａと選択部３６ｂを有する。バッファ部３６ａは、制御情報と値の組を複数記憶する。選択部３６ｂは、インターコネクトデバイス３４が出力するアドレス信号に基づいてバッファ部３６ａから１組の制御情報と値を選択し、インターコネクトデバイス３４に転送する。
【００４２】
次に、制御情報と値の転送シーケンスについて説明する。図４は、制御情報と値の転送シーケンスを示す図である。なお、図４では、ＩＯ出力命令又はメモリ書き込み命令を用いる場合について説明する。また、プロセッサコア３１は、ブロック書き込み命令を有さないとする。
【００４３】
図４に示すように、プロセッサコア３１は、制御情報と値を連続する複数のＣＰＵレジスタに書き込み（ステップＳ１）、命令順序の入れ替え機能を無効化する（ステップＳ２）。そして、プロセッサコア３１は、複数のＣＰＵレジスタの内容を、ＩＯ出力命令で特定のアドレスのＩＯレジスタに書き込む、又は、メモリ書き込み命令で特定のアドレス空間に書き込む（ステップＳ３）。この結果、制御情報と値が縮約演算専用バッファ３６に転送される。そして、プロセッサコア３１は、命令順序の入れ替え機能を有効化する（ステップＳ４）。
【００４４】
一方、インターコネクトデバイス３４は、縮約演算専用バッファ３６に対して、縮約演算グループに対応するアドレス信号を出力する（ステップＳ５）。すると、縮約演算専用バッファ３６は、インターコネクトデバイス３４に、アドレス信号に対応する制御情報と値を選択して出力する（ステップＳ６）。そして、インターコネクトデバイス３４は、制御情報と値を受信し、縮約演算装置４１に渡す（ステップＳ７）。
【００４５】
上述してきたように、実施例では、キャッシュコヒーレントバス３７とインターコネクトデバイス３４に縮約演算専用バッファ３６を接続する。そして、プロセッサコア３１は、制御情報と値を縮約演算専用バッファ３６に転送する。そして、インターコネクトデバイス３４は、縮約演算専用バッファ３６から制御情報と値を一括して取得する。したがって、プロセッサコア３１は、ＩＯレジスタ４０を用いることなく制御情報と値をインターコネクトデバイス３４に渡すことができ、実行性能の低下を防ぐことができる。
【００４６】
また、実施例では、プロセッサコア３１は、ＩＯ出力命令で特定のアドレスのＩＯレジスタに書き込むこと、又は、メモリ書き込み命令で特定のアドレス空間に書き込むことで制御情報と値を縮約演算専用バッファ３６に転送する。したがって、プロセッサコア３１は、命令セットを拡張しなくても制御情報と値を縮約演算専用バッファ３６に渡すことができる。
【００４７】
なお、プロセッサコア３１は、複数のＣＰＵレジスタの内容を縮約演算専用バッファ３６に書き込む専用命令を有する場合には、ＩＯ出力命令やメモリ書き込み命令の代わりに専用の命令を用いて、制御情報と値を縮約演算専用バッファ３６に書き込む。この場合、プロセッサコア３１は、制御情報と値を縮約演算専用バッファ３６に簡単に書き込むことができる。
【００４８】
また、実施例では、プロセッサコア３１は、制御情報と値を特定のメモリ空間への複数のメモリ書き込み命令又は特定のアドレスへの複数のＩＯ出力命令を用いて縮約演算専用バッファ３６に書き込む際に、命令順序の入れ替え機能を一時的に無効化する。したがって、プロセッサコア３１は、ノード２の誤動作を防ぐことができる。
【００４９】
また、実施例では、縮約演算専用バッファ３６は、制御情報と値の組を複数有し、インターコネクトデバイス３４は、縮約演算専用バッファ３６にアドレス信号を出力して特定の組の制御情報と値を取得する。したがって、縮約演算装置４１は、複数の縮約演算グループの中から特定の縮約演算グループに対応する組の制御情報と値を取得することができる。
【符号の説明】
【００５０】
１    分散メモリ型並列計算機
２    ノード
３    プロセッサＳｏＣ
４    メインメモリ
５    ＨＤＤ
３１    プロセッサコア
３２    メモリコントローラ
３３    周辺デバイス
３４    インターコネクトデバイス
３５    ブリッジ
３６    縮約演算専用バッファ
３６ａ    バッファ部
３６ｂ    選択部
３７    キャッシュコヒーレントバス
３８    ペリフェラルバス
３９    ＩＯレジスタ
４０    ＩＯレジスタ
４１    縮約演算装置
【図１】
2019191704.tif 000003
【図２】
2019191704.tif 000004
【図３】
2019191704.tif 000005
【図４】
2019191704.tif 000006