(57)【要約】【課題】ベクトルロード命令の投機的な実行を効率的に行うことが難しい、という課題を解決すること。【解決手段】メモリアクセス装置は、主記憶装置から読み出したベクトルロード命令に基づいて、主記憶装置からベクトルデータを取得するデータ取得手段を有している。データ取得手段は、当該ベクトルロード命令より前に存在する未完了の分岐命令の数を示す分岐レベルに応じて、主記憶装置からベクトルデータを取得する命令を発行するか否か判断する。【選択図】図１
2018156497.tif 000002
【特許請求の範囲】
【請求項１】
主記憶装置から読み出したベクトルロード命令に基づいて、前記主記憶装置からベクトルデータを取得するデータ取得手段を有し、
前記データ取得手段は、前記ベクトルロード命令より前に存在する未完了の分岐命令の数を示す分岐レベルに応じて、前記主記憶装置から前記ベクトルデータを取得する命令を発行するか否か判断する
メモリアクセス装置。
【請求項２】
請求項１に記載のメモリアクセス装置であって、
前記データ取得手段は、前記分岐レベルが予め定められた分岐レベル閾値以下である場合に、前記主記憶装置から前記ベクトルデータを取得する命令を発行する
メモリアクセス装置。
【請求項３】
請求項１又は２に記載のメモリアクセス装置であって、
前記データ取得手段は、前記分岐レベルが予め定められた分岐レベル閾値を超えていた場合、当該分岐レベルが前記分岐レベル閾値以下となるまで前記主記憶装置から前記ベクトルデータを取得する命令の発行を保留し、前記前記分岐レベルが前記分岐レベル閾値以下となった場合に、前記主記憶装置から前記ベクトルデータを取得する命令を発行する
メモリアクセス装置。
【請求項４】
請求項２又は３に記載のメモリアクセス装置であって、
前記分岐レベル閾値は、前記主記憶装置と前記メモリアクセス装置との間のネットワークの負荷に応じて制御される値である
メモリアクセス装置。
【請求項５】
請求項４に記載のメモリアクセス装置であって、
前記分岐レベル閾値は、前記主記憶装置と前記メモリアクセス装置との間のネットワークの負荷が予め定められた閾値よりも大きな値となる場合、当該分岐レベル閾値が示す値を下げるよう制御される値である
メモリアクセス装置。
【請求項６】
メモリアクセス装置が、
主記憶装置から読み出したベクトルロード命令より前に存在する未完了の分岐命令の数を示す分岐レベルに応じて、前記主記憶装置からベクトルデータを取得する命令を発行するか否か判断し、
前記判断の結果に応じて前記主記憶装置から前記ベクトルデータを取得する
命令制御方法。
【請求項７】
メモリアクセス装置に、
主記憶装置から読み出したベクトルロード命令に基づいて、前記主記憶装置からベクトルデータを取得するデータ取得手段を実現させ、
前記データ取得手段は、前記ベクトルロード命令より前に存在する未完了の分岐命令の数を示す分岐レベルに応じて、前記主記憶装置から前記ベクトルデータを取得する命令を発行するか否か判断する
プログラム。
【請求項８】
主記憶装置と、
複数のプロセッサコアと、前記プロセッサコアから発行される命令に応じて前記主記憶装置と前記プロセッサコアとの間でデータの送受信を行うプロセッサネットワーク部と、を有するプロセッサと、
を有し、
前記プロセッサコアは、前記主記憶装置から読み出したベクトルロード命令に基づいて、前記主記憶装置からベクトルデータを取得するデータ取得手段を有し、
前記データ取得手段は、前記ベクトルロード命令より前に存在する未完了の分岐命令の数を示す分岐レベルに応じて、前記主記憶装置から前記ベクトルデータを取得する命令を前記プロセッサネットワーク部に対して発行するか否か判断する
情報処理装置。
【請求項９】
請求項８に記載の情報処理装置であって、
前記データ取得手段は、前記分岐レベルと予め定められた分岐レベル閾値とに基づいて、前記主記憶装置から前記ベクトルデータを取得する命令を発行するか否か判断するよう構成され、
前記プロセッサネットワーク部は、当該プロセッサネットワーク部の負荷を観測する負荷監視手段を有し、
前記負荷監視手段は、前記プロセッサネットワーク部の負荷に応じて、前記分岐レベル閾値の値を制御する
情報処理装置。
【請求項１０】
請求項９に記載の情報処理装置であって、
前記負荷監視手段は、予め定められた情報に基づいて特定される前記プロセッサコアの前記分岐レベル閾値の値を制御する
情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリアクセス装置、命令制御方法、プログラム、情報処理装置に関し、特に、ベクトルロード命令を投機的に実行するメモリアクセス装置、命令制御方法、プログラム、情報処理装置に関する。
【背景技術】
【０００２】
ベクトル演算装置において、メモリアクセスのレイテンシを隠蔽し処理性能を向上させるため、分岐命令後のベクトルロード命令を投機的に実行することがある。
【０００３】
このような分岐命令後のベクトルロード命令を投機的に実行するための技術の一つとして、例えば、特許文献１がある。特許文献１には、命令発行部と、データ取得部と、ベクトルレジスタと、判定部と、ベクトルロード管理部と、を備えるプロセッサが記載されている。特許文献１によると、命令発行部は、ベクトルロード命令を発行する。また、データ取得部は、ベクトルロード命令に基づくベクトルデータを主記憶装置から取得するための取得要求の発行を行う。そして、ベクトルロード管理部は、判定部により分岐予測が成功したと判定された場合、取得要求に基づく全てのベクトルデータを取得し終えた後に、ベクトルレジスタに対して当該全てのベクトルデータを転送する。一方、ベクトルロード管理部は、判定部により分岐予測が失敗したと判定された場合、データ取得部により発行された取得要求により取得されたベクトルデータを廃棄する。特許文献１によると、プロセッサをこのように構成することで、ベクトルロード命令を投機的に実行することが可能となる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−８３９３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載されている技術の場合、分岐予測に失敗した際に、取得したデータを破棄することになる。換言すると、特許文献１に記載の技術の場合、一度ベクトルロード命令が発行されると、分岐予測が失敗して廃棄されるリクエストであるにもかかわらずベクトルデータの取得が行われることになる。
【０００６】
ここで、プロセッサは複数のプロセッサコア（メモリアクセス装置）を有している。そのため、上記のような処理は複数のプロセッサコアのそれぞれで行われることになる。その結果、複数のプロセッサコアからのベクトルデータ取得のリクエストが競合し、メモリネットワークの性能低下の原因となるおそれがあった。特に、投機的にベクトルロード命令が行われた結果、不要であるはずのデータを取得することにより、メモリネットワークの負荷が大きくなり、メモリネットワークの性能が低下するおそれがある、という事態が問題となっていた。
【０００７】
一方で、投機的なベクトルロード命令の発行は、メモリアクセスレイテンシを隠蔽し迅速な処理を行うためには必要となる。そのため、投機的なベクトルロード命令の発行を全て止めてしまうことも処理効率の観点から好ましくない。
【０００８】
このように、ベクトルロード命令の投機的な実行を効率的に行うことが難しい、という問題が生じていた。
【０００９】
そこで、本発明の目的は、ベクトルロード命令の投機的な実行を効率的に行うことが難しい、という問題を解決するメモリアクセス装置、命令制御方法、プログラム、情報処理装置を提供することにある。
【課題を解決するための手段】
【００１０】
かかる目的を達成するため本発明の一形態であるメモリアクセス装置は、
主記憶装置から読み出したベクトルロード命令に基づいて、前記主記憶装置からベクトルデータを取得するデータ取得手段を有し、
前記データ取得手段は、前記ベクトルロード命令より前に存在する未完了の分岐命令の数を示す分岐レベルに応じて、前記主記憶装置から前記ベクトルデータを取得する命令を発行するか否か判断する
という構成を採る。
【００１１】
また、本発明の他の形態である命令制御方法は、
メモリアクセス装置が、
主記憶装置から読み出したベクトルロード命令より前に存在する未完了の分岐命令の数を示す分岐レベルに応じて、主記憶装置からベクトルデータを取得する命令を発行するか否か判断し、
前記判断の結果に応じて前記主記憶装置から前記ベクトルデータを取得する
という構成を採る。
【００１２】
また、本発明の他の形態であるプログラムは、
メモリアクセス装置に、
主記憶装置から読み出したベクトルロード命令に基づいて、前記主記憶装置からベクトルデータを取得するデータ取得手段を実現させ、
前記データ取得手段は、前記ベクトルロード命令より前に存在する未完了の分岐命令の数を示す分岐レベルに応じて、前記主記憶装置から前記ベクトルデータを取得する命令を発行するか否か判断する
プログラムである。
【００１３】
また、本発明の他の形態である情報処理装置は、
主記憶装置と、
複数のプロセッサコアと、前記プロセッサコアから発行される命令に応じて前記主記憶装置と前記プロセッサコアとの間でデータの送受信を行うプロセッサネットワーク部と、を有するプロセッサと、
を有し、
前記プロセッサコアは、前記主記憶装置から読み出したベクトルロード命令に基づいて、前記主記憶装置からベクトルデータを取得するデータ取得手段を有し、
前記データ取得手段は、前記ベクトルロード命令より前に存在する未完了の分岐命令の数を示す分岐レベルに応じて、前記主記憶装置から前記ベクトルデータを取得する命令を前記プロセッサネットワーク部に対して発行するか否か判断する
という構成を採る。
【発明の効果】
【００１４】
本発明は、以上のように構成されることにより、ベクトルロード命令の投機的な実行を効率的に行うことが難しい、という問題を解決するメモリアクセス装置、命令制御方法、プログラム、情報処理装置を提供することが可能となる。
【図面の簡単な説明】
【００１５】
【図１】第１の実施形態に係る情報処理装置のうち本実施形態に特徴的な構成の一例を示すブロック図である。
【図２】第１の実施形態に係る情報処理装置の構成の一例を示すブロック図である。
【図３】メモリアクセス処理部の動作の一例を示すフローチャートである。
【図４】負荷監視部の動作の一例を示すフローチャートである。
【図５】ベクトルプロセッサの他の構成の一例を示すブロック図である。
【図６】ベクトルプロセッサの他の構成の一例を示すブロック図である。
【図７】ベクトルプロセッサの他の構成の一例を示すブロック図である。
【図８】第２の実施形態に係るメモリアクセス装置の構成の一例を示すブロック図である。
【図９】第２の実施形態に係る情報処理装置の構成の一例を示すブロック図である。
【発明を実施するための形態】
【００１６】
［第１の実施形態］
本発明の第１の実施形態を図１乃至図７を参照して説明する。図１は、情報処理装置１（情報処理装置１が有するベクトルプロセッサ２）のうち本実施形態に特徴的な構成の一例を示すブロック図である。図２は、情報処理装置１の構成の一例を示すブロック図である。図３は、メモリアクセス処理部２１２の動作の一例を示すフローチャートである。図４は、負荷監視部２２１の動作の一例を示すフローチャートである。図５乃至図７は、ベクトルプロセッサ２の他の構成の一例を示すブロック図である。
【００１７】
第１の実施形態では、ベクトルロード命令を投機的に実行する情報処理装置１について説明する。本実施形態における情報処理装置１は、図１で示すように、複数のコア２１（コア２１−１、コア２１−２、……、コア２１−Ｎ。特に区別しない場合は、コア２１と表記する）と、プロセッサネットワーク部２２と、を有するベクトルプロセッサ２を有している。また、コア２１が有するメモリアクセス処理部２１２は、上限分岐レベル保持部２１２１を有している。後述するように、メモリアクセス処理部２１２は、上限分岐レベル保持部２１２１に設定された上限分岐レベルと、ベクトルロード命令に付加された分岐レベルと、の比較結果に基づいて、ベクトルロード命令をプロセッサネットワーク部２２に発行するかどうか判断することになる。
【００１８】
また、上限分岐レベル保持部２１２１が保持する上限分岐レベルは、負荷監視部２２１（負荷監視手段）により変更可能なよう構成されている。後述するように、負荷監視部２２１は、プロセッサネットワーク部２２の負荷を観測し当該プロセッサネットワーク部２２の負荷状況を示す負荷状況情報を取得する。そして、負荷監視部２２１は、取得した負荷状況情報に基づいて、上限分岐レベル保持部２１２１が保持する上限分岐レベルを制御する。例えば、負荷監視部２２１は、負荷状況情報が示す負荷が予め定められた閾値（例えば、閾値Ａ）よりも小さいと判断する場合、各コア２１の上限分岐レベル保持部２１２１が保持する上限分岐レベルを大きくする。また、負荷監視部２２１は、例えば、負荷状況情報が示す負荷が予め定められた閾値（例えば、閾値Ｂ）よりも大きいと判断する場合、各コア２１の上限分岐レベル保持部２１２１が保持する上限分岐レベルを小さくする。このように、負荷監視部２２１は、プロセッサネットワーク部２２の負荷に基づいて上限分岐レベル保持部２１２１が保持する上限分岐レベルを制御する。
【００１９】
なお、本実施形態において説明する情報処理装置１は、例えば、特開２０１２−８３９３７号公報に開示されている装置などに適用可能である。情報処理装置１は、特開２０１２−８３９３７号公報に開示されている装置以外に適用しても構わない。
【００２０】
図２は、図１で示した情報処理装置１の構成をより詳細に記載したものである。図２を参照すると、情報処理装置１は、例えば、ベクトルプロセッサ２と、主記憶装置３と、を有している。ベクトルプロセッサ２と主記憶装置３とは、例えば、信号線などにより相互に通信可能なよう接続されている。なお、ベクトルプロセッサ２と主記憶装置３との間の接続は、多重化することが出来る。ベクトルプロセッサ２と主記憶装置３との間の接続を多重化することで、例えば、ベクトルプロセッサ２が主記憶装置３からベクトルデータを並列で読み出すなど、複数の処理を並列で処理することが可能となる。
【００２１】
ベクトルプロセッサ２は、例えば、複数のコア２１（プロセッサコア、メモリアクセス装置）と、プロセッサネットワーク部２２と、を有している。
【００２２】
コア２１は、例えば、命令制御部２１１（データ取得手段の一部）と、メモリアクセス処理部２１２（データ取得手段の一部）と、ベクトル制御部２１３と、ベクトル処理部２１４と、を有している。
【００２３】
命令制御部２１１は、プロセッサネットワーク部２２と例えば信号線により相互に通信可能に接続されている。また、命令制御部２１１は、メモリアクセス処理部２１２と例えば信号線により相互に通信可能に接続されている。さらに、命令制御部２１１は、ベクトル制御部２１３と例えば信号線により相互に通信可能に接続されている。
【００２４】
命令制御部２１１は、プロセッサネットワーク部２２を通じて主記憶装置３から命令を読み出す。そして、命令制御部２１１は、読み出した命令を解読し、解読した命令に応じた処理を実行する。例えば、命令制御部２１１は、解読した命令がスカラ命令であった場合、当該スカラ命令を実行する。また、命令制御部２１１は、解読した命令がベクトル命令であった場合、当該ベクトル命令をベクトル制御部２１３に送信する。また、命令制御部２１１は、解読した命令がメモリアクセス命令であった場合、当該メモリアクセス命令をメモリアクセス処理部２１２に送信する。
【００２５】
また、命令制御部２１１は、図示しない記憶装置に分岐レベルを保持している。命令制御部２１１は、解読したメモリアクセス命令がベクトルロード命令であった場合、当該ベクトルロード命令に分岐レベルを示す情報を付加して、メモリアクセス処理部２１２に通知する。なお、ベクトルロード命令には、例えば、読み出す対象のベクトルデータの主記憶装置３上の位置（例えば、アドレスを特定する情報。開始アドレスと間隔など）を示す情報や、読み出すベクトルデータの要素数を示す情報、ベクトルデータを読み出すベクトルレジスタ２１４３の番号を示す情報などが含まれている。また、分岐レベルとは、主記憶装置３から読み出した命令が当該命令を含むプログラム上の何個目の分岐命令の後の命令であるかを示している。分岐レベルの初期値は、例えば０である。例えば、分岐レベルが「０」の場合、当該命令より前に未完了の分岐命令がないことを示している。また、分岐レベルが「１」の場合、当該命令より前に未完了の分岐命令が１つあることを示している。換言すると、分岐レベルは、ベクトルロード命令を含む一連のプログラムのうち、当該ベクトルロード命令の前に存在する未完了の分岐命令の数（つまり、処理がまだ完了していない分岐命令の数）を示している、ということも出来る。
【００２６】
ここで、命令制御部２１１の詳細な動作の一例について説明する。例えば、命令制御部２１１が主記憶装置３から読み出した命令がスカラ命令であったとする。すると、命令制御部２１１は、読み出したスカラ命令が条件分岐命令であるか否かを判定する。そして、読み出したスカラ命令が条件分岐命令であった場合、命令制御部２１１は、図示しない記憶装置に保持する分岐レベルを１加算する。その後、命令制御部２１１は、条件分岐命令による分岐先を予測する。
【００２７】
上記処理の後、命令制御部２１１は、条件分岐命令を実行する。その後、命令制御部２１１は、実行結果が予測結果と一致するか否かを確認する。そして、一致する場合、命令制御部２１１は、分岐レベルを１減算するとともに、メモリアクセス処理部２１２に確認結果（投機成功の情報）を送信する。一方、一致しなかった場合、命令制御部２１１は、分岐レベルが１以上の命令を廃棄するとともに、メモリアクセス処理部２１２に確認結果（投機失敗の情報）を送信する。
【００２８】
また、命令制御部２１１は、上記条件分岐命令の実行（つまり、スカラ命令の実行）と並行して、分岐予測に基づく分岐先から命令を読み出して解読する。そして、解読した命令がベクトルロード命令であった場合、命令制御部２１１は、当該ベクトルロード命令に分岐レベルを含めてメモリアクセス処理部２１２に送信する。一方、解読した命令がベクトルロード命令でなかった場合、命令制御部２１１は、命令に応じた処理を行う。
【００２９】
このように、命令制御部２１１は、条件分岐命令があるごとに分岐レベルを１加算する。また、命令制御部２１１は、条件分岐命令の予測結果と当該条件分岐命令の実行結果とが一致するごとに、分岐レベルを１減算する。つまり、命令制御部２１１は、条件分岐命令が終了するごとに分岐レベルを１減算する。例えば、以上のような処理により、命令制御部２１１は、まだ処理が完了していない分岐命令の数を示す分岐レベルを管理する。また、命令制御部２１１は、ベクトルロード命令をメモリアクセス処理部２１２に送信する際、当該ベクトルロード命令に分岐レベルを示す情報を付加する。そして、命令制御部２１１は、分岐レベルを示す情報を付加したベクトルロード命令をメモリアクセス処理部２１２に送信する。
【００３０】
メモリアクセス処理部２１２は、命令制御部２１１と例えば信号線により相互に通信可能に接続されている。また、メモリアクセス処理部２１２は、プロセッサネットワーク部２２と例えば信号線により相互に通信可能に接続されている。また、メモリアクセス処理部２１２は、ベクトル制御部２１３と例えば信号線により相互に通信可能に接続されている。さらに、メモリアクセス処理部２１２は、ベクトル処理部２１４と例えば信号線により相互に通信可能に接続されている。
【００３１】
メモリアクセス処理部２１２は、命令制御部２１１から受信するメモリアクセス命令に応じて、ベクトル処理部２１４と主記憶装置３との間のアクセスを制御する。また、メモリアクセス処理部２１２は、命令制御部２１１から受信した、実行結果が予測結果と一致した旨を示す確認結果に応じて、後述する保留中のベクトルロード命令に付加された分岐レベルを１減算する。
【００３２】
図２を参照すると、メモリアクセス処理部２１２は、ベクトル処理部２１４が有するロードバッファ２１４２の管理を行うロードバッファ管理部２１２２と、上限分岐レベルが格納された上限分岐レベル保持部２１２１と、を有している。メモリアクセス処理部２１２は、ロードバッファ管理部２１２２と上限分岐レベル保持部２１２１とを活用して、ベクトル処理部２１４と主記憶装置３との間のアクセスを制御する。
【００３３】
例えば、命令制御部２１１からベクトルロード命令を受信した場合、メモリアクセス処理部２１２は、受信したベクトルロード命令に付加された情報が示す分岐レベルが上限分岐レベル保持部２１２１に保存されている上限分岐レベル以下であるか否か確認する。
【００３４】
分岐レベルが上限分岐レベルを超えていた場合、メモリアクセス処理部２１２は、ベクトルロード命令の分岐レベルが上限分岐レベル以下になるまで以降の処理を保留する。換言すると、メモリアクセス処理部２１２は、分岐レベルが上限分岐レベルを超えていた場合、ベクトルロード命令の分岐レベルが上限分岐レベル以下になるまで、ベクトルロード命令などを図示しない記憶装置などに格納して待機する。
【００３５】
なお、保留中にベクトルロード命令の分岐レベルが上限分岐レベル以下になる例としては、例えば、以下のようなケースがある。
ケース１．負荷監視部２２１からの指示により上限分岐レベル保持部２１２１の上限分岐レベルが変更される場合。つまり、負荷監視部２２１が上限分岐レベルを上げることで、分岐レベルが上限分岐レベル以下になった場合。
ケース２．命令制御部２１１からの投機成功の情報によりベクトルロード命令の分岐レベルが変更される場合。つまり、命令制御部２１１から実行結果が予測結果と一致した旨を示す確認結果を受信することで、メモリアクセス処理部２１２がベクトルロード命令に付加されている分岐レベルを１減算した結果、分岐レベルが上限分岐レベル以下になった場合。
【００３６】
上記ケース１もしくはケース２、又は、ケース１、２の両方により、ベクトルロード命令の分岐レベルが上限分岐レベル以下になった場合、又は、最初から分岐レベルが上限分岐レベル以下であった場合、メモリアクセス処理部２１２は、ロードバッファ管理部２１２２を検索する。
【００３７】
そして、検索の結果、使用可能なロードバッファ２１４２が発見された場合、メモリアクセス処理部２１２は、ロードバッファ管理部２１２２に対して、ベクトルロード命令用に空き状態のロードバッファ２１４２を一つ割り当てるよう指示する。これにより、ロードバッファ管理部２１２２は、ベクトルロード命令用に空き状態のロードバッファ２１４２を一つ割り当てる。その後、メモリアクセス処理部２１２は、プロセッサネットワーク部２２へベクトルロード命令であることを通知するとともに、主記憶装置３上のベクトルデータを特定する情報、要素数、ロードバッファ番号（ロードバッファ管理部２１２２により確保したロードバッファ２１４２を一意に識別するための番号）を通知する。また、メモリアクセス処理部２１２は、ベクトル制御部２１３にベクトルロード命令に関する情報を送信するとともに、ロードバッファ番号を通知する。
【００３８】
一方、使用可能なロードバッファ２１４２がない場合、メモリアクセス処理部２１２は、使用可能なロードバッファ２１４２が確保されるまで、プロセッサネットワーク部２２へのベクトルロード命令およびそれに付随する情報の通知を保留する。また、メモリアクセス処理部２１２は、ベクトル制御部２１３へのロードバッファ番号の通知を保留する。換言すると、メモリアクセス処理部２１２は、使用可能なロードバッファ２１４２がない場合、ベクトルロード命令などを図示しない記憶装置に格納して待機する。そして、メモリアクセス処理部２１２は、例えば、定期的にロードバッファ管理部２１２２を検索してロードバッファ２１４２に空きが生じるのを待つ。ロードバッファ２１４２に空きが生じた後は、メモリアクセス処理部２１２は、上述した処理を行うことになる。
【００３９】
メモリアクセス処理部２１２は、例えば、上記のように、ベクトルロード命令に付加された分岐レベルを示す情報と、上限分岐レベル保持部２１２１に保存された上限分岐レベルと、ロードバッファ２１４２の空き具合と、に応じて、ベクトルロード命令をプロセッサネットワーク部２２に送信する。なお、分岐レベルが上限分岐レベルを超えている場合に、命令制御部２１１から実行結果が予測結果と一致しなかった旨を示す投機失敗の情報を受信した場合、メモリアクセス処理部２１２は、待機中のベクトルロード命令をプロセッサネットワーク部２２に送信せず廃棄することになる。また、メモリアクセス処理部２１２は、ロードバッファ２１４２の空きを待っている最中に投機失敗の情報を受信した場合に、不要となるベクトルロード命令を廃棄するよう構成することが出来る。
【００４０】
上限分岐レベル保持部２１２１は、上述したように、上限分岐レベルを保持している。上限分岐レベルは、例えば、０以上の任意の値であり、動的に変更可能な値である。上限分岐レベルは、例えば、負荷監視部２２１により制御されることになる。
【００４１】
ロードバッファ管理部２１２２は、ベクトル処理部２１４が有するロードバッファ２１４２の空き具合（使用状態）を管理する。例えば、ロードバッファ管理部２１２２は、ロードバッファ２１４２ごとに当該ロードバッファ２１４２が「空き」状態にあるか「使用中」状態にあるかを示す図示しない表を有している。そして、ロードバッファ管理部２１２２は、例えば、ロードバッファ２１４２を確保する際やベクトル処理部２１４からロードバッファ解放通知を受信した際に上記表を更新することで、ロードバッファ２１４２の空き具合を管理する。
【００４２】
ベクトル制御部２１３は、命令制御部２１１と例えば信号線により相互に通信可能に接続されている。また、ベクトル制御部２１３は、メモリアクセス処理部２１２と例えば信号線により相互に通信可能に接続されている。また、ベクトル制御部２１３は、ベクトル処理部２１４と例えば信号線により相互に通信可能に接続されている。
【００４３】
ベクトル制御部２１３は、命令制御部２１１から受信したベクトル命令に応じてベクトル処理部２１４で行うベクトル命令を制御する。また、命令制御部２１１がベクトルロード命令を読み出していた場合、ベクトル制御部２１３は、メモリアクセス処理部２１２からベクトルロード命令に関する情報やロードバッファ番号を受け取ることになる。すると、ベクトル制御部２１３は、ベクトルロード命令であることや、ロードバッファ番号、要素数、転送先ベクトルレジスタ番号などをベクトル処理部２１４へ通知する。
【００４４】
ベクトル処理部２１４は、ベクトル制御部２１３と例えば信号線により相互に通信可能に接続されている。また、ベクトル処理部２１４は、メモリアクセス処理部２１２と例えば信号線により相互に通信可能に接続されている。また、ベクトル処理部２１４は、プロセッサネットワーク部２２と例えば信号線により相互に通信可能に接続されている。
【００４５】
ベクトル処理部２１４は、ベクトルロード管理部２１４１とロードバッファ２１４２とベクトルレジスタ２１４３とを含んでいる。また、ベクトル処理部２１４は、ベクトル演算を行うためのベクトル演算器などを有している。なお、ベクトル演算器などは、例えば、特開２０１２−８３９３７号公報に開示されている構成を採用して構わない。このように、ベクトル演算器などの構成は既知であるため、その説明を省略する。
【００４６】
ベクトルロード管理部２１４１は、ベクトル制御部２１３から受信したロードバッファ番号、要素数、転送先ベクトルレジスタ番号を含むベクトルロード命令、及び、プロセッサネットワーク部２２から受信したロードバッファ番号、要素番号を含むロードデータに応じて、ロードバッファ２１４２内にロードデータが整列したかどうかを管理する。
【００４７】
例えば、ベクトルロード管理部２１４１は、プロセッサネットワーク部２２からロードデータを受信すると、当該受信したロードデータをロードバッファ２１４２に送信する。また、ベクトルロード管理部２１４１は、ロードバッファ２１４２におけるロードデータの格納状況を管理する。例えば、ベクトルロード管理部２１４１は、分岐レベルが「０」のベクトルロード命令に応じたロードデータが整列した場合（つまり、取得対象の情報をすべて取得してベクトルレジスタ２１４３への転送が可能になった場合）、ロードバッファ２１４２からロードデータを読み出しベクトルレジスタ２１４３へ転送する。また、ベクトルロード管理部２１４１は、ロードバッファ２１４２からベクトルレジスタ２１４３へ転送を行うためにロードデータを読み出した後、メモリアクセス処理部２１２にロードバッファ解放通知を送る。これにより、ロードバッファ管理部２１２２は、ロードバッファ解放通知が示すロードバッファ２１４２の使用状態を「使用中」から「空き」に変更することになる。
【００４８】
ロードバッファ２１４２は、ロードデータを格納する。ロードバッファ２１４２は、複数個（任意の数で構わない）ある。複数個のロードバッファ２１４２のそれぞれには、ベクトルロード命令ごとに使用するロードバッファ２１４２を指定するために、ロードバッファ番号が付与されている。ロードデータの格納位置は、ロードバッファ番号と要素番号により決定されることになる。
【００４９】
ベクトルレジスタ２１４３は、ベクトル演算を行う際のデータを格納しておくレジスタである。ベクトルレジスタ２１４３は、複数個（任意の数で構わない）ある。複数個のベクトルレジスタ２１４３のそれぞれには、ベクトル命令ごとに使用するベクトルレジスタ２１４３を指定するためにベクトルレジスタ番号が付与されている。ベクトルレジスタ２１４３には、上述したように、ベクトルロード管理部２１４１によりロードバッファ２１４２から読み出されたロードデータが転送されることになる。
【００５０】
プロセッサネットワーク部２２は、命令制御部２１１と例えば信号線により相互に通信可能に接続されている。また、プロセッサネットワーク部２２は、メモリアクセス処理部２１２と例えば信号線により相互に通信可能に接続されている。また、プロセッサネットワーク部２２は、ベクトル処理部２１４と例えば信号線により相互に通信可能に接続されている。さらに、プロセッサネットワーク部２２は、主記憶装置３と例えば信号線により相互に通信可能に接続されている。
【００５１】
プロセッサネットワーク部２２は、メモリアクセス処理部２１２から受信したメモリアクセス命令に応じて、主記憶装置３とベクトル処理部２１４のとの間のベクトルデータの転送を行う。
【００５２】
例えば、プロセッサネットワーク部２２は、メモリアクセス命令（ベクトルロード命令もメモリアクセス命令の一種である）を受信すると、当該メモリアクセス命令を要素ごとに分解する。そして、プロセッサネットワーク部２２は、要素ごとのメモリアクセス命令に所定の情報を付加して主記憶装置３に送信する。なお、メモリアクセス命令に付加する所定の情報とは、例えばベクトルロード命令の場合、所望のベクトルデータの格納位置、ロードバッファ番号、要素番号などである。その後、プロセッサネットワーク部２２は、主記憶装置３から送信した命令に応じたデータを受信する。すると、プロセッサネットワーク部２２は、受信したデータをベクトル処理部２１４などに送信する。
【００５３】
また、プロセッサネットワーク部２２は、負荷監視部２２１を有している。負荷監視部２２１は、プロセッサネットワーク部２２の負荷を観測して、プロセッサネットワーク部２２の負荷状況を示す負荷状況情報を取得する。換言すると、負荷監視部２２１は、コア２１と主記憶装置３との間のネットワークの負荷を監視して、コア２１と主記憶装置３との間のネットワークの負荷を示す負荷状況情報を取得する、ということも出来る。また、負荷監視部２２１は、取得した負荷状況情報に基づいて、上限分岐レベル保持部２１２１に保存されている上限分岐レベルを制御する。例えば、負荷監視部２２１は、負荷状況情報が示す負荷が予め定められた閾値（例えば、閾値Ａ）よりも小さいと判断する場合、各コア２１の上限分岐レベル保持部２１２１に設定された上限分岐レベルを例えば「１」大きくする。一方、負荷監視部２２１は、例えば、監視結果である負荷が予め定められた閾値（例えば、閾値Ｂ。閾値Ｂの値は、例えば、閾値Ａよりも大きい）よりも高いと判断する場合、各コア２１の上限分岐レベル保持部２１２１に設定された上限分岐レベルを例えば「１」小さくする。
【００５４】
このように、負荷監視部２２１は、取得した負荷状況情報に基づいて、上限分岐レベル保持部２１２１が保持する上限分岐レベルを制御する。なお、負荷監視部２２１は、それぞれ異なる値を有する複数の予め定められた閾値を有することが出来る。負荷監視部２２１が複数の閾値を持つことで、上限分岐レベルを段階的に制御することが可能となる。
【００５５】
なお、負荷監視部２２１により行われる負荷の観測方法（負荷状況情報の取得方法）は、本実施形態においては特に限定しない。例えば、負荷監視部２２１は、予め定められた所定期間（任意の長さで構わない）中にメモリアクセス処理部２１２から送信されたメモリアクセス命令数をカウントし、カウントした値を負荷とみなすよう構成することが出来る。また、負荷監視部２２１は、例えば、メモリアクセス処理部２１２から送信されたメモリアクセス命令の要素数をカウントするとともに、ベクトル処理部２１４へ送信した要素数をカウントする。そして、負荷監視部２２１は、メモリアクセス処理部２１２から送信されたメモリアクセス命令の要素数からベクトル処理部２１４へ送信した要素数を減算することで、プロセッサネットワーク部２２内に存在するリクエスト要素数をカウントする。例えば負荷監視部２２１は、このようなプロセッサネットワーク部２２内に存在するリクエスト要素数を負荷とみなすよう構成しても構わない。
【００５６】
以上のように、負荷監視部２２１は様々な方法を用いて負荷状況情報を取得する。負荷監視部２２１は、上記例示した方法以外の方法を用いて負荷状況情報を取得しても構わないし、上記例示した情報を組み合わせて負荷状況情報を取得しても構わない。このように、負荷監視部２２１は、様々な方法を用いて負荷を監視するよう構成することが出来る。
【００５７】
主記憶装置３は、メモリなどの記憶装置である。主記憶装置３は、プロセッサネットワーク部２２と例えば信号線により相互に通信可能に接続されている。主記憶装置３には、各種命令やベクトルデータなど様々な情報が格納されている。
【００５８】
以上が、情報処理装置１の構成の一例である。続いて、図３を参照して、メモリアクセス処理部２１２がベクトルロード命令を発行する際の動作の一例について説明する。
【００５９】
図３を参照すると、メモリアクセス処理部２１２は、命令制御部２１１からベクトルロード命令を受け付ける（ステップＳ１０１）。なお、命令制御部２１１は、主記憶装置３から読み出した命令がベクトルロード命令であった場合に、当該ベクトルロード命令をメモリアクセス処理部２１２に送信する。
【００６０】
メモリアクセス処理部２１２は、受信したベクトルロード命令に付加された情報が示す分岐レベルが、上限分岐レベル保持部２１２１が保持する上限分岐レベル以下であるか否か確認する（ステップＳ１０２）。
【００６１】
分岐レベルが上限分岐レベルを超えていた場合（ステップＳ１０２、Ｎｏ）、メモリアクセス処理部２１２は、ベクトルロード命令の分岐レベルが上限分岐レベル以下になるまで以降の処理を保留する。換言すると、メモリアクセス処理部２１２は、分岐レベルが上限分岐レベルを超えていた場合、ベクトルロード命令の分岐レベルが上限分岐レベル以下になるまで、ベクトルロード命令などを図示しない記憶装置などに格納して待機する。
【００６２】
なお、待機中にベクトルロード命令の分岐レベルが上限分岐レベル以下になる例としては、例えば、以下のようなケースがある。
ケース１．負荷監視部２２１からの指示により上限分岐レベル保持部２１２１の上限分岐レベルが変更される場合。つまり、負荷監視部２２１が上限分岐レベルを上げることで、分岐レベルが上限分岐レベル以下になった場合。
ケース２．命令制御部２１１からの投機成功の情報によりベクトルロード命令の分岐レベルが変更される場合。つまり、命令制御部２１１から実行結果が予測結果と一致した旨を示す確認結果を受信することで、メモリアクセス処理部２１２がベクトルロード命令に付加されている分岐レベルを１減算した結果、分岐レベルが上限分岐レベル以下になった場合。
【００６３】
上記ケース１もしくはケース２、又は、ケース１、２の両方により、ベクトルロード命令の分岐レベルが上限分岐レベル以下になった場合、又は、最初から分岐レベルが上限分岐レベル以下であった場合（ステップＳ１０２、Ｙｅｓ）、メモリアクセス処理部２１２は、ロードバッファ管理部２１２２を検索する。そして、メモリアクセス処理部２１２は、使用可能なロードバッファ２１４２が存在するか否か確認する（ステップＳ１０３）。
【００６４】
使用可能なロードバッファ２１４２が存在する場合（ステップＳ１０３、Ｙｅｓ）、メモリアクセス処理部２１２は、ロードバッファ管理部２１２２に対して、ベクトルロード命令用に空き状態のロードバッファ２１４２を一つ割り当てるよう指示する。これにより、ロードバッファ管理部２１２２は、ベクトルロード命令用に空き状態のロードバッファ２１４２を一つ割り当てる。その後、メモリアクセス処理部２１２は、プロセッサネットワーク部２２へベクトルロード命令であることを通知するとともに、主記憶装置３上のベクトルデータを特定する情報、要素数、ロードバッファ番号を通知する（ステップＳ１０４）。また、メモリアクセス処理部２１２は、ベクトル制御部２１３にベクトルロード命令に関する情報を送信するとともに、ロードバッファ番号を通知する。
【００６５】
一方、使用可能なロードバッファ２１４２がない場合（ステップＳ１０３、Ｎｏ）、メモリアクセス処理部２１２は、使用可能なロードバッファ２１４２が確保されるまで、プロセッサネットワーク部２２へのベクトルロード命令およびそれに付随する情報の通知を保留する。また、メモリアクセス処理部２１２は、ベクトル制御部２１３へのロードバッファ番号の通知を保留する。換言すると、メモリアクセス処理部２１２は、使用可能なロードバッファ２１４２がない場合、ベクトルロード命令などを図示しない記憶装置に格納して待機する。そして、メモリアクセス処理部２１２は、例えば、定期的にロードバッファ管理部２１２２を検索してロードバッファ２１４２に空きが生じるのを待つことになる。
【００６６】
メモリアクセス処理部２１２は、例えば、上記のように、ベクトルロード命令に付加された分岐レベルを示す情報と、上限分岐レベル保持部２１２１が保持する上限分岐レベルと、ロードバッファ２１４２の空き具合と、に応じて、ベクトルロード命令をプロセッサネットワーク部２２に送信する。なお、分岐レベルが上限分岐レベルを超えている場合、つまり、ステップＳ１０２の処理により待機中に命令制御部２１１から実行結果が予測結果と一致しなかった旨を示す投機失敗の情報を受信した場合、メモリアクセス処理部２１２は、待機中のベクトルロード命令をプロセッサネットワーク部２２に送信せず廃棄することになる。また、メモリアクセス処理部２１２は、ステップＳ１０３の待機中に投機失敗の情報を受信した場合も、対象となる待機中のベクトルロード命令をプロセッサネットワーク部２２に送信せず廃棄するよう構成して構わない。
【００６７】
以上が、メモリアクセス処理部２１２の動作の一例である。続いて、図４を参照して、負荷監視部２２１の動作の一例について説明する。
【００６８】
図４を参照すると、負荷監視部２２１は、例えば定期的に負荷状況情報を取得する（ステップＳ２０１）。
【００６９】
負荷監視部２２１は、取得した負荷状況情報が示す負荷が予め定められた閾値Ａよりも小さいか否か確認する。また、負荷監視部２２１は、取得した負荷状況情報が示す負荷が予め定められた閾値Ｂよりも大きいか否か確認する（ステップＳ２０２）。
【００７０】
負荷状況情報が示す負荷が予め定められた閾値Ａよりも小さい場合（ステップＳ２０２、閾値Ａよりも小さい）、負荷監視部２２１は、上限分岐レベル保持部２１２１が保持する上限分岐レベルを１加算する（ステップＳ２０４）。また、負荷状況情報が示す負荷が予め定められた負荷Ｂよりも大きい場合（ステップＳ２０２、閾値Ｂよりも大きい）、負荷監視部２２１は、上限分岐レベル保持部２１２１が保持する上限分岐レベルを１減算する（ステップＳ２０３）。一方、負荷状況情報が示す負荷が閾値Ａ以上閾値Ｂ以下である場合、負荷監視部２２１は、上限分岐レベル保持部２１２１が保持する上限分岐レベルを変更しないことになる。
【００７１】
以上が、負荷監視部２２１の動作の一例である。
【００７２】
このように、本実施形態におけるメモリアクセス処理部２１２は、上限分岐レベル保持部２１２１を有している。このような構成により、メモリアクセス処理部２１２は、上限分岐レベル保持部２１２１に設定された上限分岐レベルと、ベクトルロード命令に付加された分岐レベルと、の比較結果に基づいて、ベクトルロード命令をプロセッサネットワーク部２２に発行するかどうか判断することが出来る。その結果、メモリアクセス処理部２１２は、分岐レベルが上限分岐レベルを超えているベクトルロード命令の発行を抑制することが可能となる。これにより、分岐失敗時に無効となるリクエスト数を削減することが可能となる。
【００７３】
また、本実施形態におけるプロセッサネットワーク部２２は、負荷監視部２２１を有している。このような構成により、負荷監視部２２１は、取得した負荷状況情報に基づいて、上限分岐レベル保持部２１２１が保持する上限分岐レベルを制御することが出来る。その結果、例えば、メモリネットワーク負荷が低い時に投機実行をより多く行いコア性能を向上させることが可能となる。また、メモリネットワーク負荷が高い場合には、投機実行を少なくすることで無効になる可能性のあるリクエストを減らし、削減したリクエストによりメモリネットワーク内でのリクエスト競合を緩和しネットワーク全体の性能を向上させることが可能となる。つまり、ベクトルロード命令の投機的な実行を効率的に行うことが可能となる。
【００７４】
なお、本実施形態では、プロセッサネットワーク部２２の負荷状況に基づいて、全てのコア２１の上限分岐レベルを負荷監視部２２１が一律に制御する場合について説明した。しかしながら、上限分岐レベルは、必ずしも一律に制御される必要はない。つまり、ベクトルプロセッサ２が有するコア２１のうち、所定のコア２１の上限分岐レベルのみが変更されるよう構成しても構わない。
【００７５】
上記のような処理は、例えば、「負荷監視部２２１から選択的にコア２１への指示を行う」、「負荷監視部２２１は一律な指示を行うが、上限分岐レベル保持部２１２１が選択的に変更する」などの処理を行うよう構成することで実施することができる。
【００７６】
例えば、図５で示すように、負荷監視部２２１に上限分岐レベルを変更するコア２１の情報（例えば、コア２１の優先度を示す情報など）を保持するコア選択情報保持部２２１１を設けることが考えられる。負荷監視部２２１がコア選択情報保持部２２１１を有することで、負荷監視部２２１は、例えば予め定められた優先度等に基づいて選択したコア２１の上限分岐レベルを下げるよう制御することが可能となる。
【００７７】
また、例えば、図６で示すように、上限分岐レベル保持部２１２１に当該上限分岐レベル保持部２１２１を有するコア２１で上限分岐レベルの変更を行うかどうかを示すレベル変更実施情報を有するレベル変更実施情報保持部２１２１１を設けることも考えられる。上限分岐レベル保持部２１２１がレベル変更実施情報保持部２１２１１を有する場合、上限分岐レベル保持部２１２１が保持する上限分岐レベルは、例えば、負荷監視部２２１から上限分岐レベルを変更する旨の指示を受け、かつ、レベル変更実施情報保持部２１２１１が有するレベル変更実施情報が上限分岐レベルの変更を許容している場合に変更されることになる。
【００７８】
例えば、このように、ベクトルプロセッサ２が有するコア２１のうち、所定のコア２１の上限分岐レベルのみが変更されるよう構成しても構わない。なお、上記構成は、上記例示した方法以外により実現されても構わない。
【００７９】
また、本実施形態においては、プロセッサネットワーク部２２が一つの負荷監視部２２１を有する場合について説明した。しかしながら、プロセッサネットワーク部２２が有する負荷監視部２２１の数は、一つに限定されない。プロセッサネットワーク部２２は、２つ以上の任意の数の負荷監視部２２１を有するよう構成することが出来る。プロセッサネットワーク部２２は、例えば、図７で示すように、コア２１の数に応じた数の負荷監視部２２１を有しても構わない。コア２１の数に応じた数の負荷監視部２２１を有する場合、それぞれの負荷監視部２２１は、対応するメモリアクセス処理部２１２から生じる負荷を監視して、それぞれ負荷状況情報を取得する。そして、負荷監視部２２１は、取得した負荷状況情報に基づいて、当該負荷監視部２２１と対応するコア２１の上限分岐レベルを制御することになる。つまり、例えば、負荷監視部２２１−１は、上限分岐レベル保持部２１２１−１が保持する上限分岐レベルを制御することになる。
【００８０】
なお、情報処理装置１は、図５乃至７で例示した構成の幾つかを組み合わせた構成を有していても構わない。
【００８１】
また、本実施形態においては、メモリアクセス処理部２１２が上限分岐レベルと分岐レベルとの比較を行うとした。しかしながら、例えば、命令制御部２１１が、上限分岐レベルと分岐レベルとの比較を行い、上限分岐レベルを超える分岐レベルのベクトルロード命令の発行を抑制するよう構成しても構わない。
【００８２】
また、本実施形態において説明した各処理部は、例えば、ベクトルプロセッサ２が有する図示しない演算装置が、図示しない記憶装置に格納されたプログラムを実行することで実現することが出来る。各処理部は、例えば、図示しない論理回路などの組み合わせにより実現されても構わない。
【００８３】
［第２の実施形態］
次に、図８、図９を参照して、本発明の第２の実施形態について説明する。まず、図８を参照して、メモリアクセス装置４の構成の概要について説明する。
【００８４】
図８を参照すると、メモリアクセス装置４は、データ取得手段４１を有している。例えば、メモリアクセス装置４は、図示しない演算装置を有しており、図示しない記憶装置に格納されたプログラムを上記演算装置が実行することで、データ取得手段４１を実現する。
【００８５】
データ取得手段４１は、主記憶装置から読み出したベクトルロード命令より前に存在する未完了の分岐命令の数を示す分岐レベルに応じて、主記憶装置からベクトルデータを取得する命令を発行するか否か判断する。そして、データ取得手段４１は、判断結果に応じて、ベクトルロード命令に基づいて、主記憶装置からベクトルデータを取得する。
【００８６】
このように、メモリアクセス装置４は、データ取得手段４１を有している。このような構成により、データ取得手段４１は、分岐レベルに応じて、主記憶装置からベクトルデータを取得する命令を発行するか否か判断することが出来る。これにより、例えば、投機失敗により無効になる可能性のある命令の発行を行うか否かを分岐レベルに応じて制御することが可能となる。その結果、例えば、より無効になる可能性の高い（分岐レベルの大きな）命令の発行を抑制することが可能となり、ベクトルロード命令の投機的な実行を効率的に行うことが可能となる。
【００８７】
また、上述したメモリアクセス装置４は、当該メモリアクセス装置４に所定のプログラムが組み込まれることで実現できる。具体的に、本発明の他の形態であるプログラムは、メモリアクセス装置に、主記憶装置から読み出したベクトルロード命令に基づいて、主記憶装置からベクトルデータを取得するデータ取得手段４１を実現させ、データ取得手段４１は、ベクトルロード命令より前に存在する未完了の分岐命令の数を示す分岐レベルに応じて、主記憶装置からベクトルデータを取得する命令を発行するか否か判断する、プログラムである。
【００８８】
また、上述したメモリアクセス装置４により実行される命令制御方法は、メモリアクセス装置が、主記憶装置から読み出したベクトルロード命令より前に存在する未完了の分岐命令の数を示す分岐レベルに応じて、主記憶装置からベクトルデータを取得する命令を発行するか否か判断し、判断の結果に応じて主記憶装置から前記ベクトルデータを取得する、という方法である。
【００８９】
上述した構成を有する、プログラム、又は、命令制御方法、の発明であっても、上記メモリアクセス装置４と同様の作用を有するために、上述した本発明の目的を達成することが出来る。
【００９０】
また、本発明の目的は、図９で示すような情報処理装置５であっても達成することが出来る。図５を参照すると、情報処理装置５は、主記憶装置５１と、プロセッサ５２と、を有している。
【００９１】
主記憶装置５１は、メモリなどの記憶装置である。
【００９２】
プロセッサ５２は、複数のプロセッサコア５２１と、プロセッサコア５２１から発行される命令に応じて主記憶装置５１とプロセッサコア５２１との間でデータの送受信を行うプロセッサネットワーク部５２２と、を有している。
【００９３】
プロセッサコア５２１は、データ取得手段５２１１を有している。例えば、プロセッサコア５２１は、図示しない演算装置を有しており、図示しない記憶装置に格納されたプログラムを上記演算装置が実行することで、データ取得手段５２１１を実現する。
【００９４】
データ取得手段５２１１は、主記憶装置５１から読み出したベクトルロード命令に基づいて、主記憶装置５１からベクトルデータを取得する。また、データ取得手段５２１１は、ベクトルロード命令より前に存在する未完了の分岐命令の数を示す分岐レベルに応じて、主記憶装置５１からベクトルデータを取得する命令をプロセッサネットワーク部５２２に対して発行するか否か判断する。
【００９５】
このような構成を有する情報処理装置５であっても、メモリアクセス装置４と同様に、本発明の目的を達成することが出来る。
【００９６】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明におけるメモリアクセス装置などの概略を説明する。但し、本発明は、以下の構成に限定されない。
【００９７】
（付記１）
主記憶装置から読み出したベクトルロード命令に基づいて、前記主記憶装置からベクトルデータを取得するデータ取得手段を有し、
前記データ取得手段は、前記ベクトルロード命令より前に存在する未完了の分岐命令の数を示す分岐レベルに応じて、前記主記憶装置から前記ベクトルデータを取得する命令を発行するか否か判断する
メモリアクセス装置。
（付記２）
付記１に記載のメモリアクセス装置であって、
前記データ取得手段は、前記分岐レベルが予め定められた分岐レベル閾値以下である場合に、前記主記憶装置から前記ベクトルデータを取得する命令を発行する
メモリアクセス装置。
（付記３）
付記１又は２に記載のメモリアクセス装置であって、
前記データ取得手段は、前記分岐レベルが予め定められた分岐レベル閾値を超えていた場合、当該分岐レベルが前記分岐レベル閾値以下となるまで前記主記憶装置から前記ベクトルデータを取得する命令の発行を保留し、前記前記分岐レベルが前記分岐レベル閾値以下となった場合に、前記主記憶装置から前記ベクトルデータを取得する命令を発行する
メモリアクセス装置。
（付記３−１）
付記３に記載のメモリアクセス装置であって、
前記データ取得手段は、前記命令の発行を保留している最中に、所定の投機失敗の情報を受信した場合、前記命令を発行せず廃棄する
メモリアクセス装置。
（付記３−２）
付記２又は付記３に記載のメモリアクセス装置であって、
前記データ取得手段は、前記ベクトルデータを格納するロードバッファの空き具合に応じて、前記主記憶装置から前記ベクトルデータを取得する命令を発行する
メモリアクセス装置。
（付記４）
付記２又は３に記載のメモリアクセス装置であって、
前記分岐レベル閾値は、前記主記憶装置と前記メモリアクセス装置との間のネットワークの負荷に応じて制御される値である
メモリアクセス装置。
（付記５）
付記４に記載のメモリアクセス装置であって、
前記分岐レベル閾値は、前記主記憶装置と前記メモリアクセス装置との間のネットワークの負荷が予め定められた閾値よりも大きな値となる場合、当該分岐レベル閾値が示す値を下げるよう制御される値である
メモリアクセス装置。
（付記５−１）
付記４又は付記５に記載のメモリアクセス装置であって、
前記分岐レベル閾値は、前記主記憶装置と前記メモリアクセス装置との間のネットワークの負荷が予め定められた閾値よりも小さな値となる場合、当該分岐レベル閾値が示す値を上げるよう制御される値である
メモリアクセス装置。
（付記５−２）
付記１乃至５のいずれかに記載のメモリアクセス装置であって、
前記データ取得手段は、ベクトルロード命令を発行する命令制御手段と、前記命令制御部により発行されたベクトルロード命令に基づいて、前記主記憶装置から前記ベクトルデータを読み出すための取得命令を発行する記憶装置アクセス制御手段と、を有し、
前記命令制御手段が発行する前記ベクトルロード命令には、当該ベクトルロード命令を含む一連のプログラムのうち、当該ベクトルロード命令より前に存在する未完了の分岐命令の数に応じた分岐レベルを示す情報が含まれており、
前記記憶装置アクセス制御手段は、前記ベクトルロード命令に含まれる前記分岐レベルに応じて、前記取得命令を発行するか否か判断する
メモリアクセス装置。
（付記６）
メモリアクセス装置が、
主記憶装置から読み出したベクトルロード命令より前に存在する未完了の分岐命令の数を示す分岐レベルに応じて、前記主記憶装置からベクトルデータを取得する命令を発行するか否か判断し、
前記判断の結果に応じて前記主記憶装置から前記ベクトルデータを取得する
命令制御方法。
（付記７）
メモリアクセス装置に、
主記憶装置から読み出したベクトルロード命令に基づいて、前記主記憶装置からベクトルデータを取得するデータ取得手段を実現させ、
前記データ取得手段は、前記ベクトルロード命令より前に存在する未完了の分岐命令の数を示す分岐レベルに応じて、前記主記憶装置から前記ベクトルデータを取得する命令を発行するか否か判断する
プログラム。
（付記８）
主記憶装置と、
複数のプロセッサコアと、前記プロセッサコアから発行される命令に応じて前記主記憶装置と前記プロセッサコアとの間でデータの送受信を行うプロセッサネットワーク部と、を有するプロセッサと、
を有し、
前記プロセッサコアは、前記主記憶装置から読み出したベクトルロード命令に基づいて、前記主記憶装置からベクトルデータを取得するデータ取得手段を有し、
前記データ取得手段は、前記ベクトルロード命令より前に存在する未完了の分岐命令の数を示す分岐レベルに応じて、前記主記憶装置から前記ベクトルデータを取得する命令を前記プロセッサネットワーク部に対して発行するか否か判断する
情報処理装置。
（付記９）
付記８に記載の情報処理装置であって、
前記データ取得手段は、前記分岐レベルと予め定められた分岐レベル閾値とに基づいて、前記主記憶装置から前記ベクトルデータを取得する命令を発行するか否か判断するよう構成され、
前記プロセッサネットワーク部は、当該プロセッサネットワーク部の負荷を観測する負荷監視手段を有し、
前記負荷監視手段は、前記プロセッサネットワーク部の負荷に応じて、前記分岐レベル閾値の値を制御する
情報処理装置。
（付記１０）
付記９に記載の情報処理装置であって、
前記負荷監視手段は、予め定められた情報に基づいて特定される前記プロセッサコアの前記分岐レベル閾値の値を制御する
情報処理装置。
（付記１１）
付記９に記載の情報処理装置であって、
前記データ取得部は、前記負荷監視手段からの制御に応じて前記分岐レベル閾値の値を変更するか否か判断する
情報処理装置。
（付記１２）
付記９乃至付記１１に記載の情報処理装置であって、
前記プロセッサネットワーク部は、前記プロセッサコアの数に応じた数の前記負荷監視手段を有する
情報処理装置。
【００９８】
なお、上記各実施形態及び付記において記載したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されていたりする。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【００９９】
以上、上記各実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることが出来る。
【符号の説明】
【０１００】
１  情報処理装置
２  ベクトルプロセッサ
２１  コア
２１１  命令制御部
２１２  メモリアクセス処理部
２１２１  上限分岐レベル保持部
２１２１１  レベル変更実施情報保持部
２１２２  ロードバッファ管理部
２１３  ベクトル制御部
２１４  ベクトル処理部
２１４１  ベクトルロード管理部
２１４２  ロードバッファ
２１４３  ベクトルレジスタ
２２  プロセッサネットワーク部
２２１  負荷監視部
２２１１  コア選択情報保持部
３  主記憶装置
４  メモリアクセス装置
４１  データ取得手段
５  情報処理装置
５１  主記憶装置
５２  プロセッサ
５２１  プロセッサコア
５２１１  データ取得手段
５２２  プロセッサネットワーク部
【図１】
2018156497.tif 000003
【図２】
2018156497.tif 000004
【図３】
2018156497.tif 000005
【図４】
2018156497.tif 000006
【図５】
2018156497.tif 000007
【図６】
2018156497.tif 000008
【図７】
2018156497.tif 000009
【図８】
2018156497.tif 000010
【図９】
2018156497.tif 000011