JP6849949B2 - メモリアクセス装置、命令制御方法、プログラム、情報処理装置 - Google Patents

メモリアクセス装置、命令制御方法、プログラム、情報処理装置 Download PDF

Info

Publication number
JP6849949B2
JP6849949B2 JP2017053917A JP2017053917A JP6849949B2 JP 6849949 B2 JP6849949 B2 JP 6849949B2 JP 2017053917 A JP2017053917 A JP 2017053917A JP 2017053917 A JP2017053917 A JP 2017053917A JP 6849949 B2 JP6849949 B2 JP 6849949B2
Authority
JP
Japan
Prior art keywords
instruction
vector
load
branch level
memory access
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017053917A
Other languages
English (en)
Other versions
JP2018156497A (ja
Inventor
泰洋 西垣
泰洋 西垣
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2017053917A priority Critical patent/JP6849949B2/ja
Publication of JP2018156497A publication Critical patent/JP2018156497A/ja
Application granted granted Critical
Publication of JP6849949B2 publication Critical patent/JP6849949B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明は、メモリアクセス装置、命令制御方法、プログラム、情報処理装置に関し、特に、ベクトルロード命令を投機的に実行するメモリアクセス装置、命令制御方法、プログラム、情報処理装置に関する。
ベクトル演算装置において、メモリアクセスのレイテンシを隠蔽し処理性能を向上させるため、分岐命令後のベクトルロード命令を投機的に実行することがある。
このような分岐命令後のベクトルロード命令を投機的に実行するための技術の一つとして、例えば、特許文献1がある。特許文献1には、命令発行部と、データ取得部と、ベクトルレジスタと、判定部と、ベクトルロード管理部と、を備えるプロセッサが記載されている。特許文献1によると、命令発行部は、ベクトルロード命令を発行する。また、データ取得部は、ベクトルロード命令に基づくベクトルデータを主記憶装置から取得するための取得要求の発行を行う。そして、ベクトルロード管理部は、判定部により分岐予測が成功したと判定された場合、取得要求に基づく全てのベクトルデータを取得し終えた後に、ベクトルレジスタに対して当該全てのベクトルデータを転送する。一方、ベクトルロード管理部は、判定部により分岐予測が失敗したと判定された場合、データ取得部により発行された取得要求により取得されたベクトルデータを廃棄する。特許文献1によると、プロセッサをこのように構成することで、ベクトルロード命令を投機的に実行することが可能となる。
特開2012−83937号公報
特許文献1に記載されている技術の場合、分岐予測に失敗した際に、取得したデータを破棄することになる。換言すると、特許文献1に記載の技術の場合、一度ベクトルロード命令が発行されると、分岐予測が失敗して廃棄されるリクエストであるにもかかわらずベクトルデータの取得が行われることになる。
ここで、プロセッサは複数のプロセッサコア(メモリアクセス装置)を有している。そのため、上記のような処理は複数のプロセッサコアのそれぞれで行われることになる。その結果、複数のプロセッサコアからのベクトルデータ取得のリクエストが競合し、メモリネットワークの性能低下の原因となるおそれがあった。特に、投機的にベクトルロード命令が行われた結果、不要であるはずのデータを取得することにより、メモリネットワークの負荷が大きくなり、メモリネットワークの性能が低下するおそれがある、という事態が問題となっていた。
一方で、投機的なベクトルロード命令の発行は、メモリアクセスレイテンシを隠蔽し迅速な処理を行うためには必要となる。そのため、投機的なベクトルロード命令の発行を全て止めてしまうことも処理効率の観点から好ましくない。
このように、ベクトルロード命令の投機的な実行を効率的に行うことが難しい、という問題が生じていた。
そこで、本発明の目的は、ベクトルロード命令の投機的な実行を効率的に行うことが難しい、という問題を解決するメモリアクセス装置、命令制御方法、プログラム、情報処理装置を提供することにある。
かかる目的を達成するため本発明の一形態であるメモリアクセス装置は、
主記憶装置から読み出したベクトルロード命令に基づいて、前記主記憶装置からベクトルデータを取得するデータ取得手段を有し、
前記データ取得手段は、前記ベクトルロード命令より前に存在する未完了の分岐命令の数を示す分岐レベルに応じて、前記主記憶装置から前記ベクトルデータを取得する命令を発行するか否か判断する
という構成を採る。
また、本発明の他の形態である命令制御方法は、
メモリアクセス装置が、
主記憶装置から読み出したベクトルロード命令より前に存在する未完了の分岐命令の数を示す分岐レベルに応じて、主記憶装置からベクトルデータを取得する命令を発行するか否か判断し、
前記判断の結果に応じて前記主記憶装置から前記ベクトルデータを取得する
という構成を採る。
また、本発明の他の形態であるプログラムは、
メモリアクセス装置に、
主記憶装置から読み出したベクトルロード命令に基づいて、前記主記憶装置からベクトルデータを取得するデータ取得手段を実現させ、
前記データ取得手段は、前記ベクトルロード命令より前に存在する未完了の分岐命令の数を示す分岐レベルに応じて、前記主記憶装置から前記ベクトルデータを取得する命令を発行するか否か判断する
プログラムである。
また、本発明の他の形態である情報処理装置は、
主記憶装置と、
複数のプロセッサコアと、前記プロセッサコアから発行される命令に応じて前記主記憶装置と前記プロセッサコアとの間でデータの送受信を行うプロセッサネットワーク部と、を有するプロセッサと、
を有し、
前記プロセッサコアは、前記主記憶装置から読み出したベクトルロード命令に基づいて、前記主記憶装置からベクトルデータを取得するデータ取得手段を有し、
前記データ取得手段は、前記ベクトルロード命令より前に存在する未完了の分岐命令の数を示す分岐レベルに応じて、前記主記憶装置から前記ベクトルデータを取得する命令を前記プロセッサネットワーク部に対して発行するか否か判断する
という構成を採る。
本発明は、以上のように構成されることにより、ベクトルロード命令の投機的な実行を効率的に行うことが難しい、という問題を解決するメモリアクセス装置、命令制御方法、プログラム、情報処理装置を提供することが可能となる。
第1の実施形態に係る情報処理装置のうち本実施形態に特徴的な構成の一例を示すブロック図である。 第1の実施形態に係る情報処理装置の構成の一例を示すブロック図である。 メモリアクセス処理部の動作の一例を示すフローチャートである。 負荷監視部の動作の一例を示すフローチャートである。 ベクトルプロセッサの他の構成の一例を示すブロック図である。 ベクトルプロセッサの他の構成の一例を示すブロック図である。 ベクトルプロセッサの他の構成の一例を示すブロック図である。 第2の実施形態に係るメモリアクセス装置の構成の一例を示すブロック図である。 第2の実施形態に係る情報処理装置の構成の一例を示すブロック図である。
[第1の実施形態]
本発明の第1の実施形態を図1乃至図7を参照して説明する。図1は、情報処理装置1(情報処理装置1が有するベクトルプロセッサ2)のうち本実施形態に特徴的な構成の一例を示すブロック図である。図2は、情報処理装置1の構成の一例を示すブロック図である。図3は、メモリアクセス処理部212の動作の一例を示すフローチャートである。図4は、負荷監視部221の動作の一例を示すフローチャートである。図5乃至図7は、ベクトルプロセッサ2の他の構成の一例を示すブロック図である。
第1の実施形態では、ベクトルロード命令を投機的に実行する情報処理装置1について説明する。本実施形態における情報処理装置1は、図1で示すように、複数のコア21(コア21−1、コア21−2、……、コア21−N。特に区別しない場合は、コア21と表記する)と、プロセッサネットワーク部22と、を有するベクトルプロセッサ2を有している。また、コア21が有するメモリアクセス処理部212は、上限分岐レベル保持部2121を有している。後述するように、メモリアクセス処理部212は、上限分岐レベル保持部2121に設定された上限分岐レベルと、ベクトルロード命令に付加された分岐レベルと、の比較結果に基づいて、ベクトルロード命令をプロセッサネットワーク部22に発行するかどうか判断することになる。
また、上限分岐レベル保持部2121が保持する上限分岐レベルは、負荷監視部221(負荷監視手段)により変更可能なよう構成されている。後述するように、負荷監視部221は、プロセッサネットワーク部22の負荷を観測し当該プロセッサネットワーク部22の負荷状況を示す負荷状況情報を取得する。そして、負荷監視部221は、取得した負荷状況情報に基づいて、上限分岐レベル保持部2121が保持する上限分岐レベルを制御する。例えば、負荷監視部221は、負荷状況情報が示す負荷が予め定められた閾値(例えば、閾値A)よりも小さいと判断する場合、各コア21の上限分岐レベル保持部2121が保持する上限分岐レベルを大きくする。また、負荷監視部221は、例えば、負荷状況情報が示す負荷が予め定められた閾値(例えば、閾値B)よりも大きいと判断する場合、各コア21の上限分岐レベル保持部2121が保持する上限分岐レベルを小さくする。このように、負荷監視部221は、プロセッサネットワーク部22の負荷に基づいて上限分岐レベル保持部2121が保持する上限分岐レベルを制御する。
なお、本実施形態において説明する情報処理装置1は、例えば、特開2012−83937号公報に開示されている装置などに適用可能である。情報処理装置1は、特開2012−83937号公報に開示されている装置以外に適用しても構わない。
図2は、図1で示した情報処理装置1の構成をより詳細に記載したものである。図2を参照すると、情報処理装置1は、例えば、ベクトルプロセッサ2と、主記憶装置3と、を有している。ベクトルプロセッサ2と主記憶装置3とは、例えば、信号線などにより相互に通信可能なよう接続されている。なお、ベクトルプロセッサ2と主記憶装置3との間の接続は、多重化することが出来る。ベクトルプロセッサ2と主記憶装置3との間の接続を多重化することで、例えば、ベクトルプロセッサ2が主記憶装置3からベクトルデータを並列で読み出すなど、複数の処理を並列で処理することが可能となる。
ベクトルプロセッサ2は、例えば、複数のコア21(プロセッサコア、メモリアクセス装置)と、プロセッサネットワーク部22と、を有している。
コア21は、例えば、命令制御部211(データ取得手段の一部)と、メモリアクセス処理部212(データ取得手段の一部)と、ベクトル制御部213と、ベクトル処理部214と、を有している。
命令制御部211は、プロセッサネットワーク部22と例えば信号線により相互に通信可能に接続されている。また、命令制御部211は、メモリアクセス処理部212と例えば信号線により相互に通信可能に接続されている。さらに、命令制御部211は、ベクトル制御部213と例えば信号線により相互に通信可能に接続されている。
命令制御部211は、プロセッサネットワーク部22を通じて主記憶装置3から命令を読み出す。そして、命令制御部211は、読み出した命令を解読し、解読した命令に応じた処理を実行する。例えば、命令制御部211は、解読した命令がスカラ命令であった場合、当該スカラ命令を実行する。また、命令制御部211は、解読した命令がベクトル命令であった場合、当該ベクトル命令をベクトル制御部213に送信する。また、命令制御部211は、解読した命令がメモリアクセス命令であった場合、当該メモリアクセス命令をメモリアクセス処理部212に送信する。
また、命令制御部211は、図示しない記憶装置に分岐レベルを保持している。命令制御部211は、解読したメモリアクセス命令がベクトルロード命令であった場合、当該ベクトルロード命令に分岐レベルを示す情報を付加して、メモリアクセス処理部212に通知する。なお、ベクトルロード命令には、例えば、読み出す対象のベクトルデータの主記憶装置3上の位置(例えば、アドレスを特定する情報。開始アドレスと間隔など)を示す情報や、読み出すベクトルデータの要素数を示す情報、ベクトルデータを読み出すベクトルレジスタ2143の番号を示す情報などが含まれている。また、分岐レベルとは、主記憶装置3から読み出した命令が当該命令を含むプログラム上の何個目の分岐命令の後の命令であるかを示している。分岐レベルの初期値は、例えば0である。例えば、分岐レベルが「0」の場合、当該命令より前に未完了の分岐命令がないことを示している。また、分岐レベルが「1」の場合、当該命令より前に未完了の分岐命令が1つあることを示している。換言すると、分岐レベルは、ベクトルロード命令を含む一連のプログラムのうち、当該ベクトルロード命令の前に存在する未完了の分岐命令の数(つまり、処理がまだ完了していない分岐命令の数)を示している、ということも出来る。
ここで、命令制御部211の詳細な動作の一例について説明する。例えば、命令制御部211が主記憶装置3から読み出した命令がスカラ命令であったとする。すると、命令制御部211は、読み出したスカラ命令が条件分岐命令であるか否かを判定する。そして、読み出したスカラ命令が条件分岐命令であった場合、命令制御部211は、図示しない記憶装置に保持する分岐レベルを1加算する。その後、命令制御部211は、条件分岐命令による分岐先を予測する。
上記処理の後、命令制御部211は、条件分岐命令を実行する。その後、命令制御部211は、実行結果が予測結果と一致するか否かを確認する。そして、一致する場合、命令制御部211は、分岐レベルを1減算するとともに、メモリアクセス処理部212に確認結果(投機成功の情報)を送信する。一方、一致しなかった場合、命令制御部211は、分岐レベルが1以上の命令を廃棄するとともに、メモリアクセス処理部212に確認結果(投機失敗の情報)を送信する。
また、命令制御部211は、上記条件分岐命令の実行(つまり、スカラ命令の実行)と並行して、分岐予測に基づく分岐先から命令を読み出して解読する。そして、解読した命令がベクトルロード命令であった場合、命令制御部211は、当該ベクトルロード命令に分岐レベルを含めてメモリアクセス処理部212に送信する。一方、解読した命令がベクトルロード命令でなかった場合、命令制御部211は、命令に応じた処理を行う。
このように、命令制御部211は、条件分岐命令があるごとに分岐レベルを1加算する。また、命令制御部211は、条件分岐命令の予測結果と当該条件分岐命令の実行結果とが一致するごとに、分岐レベルを1減算する。つまり、命令制御部211は、条件分岐命令が終了するごとに分岐レベルを1減算する。例えば、以上のような処理により、命令制御部211は、まだ処理が完了していない分岐命令の数を示す分岐レベルを管理する。また、命令制御部211は、ベクトルロード命令をメモリアクセス処理部212に送信する際、当該ベクトルロード命令に分岐レベルを示す情報を付加する。そして、命令制御部211は、分岐レベルを示す情報を付加したベクトルロード命令をメモリアクセス処理部212に送信する。
メモリアクセス処理部212は、命令制御部211と例えば信号線により相互に通信可能に接続されている。また、メモリアクセス処理部212は、プロセッサネットワーク部22と例えば信号線により相互に通信可能に接続されている。また、メモリアクセス処理部212は、ベクトル制御部213と例えば信号線により相互に通信可能に接続されている。さらに、メモリアクセス処理部212は、ベクトル処理部214と例えば信号線により相互に通信可能に接続されている。
メモリアクセス処理部212は、命令制御部211から受信するメモリアクセス命令に応じて、ベクトル処理部214と主記憶装置3との間のアクセスを制御する。また、メモリアクセス処理部212は、命令制御部211から受信した、実行結果が予測結果と一致した旨を示す確認結果に応じて、後述する保留中のベクトルロード命令に付加された分岐レベルを1減算する。
図2を参照すると、メモリアクセス処理部212は、ベクトル処理部214が有するロードバッファ2142の管理を行うロードバッファ管理部2122と、上限分岐レベルが格納された上限分岐レベル保持部2121と、を有している。メモリアクセス処理部212は、ロードバッファ管理部2122と上限分岐レベル保持部2121とを活用して、ベクトル処理部214と主記憶装置3との間のアクセスを制御する。
例えば、命令制御部211からベクトルロード命令を受信した場合、メモリアクセス処理部212は、受信したベクトルロード命令に付加された情報が示す分岐レベルが上限分岐レベル保持部2121に保存されている上限分岐レベル以下であるか否か確認する。
分岐レベルが上限分岐レベルを超えていた場合、メモリアクセス処理部212は、ベクトルロード命令の分岐レベルが上限分岐レベル以下になるまで以降の処理を保留する。換言すると、メモリアクセス処理部212は、分岐レベルが上限分岐レベルを超えていた場合、ベクトルロード命令の分岐レベルが上限分岐レベル以下になるまで、ベクトルロード命令などを図示しない記憶装置などに格納して待機する。
なお、保留中にベクトルロード命令の分岐レベルが上限分岐レベル以下になる例としては、例えば、以下のようなケースがある。
ケース1.負荷監視部221からの指示により上限分岐レベル保持部2121の上限分岐レベルが変更される場合。つまり、負荷監視部221が上限分岐レベルを上げることで、分岐レベルが上限分岐レベル以下になった場合。
ケース2.命令制御部211からの投機成功の情報によりベクトルロード命令の分岐レベルが変更される場合。つまり、命令制御部211から実行結果が予測結果と一致した旨を示す確認結果を受信することで、メモリアクセス処理部212がベクトルロード命令に付加されている分岐レベルを1減算した結果、分岐レベルが上限分岐レベル以下になった場合。
上記ケース1もしくはケース2、又は、ケース1、2の両方により、ベクトルロード命令の分岐レベルが上限分岐レベル以下になった場合、又は、最初から分岐レベルが上限分岐レベル以下であった場合、メモリアクセス処理部212は、ロードバッファ管理部2122を検索する。
そして、検索の結果、使用可能なロードバッファ2142が発見された場合、メモリアクセス処理部212は、ロードバッファ管理部2122に対して、ベクトルロード命令用に空き状態のロードバッファ2142を一つ割り当てるよう指示する。これにより、ロードバッファ管理部2122は、ベクトルロード命令用に空き状態のロードバッファ2142を一つ割り当てる。その後、メモリアクセス処理部212は、プロセッサネットワーク部22へベクトルロード命令であることを通知するとともに、主記憶装置3上のベクトルデータを特定する情報、要素数、ロードバッファ番号(ロードバッファ管理部2122により確保したロードバッファ2142を一意に識別するための番号)を通知する。また、メモリアクセス処理部212は、ベクトル制御部213にベクトルロード命令に関する情報を送信するとともに、ロードバッファ番号を通知する。
一方、使用可能なロードバッファ2142がない場合、メモリアクセス処理部212は、使用可能なロードバッファ2142が確保されるまで、プロセッサネットワーク部22へのベクトルロード命令およびそれに付随する情報の通知を保留する。また、メモリアクセス処理部212は、ベクトル制御部213へのロードバッファ番号の通知を保留する。換言すると、メモリアクセス処理部212は、使用可能なロードバッファ2142がない場合、ベクトルロード命令などを図示しない記憶装置に格納して待機する。そして、メモリアクセス処理部212は、例えば、定期的にロードバッファ管理部2122を検索してロードバッファ2142に空きが生じるのを待つ。ロードバッファ2142に空きが生じた後は、メモリアクセス処理部212は、上述した処理を行うことになる。
メモリアクセス処理部212は、例えば、上記のように、ベクトルロード命令に付加された分岐レベルを示す情報と、上限分岐レベル保持部2121に保存された上限分岐レベルと、ロードバッファ2142の空き具合と、に応じて、ベクトルロード命令をプロセッサネットワーク部22に送信する。なお、分岐レベルが上限分岐レベルを超えている場合に、命令制御部211から実行結果が予測結果と一致しなかった旨を示す投機失敗の情報を受信した場合、メモリアクセス処理部212は、待機中のベクトルロード命令をプロセッサネットワーク部22に送信せず廃棄することになる。また、メモリアクセス処理部212は、ロードバッファ2142の空きを待っている最中に投機失敗の情報を受信した場合に、不要となるベクトルロード命令を廃棄するよう構成することが出来る。
上限分岐レベル保持部2121は、上述したように、上限分岐レベルを保持している。上限分岐レベルは、例えば、0以上の任意の値であり、動的に変更可能な値である。上限分岐レベルは、例えば、負荷監視部221により制御されることになる。
ロードバッファ管理部2122は、ベクトル処理部214が有するロードバッファ2142の空き具合(使用状態)を管理する。例えば、ロードバッファ管理部2122は、ロードバッファ2142ごとに当該ロードバッファ2142が「空き」状態にあるか「使用中」状態にあるかを示す図示しない表を有している。そして、ロードバッファ管理部2122は、例えば、ロードバッファ2142を確保する際やベクトル処理部214からロードバッファ解放通知を受信した際に上記表を更新することで、ロードバッファ2142の空き具合を管理する。
ベクトル制御部213は、命令制御部211と例えば信号線により相互に通信可能に接続されている。また、ベクトル制御部213は、メモリアクセス処理部212と例えば信号線により相互に通信可能に接続されている。また、ベクトル制御部213は、ベクトル処理部214と例えば信号線により相互に通信可能に接続されている。
ベクトル制御部213は、命令制御部211から受信したベクトル命令に応じてベクトル処理部214で行うベクトル命令を制御する。また、命令制御部211がベクトルロード命令を読み出していた場合、ベクトル制御部213は、メモリアクセス処理部212からベクトルロード命令に関する情報やロードバッファ番号を受け取ることになる。すると、ベクトル制御部213は、ベクトルロード命令であることや、ロードバッファ番号、要素数、転送先ベクトルレジスタ番号などをベクトル処理部214へ通知する。
ベクトル処理部214は、ベクトル制御部213と例えば信号線により相互に通信可能に接続されている。また、ベクトル処理部214は、メモリアクセス処理部212と例えば信号線により相互に通信可能に接続されている。また、ベクトル処理部214は、プロセッサネットワーク部22と例えば信号線により相互に通信可能に接続されている。
ベクトル処理部214は、ベクトルロード管理部2141とロードバッファ2142とベクトルレジスタ2143とを含んでいる。また、ベクトル処理部214は、ベクトル演算を行うためのベクトル演算器などを有している。なお、ベクトル演算器などは、例えば、特開2012−83937号公報に開示されている構成を採用して構わない。このように、ベクトル演算器などの構成は既知であるため、その説明を省略する。
ベクトルロード管理部2141は、ベクトル制御部213から受信したロードバッファ番号、要素数、転送先ベクトルレジスタ番号を含むベクトルロード命令、及び、プロセッサネットワーク部22から受信したロードバッファ番号、要素番号を含むロードデータに応じて、ロードバッファ2142内にロードデータが整列したかどうかを管理する。
例えば、ベクトルロード管理部2141は、プロセッサネットワーク部22からロードデータを受信すると、当該受信したロードデータをロードバッファ2142に送信する。また、ベクトルロード管理部2141は、ロードバッファ2142におけるロードデータの格納状況を管理する。例えば、ベクトルロード管理部2141は、分岐レベルが「0」のベクトルロード命令に応じたロードデータが整列した場合(つまり、取得対象の情報をすべて取得してベクトルレジスタ2143への転送が可能になった場合)、ロードバッファ2142からロードデータを読み出しベクトルレジスタ2143へ転送する。また、ベクトルロード管理部2141は、ロードバッファ2142からベクトルレジスタ2143へ転送を行うためにロードデータを読み出した後、メモリアクセス処理部212にロードバッファ解放通知を送る。これにより、ロードバッファ管理部2122は、ロードバッファ解放通知が示すロードバッファ2142の使用状態を「使用中」から「空き」に変更することになる。
ロードバッファ2142は、ロードデータを格納する。ロードバッファ2142は、複数個(任意の数で構わない)ある。複数個のロードバッファ2142のそれぞれには、ベクトルロード命令ごとに使用するロードバッファ2142を指定するために、ロードバッファ番号が付与されている。ロードデータの格納位置は、ロードバッファ番号と要素番号により決定されることになる。
ベクトルレジスタ2143は、ベクトル演算を行う際のデータを格納しておくレジスタである。ベクトルレジスタ2143は、複数個(任意の数で構わない)ある。複数個のベクトルレジスタ2143のそれぞれには、ベクトル命令ごとに使用するベクトルレジスタ2143を指定するためにベクトルレジスタ番号が付与されている。ベクトルレジスタ2143には、上述したように、ベクトルロード管理部2141によりロードバッファ2142から読み出されたロードデータが転送されることになる。
プロセッサネットワーク部22は、命令制御部211と例えば信号線により相互に通信可能に接続されている。また、プロセッサネットワーク部22は、メモリアクセス処理部212と例えば信号線により相互に通信可能に接続されている。また、プロセッサネットワーク部22は、ベクトル処理部214と例えば信号線により相互に通信可能に接続されている。さらに、プロセッサネットワーク部22は、主記憶装置3と例えば信号線により相互に通信可能に接続されている。
プロセッサネットワーク部22は、メモリアクセス処理部212から受信したメモリアクセス命令に応じて、主記憶装置3とベクトル処理部214のとの間のベクトルデータの転送を行う。
例えば、プロセッサネットワーク部22は、メモリアクセス命令(ベクトルロード命令もメモリアクセス命令の一種である)を受信すると、当該メモリアクセス命令を要素ごとに分解する。そして、プロセッサネットワーク部22は、要素ごとのメモリアクセス命令に所定の情報を付加して主記憶装置3に送信する。なお、メモリアクセス命令に付加する所定の情報とは、例えばベクトルロード命令の場合、所望のベクトルデータの格納位置、ロードバッファ番号、要素番号などである。その後、プロセッサネットワーク部22は、主記憶装置3から送信した命令に応じたデータを受信する。すると、プロセッサネットワーク部22は、受信したデータをベクトル処理部214などに送信する。
また、プロセッサネットワーク部22は、負荷監視部221を有している。負荷監視部221は、プロセッサネットワーク部22の負荷を観測して、プロセッサネットワーク部22の負荷状況を示す負荷状況情報を取得する。換言すると、負荷監視部221は、コア21と主記憶装置3との間のネットワークの負荷を監視して、コア21と主記憶装置3との間のネットワークの負荷を示す負荷状況情報を取得する、ということも出来る。また、負荷監視部221は、取得した負荷状況情報に基づいて、上限分岐レベル保持部2121に保存されている上限分岐レベルを制御する。例えば、負荷監視部221は、負荷状況情報が示す負荷が予め定められた閾値(例えば、閾値A)よりも小さいと判断する場合、各コア21の上限分岐レベル保持部2121に設定された上限分岐レベルを例えば「1」大きくする。一方、負荷監視部221は、例えば、監視結果である負荷が予め定められた閾値(例えば、閾値B。閾値Bの値は、例えば、閾値Aよりも大きい)よりも高いと判断する場合、各コア21の上限分岐レベル保持部2121に設定された上限分岐レベルを例えば「1」小さくする。
このように、負荷監視部221は、取得した負荷状況情報に基づいて、上限分岐レベル保持部2121が保持する上限分岐レベルを制御する。なお、負荷監視部221は、それぞれ異なる値を有する複数の予め定められた閾値を有することが出来る。負荷監視部221が複数の閾値を持つことで、上限分岐レベルを段階的に制御することが可能となる。
なお、負荷監視部221により行われる負荷の観測方法(負荷状況情報の取得方法)は、本実施形態においては特に限定しない。例えば、負荷監視部221は、予め定められた所定期間(任意の長さで構わない)中にメモリアクセス処理部212から送信されたメモリアクセス命令数をカウントし、カウントした値を負荷とみなすよう構成することが出来る。また、負荷監視部221は、例えば、メモリアクセス処理部212から送信されたメモリアクセス命令の要素数をカウントするとともに、ベクトル処理部214へ送信した要素数をカウントする。そして、負荷監視部221は、メモリアクセス処理部212から送信されたメモリアクセス命令の要素数からベクトル処理部214へ送信した要素数を減算することで、プロセッサネットワーク部22内に存在するリクエスト要素数をカウントする。例えば負荷監視部221は、このようなプロセッサネットワーク部22内に存在するリクエスト要素数を負荷とみなすよう構成しても構わない。
以上のように、負荷監視部221は様々な方法を用いて負荷状況情報を取得する。負荷監視部221は、上記例示した方法以外の方法を用いて負荷状況情報を取得しても構わないし、上記例示した情報を組み合わせて負荷状況情報を取得しても構わない。このように、負荷監視部221は、様々な方法を用いて負荷を監視するよう構成することが出来る。
主記憶装置3は、メモリなどの記憶装置である。主記憶装置3は、プロセッサネットワーク部22と例えば信号線により相互に通信可能に接続されている。主記憶装置3には、各種命令やベクトルデータなど様々な情報が格納されている。
以上が、情報処理装置1の構成の一例である。続いて、図3を参照して、メモリアクセス処理部212がベクトルロード命令を発行する際の動作の一例について説明する。
図3を参照すると、メモリアクセス処理部212は、命令制御部211からベクトルロード命令を受け付ける(ステップS101)。なお、命令制御部211は、主記憶装置3から読み出した命令がベクトルロード命令であった場合に、当該ベクトルロード命令をメモリアクセス処理部212に送信する。
メモリアクセス処理部212は、受信したベクトルロード命令に付加された情報が示す分岐レベルが、上限分岐レベル保持部2121が保持する上限分岐レベル以下であるか否か確認する(ステップS102)。
分岐レベルが上限分岐レベルを超えていた場合(ステップS102、No)、メモリアクセス処理部212は、ベクトルロード命令の分岐レベルが上限分岐レベル以下になるまで以降の処理を保留する。換言すると、メモリアクセス処理部212は、分岐レベルが上限分岐レベルを超えていた場合、ベクトルロード命令の分岐レベルが上限分岐レベル以下になるまで、ベクトルロード命令などを図示しない記憶装置などに格納して待機する。
なお、待機中にベクトルロード命令の分岐レベルが上限分岐レベル以下になる例としては、例えば、以下のようなケースがある。
ケース1.負荷監視部221からの指示により上限分岐レベル保持部2121の上限分岐レベルが変更される場合。つまり、負荷監視部221が上限分岐レベルを上げることで、分岐レベルが上限分岐レベル以下になった場合。
ケース2.命令制御部211からの投機成功の情報によりベクトルロード命令の分岐レベルが変更される場合。つまり、命令制御部211から実行結果が予測結果と一致した旨を示す確認結果を受信することで、メモリアクセス処理部212がベクトルロード命令に付加されている分岐レベルを1減算した結果、分岐レベルが上限分岐レベル以下になった場合。
上記ケース1もしくはケース2、又は、ケース1、2の両方により、ベクトルロード命令の分岐レベルが上限分岐レベル以下になった場合、又は、最初から分岐レベルが上限分岐レベル以下であった場合(ステップS102、Yes)、メモリアクセス処理部212は、ロードバッファ管理部2122を検索する。そして、メモリアクセス処理部212は、使用可能なロードバッファ2142が存在するか否か確認する(ステップS103)。
使用可能なロードバッファ2142が存在する場合(ステップS103、Yes)、メモリアクセス処理部212は、ロードバッファ管理部2122に対して、ベクトルロード命令用に空き状態のロードバッファ2142を一つ割り当てるよう指示する。これにより、ロードバッファ管理部2122は、ベクトルロード命令用に空き状態のロードバッファ2142を一つ割り当てる。その後、メモリアクセス処理部212は、プロセッサネットワーク部22へベクトルロード命令であることを通知するとともに、主記憶装置3上のベクトルデータを特定する情報、要素数、ロードバッファ番号を通知する(ステップS104)。また、メモリアクセス処理部212は、ベクトル制御部213にベクトルロード命令に関する情報を送信するとともに、ロードバッファ番号を通知する。
一方、使用可能なロードバッファ2142がない場合(ステップS103、No)、メモリアクセス処理部212は、使用可能なロードバッファ2142が確保されるまで、プロセッサネットワーク部22へのベクトルロード命令およびそれに付随する情報の通知を保留する。また、メモリアクセス処理部212は、ベクトル制御部213へのロードバッファ番号の通知を保留する。換言すると、メモリアクセス処理部212は、使用可能なロードバッファ2142がない場合、ベクトルロード命令などを図示しない記憶装置に格納して待機する。そして、メモリアクセス処理部212は、例えば、定期的にロードバッファ管理部2122を検索してロードバッファ2142に空きが生じるのを待つことになる。
メモリアクセス処理部212は、例えば、上記のように、ベクトルロード命令に付加された分岐レベルを示す情報と、上限分岐レベル保持部2121が保持する上限分岐レベルと、ロードバッファ2142の空き具合と、に応じて、ベクトルロード命令をプロセッサネットワーク部22に送信する。なお、分岐レベルが上限分岐レベルを超えている場合、つまり、ステップS102の処理により待機中に命令制御部211から実行結果が予測結果と一致しなかった旨を示す投機失敗の情報を受信した場合、メモリアクセス処理部212は、待機中のベクトルロード命令をプロセッサネットワーク部22に送信せず廃棄することになる。また、メモリアクセス処理部212は、ステップS103の待機中に投機失敗の情報を受信した場合も、対象となる待機中のベクトルロード命令をプロセッサネットワーク部22に送信せず廃棄するよう構成して構わない。
以上が、メモリアクセス処理部212の動作の一例である。続いて、図4を参照して、負荷監視部221の動作の一例について説明する。
図4を参照すると、負荷監視部221は、例えば定期的に負荷状況情報を取得する(ステップS201)。
負荷監視部221は、取得した負荷状況情報が示す負荷が予め定められた閾値Aよりも小さいか否か確認する。また、負荷監視部221は、取得した負荷状況情報が示す負荷が予め定められた閾値Bよりも大きいか否か確認する(ステップS202)。
負荷状況情報が示す負荷が予め定められた閾値Aよりも小さい場合(ステップS202、閾値Aよりも小さい)、負荷監視部221は、上限分岐レベル保持部2121が保持する上限分岐レベルを1加算する(ステップS204)。また、負荷状況情報が示す負荷が予め定められた負荷Bよりも大きい場合(ステップS202、閾値Bよりも大きい)、負荷監視部221は、上限分岐レベル保持部2121が保持する上限分岐レベルを1減算する(ステップS203)。一方、負荷状況情報が示す負荷が閾値A以上閾値B以下である場合、負荷監視部221は、上限分岐レベル保持部2121が保持する上限分岐レベルを変更しないことになる。
以上が、負荷監視部221の動作の一例である。
このように、本実施形態におけるメモリアクセス処理部212は、上限分岐レベル保持部2121を有している。このような構成により、メモリアクセス処理部212は、上限分岐レベル保持部2121に設定された上限分岐レベルと、ベクトルロード命令に付加された分岐レベルと、の比較結果に基づいて、ベクトルロード命令をプロセッサネットワーク部22に発行するかどうか判断することが出来る。その結果、メモリアクセス処理部212は、分岐レベルが上限分岐レベルを超えているベクトルロード命令の発行を抑制することが可能となる。これにより、分岐失敗時に無効となるリクエスト数を削減することが可能となる。
また、本実施形態におけるプロセッサネットワーク部22は、負荷監視部221を有している。このような構成により、負荷監視部221は、取得した負荷状況情報に基づいて、上限分岐レベル保持部2121が保持する上限分岐レベルを制御することが出来る。その結果、例えば、メモリネットワーク負荷が低い時に投機実行をより多く行いコア性能を向上させることが可能となる。また、メモリネットワーク負荷が高い場合には、投機実行を少なくすることで無効になる可能性のあるリクエストを減らし、削減したリクエストによりメモリネットワーク内でのリクエスト競合を緩和しネットワーク全体の性能を向上させることが可能となる。つまり、ベクトルロード命令の投機的な実行を効率的に行うことが可能となる。
なお、本実施形態では、プロセッサネットワーク部22の負荷状況に基づいて、全てのコア21の上限分岐レベルを負荷監視部221が一律に制御する場合について説明した。しかしながら、上限分岐レベルは、必ずしも一律に制御される必要はない。つまり、ベクトルプロセッサ2が有するコア21のうち、所定のコア21の上限分岐レベルのみが変更されるよう構成しても構わない。
上記のような処理は、例えば、「負荷監視部221から選択的にコア21への指示を行う」、「負荷監視部221は一律な指示を行うが、上限分岐レベル保持部2121が選択的に変更する」などの処理を行うよう構成することで実施することができる。
例えば、図5で示すように、負荷監視部221に上限分岐レベルを変更するコア21の情報(例えば、コア21の優先度を示す情報など)を保持するコア選択情報保持部2211を設けることが考えられる。負荷監視部221がコア選択情報保持部2211を有することで、負荷監視部221は、例えば予め定められた優先度等に基づいて選択したコア21の上限分岐レベルを下げるよう制御することが可能となる。
また、例えば、図6で示すように、上限分岐レベル保持部2121に当該上限分岐レベル保持部2121を有するコア21で上限分岐レベルの変更を行うかどうかを示すレベル変更実施情報を有するレベル変更実施情報保持部21211を設けることも考えられる。上限分岐レベル保持部2121がレベル変更実施情報保持部21211を有する場合、上限分岐レベル保持部2121が保持する上限分岐レベルは、例えば、負荷監視部221から上限分岐レベルを変更する旨の指示を受け、かつ、レベル変更実施情報保持部21211が有するレベル変更実施情報が上限分岐レベルの変更を許容している場合に変更されることになる。
例えば、このように、ベクトルプロセッサ2が有するコア21のうち、所定のコア21の上限分岐レベルのみが変更されるよう構成しても構わない。なお、上記構成は、上記例示した方法以外により実現されても構わない。
また、本実施形態においては、プロセッサネットワーク部22が一つの負荷監視部221を有する場合について説明した。しかしながら、プロセッサネットワーク部22が有する負荷監視部221の数は、一つに限定されない。プロセッサネットワーク部22は、2つ以上の任意の数の負荷監視部221を有するよう構成することが出来る。プロセッサネットワーク部22は、例えば、図7で示すように、コア21の数に応じた数の負荷監視部221を有しても構わない。コア21の数に応じた数の負荷監視部221を有する場合、それぞれの負荷監視部221は、対応するメモリアクセス処理部212から生じる負荷を監視して、それぞれ負荷状況情報を取得する。そして、負荷監視部221は、取得した負荷状況情報に基づいて、当該負荷監視部221と対応するコア21の上限分岐レベルを制御することになる。つまり、例えば、負荷監視部221−1は、上限分岐レベル保持部2121−1が保持する上限分岐レベルを制御することになる。
なお、情報処理装置1は、図5乃至7で例示した構成の幾つかを組み合わせた構成を有していても構わない。
また、本実施形態においては、メモリアクセス処理部212が上限分岐レベルと分岐レベルとの比較を行うとした。しかしながら、例えば、命令制御部211が、上限分岐レベルと分岐レベルとの比較を行い、上限分岐レベルを超える分岐レベルのベクトルロード命令の発行を抑制するよう構成しても構わない。
また、本実施形態において説明した各処理部は、例えば、ベクトルプロセッサ2が有する図示しない演算装置が、図示しない記憶装置に格納されたプログラムを実行することで実現することが出来る。各処理部は、例えば、図示しない論理回路などの組み合わせにより実現されても構わない。
[第2の実施形態]
次に、図8、図9を参照して、本発明の第2の実施形態について説明する。まず、図8を参照して、メモリアクセス装置4の構成の概要について説明する。
図8を参照すると、メモリアクセス装置4は、データ取得手段41を有している。例えば、メモリアクセス装置4は、図示しない演算装置を有しており、図示しない記憶装置に格納されたプログラムを上記演算装置が実行することで、データ取得手段41を実現する。
データ取得手段41は、主記憶装置から読み出したベクトルロード命令より前に存在する未完了の分岐命令の数を示す分岐レベルに応じて、主記憶装置からベクトルデータを取得する命令を発行するか否か判断する。そして、データ取得手段41は、判断結果に応じて、ベクトルロード命令に基づいて、主記憶装置からベクトルデータを取得する。
このように、メモリアクセス装置4は、データ取得手段41を有している。このような構成により、データ取得手段41は、分岐レベルに応じて、主記憶装置からベクトルデータを取得する命令を発行するか否か判断することが出来る。これにより、例えば、投機失敗により無効になる可能性のある命令の発行を行うか否かを分岐レベルに応じて制御することが可能となる。その結果、例えば、より無効になる可能性の高い(分岐レベルの大きな)命令の発行を抑制することが可能となり、ベクトルロード命令の投機的な実行を効率的に行うことが可能となる。
また、上述したメモリアクセス装置4は、当該メモリアクセス装置4に所定のプログラムが組み込まれることで実現できる。具体的に、本発明の他の形態であるプログラムは、メモリアクセス装置に、主記憶装置から読み出したベクトルロード命令に基づいて、主記憶装置からベクトルデータを取得するデータ取得手段41を実現させ、データ取得手段41は、ベクトルロード命令より前に存在する未完了の分岐命令の数を示す分岐レベルに応じて、主記憶装置からベクトルデータを取得する命令を発行するか否か判断する、プログラムである。
また、上述したメモリアクセス装置4により実行される命令制御方法は、メモリアクセス装置が、主記憶装置から読み出したベクトルロード命令より前に存在する未完了の分岐命令の数を示す分岐レベルに応じて、主記憶装置からベクトルデータを取得する命令を発行するか否か判断し、判断の結果に応じて主記憶装置から前記ベクトルデータを取得する、という方法である。
上述した構成を有する、プログラム、又は、命令制御方法、の発明であっても、上記メモリアクセス装置4と同様の作用を有するために、上述した本発明の目的を達成することが出来る。
また、本発明の目的は、図9で示すような情報処理装置5であっても達成することが出来る。図5を参照すると、情報処理装置5は、主記憶装置51と、プロセッサ52と、を有している。
主記憶装置51は、メモリなどの記憶装置である。
プロセッサ52は、複数のプロセッサコア521と、プロセッサコア521から発行される命令に応じて主記憶装置51とプロセッサコア521との間でデータの送受信を行うプロセッサネットワーク部522と、を有している。
プロセッサコア521は、データ取得手段5211を有している。例えば、プロセッサコア521は、図示しない演算装置を有しており、図示しない記憶装置に格納されたプログラムを上記演算装置が実行することで、データ取得手段5211を実現する。
データ取得手段5211は、主記憶装置51から読み出したベクトルロード命令に基づいて、主記憶装置51からベクトルデータを取得する。また、データ取得手段5211は、ベクトルロード命令より前に存在する未完了の分岐命令の数を示す分岐レベルに応じて、主記憶装置51からベクトルデータを取得する命令をプロセッサネットワーク部522に対して発行するか否か判断する。
このような構成を有する情報処理装置5であっても、メモリアクセス装置4と同様に、本発明の目的を達成することが出来る。
<付記>
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明におけるメモリアクセス装置などの概略を説明する。但し、本発明は、以下の構成に限定されない。
(付記1)
主記憶装置から読み出したベクトルロード命令に基づいて、前記主記憶装置からベクトルデータを取得するデータ取得手段を有し、
前記データ取得手段は、前記ベクトルロード命令より前に存在する未完了の分岐命令の数を示す分岐レベルに応じて、前記主記憶装置から前記ベクトルデータを取得する命令を発行するか否か判断する
メモリアクセス装置。
(付記2)
付記1に記載のメモリアクセス装置であって、
前記データ取得手段は、前記分岐レベルが予め定められた分岐レベル閾値以下である場合に、前記主記憶装置から前記ベクトルデータを取得する命令を発行する
メモリアクセス装置。
(付記3)
付記1又は2に記載のメモリアクセス装置であって、
前記データ取得手段は、前記分岐レベルが予め定められた分岐レベル閾値を超えていた場合、当該分岐レベルが前記分岐レベル閾値以下となるまで前記主記憶装置から前記ベクトルデータを取得する命令の発行を保留し、前記前記分岐レベルが前記分岐レベル閾値以下となった場合に、前記主記憶装置から前記ベクトルデータを取得する命令を発行する
メモリアクセス装置。
(付記3−1)
付記3に記載のメモリアクセス装置であって、
前記データ取得手段は、前記命令の発行を保留している最中に、所定の投機失敗の情報を受信した場合、前記命令を発行せず廃棄する
メモリアクセス装置。
(付記3−2)
付記2又は付記3に記載のメモリアクセス装置であって、
前記データ取得手段は、前記ベクトルデータを格納するロードバッファの空き具合に応じて、前記主記憶装置から前記ベクトルデータを取得する命令を発行する
メモリアクセス装置。
(付記4)
付記2又は3に記載のメモリアクセス装置であって、
前記分岐レベル閾値は、前記主記憶装置と前記メモリアクセス装置との間のネットワークの負荷に応じて制御される値である
メモリアクセス装置。
(付記5)
付記4に記載のメモリアクセス装置であって、
前記分岐レベル閾値は、前記主記憶装置と前記メモリアクセス装置との間のネットワークの負荷が予め定められた閾値よりも大きな値となる場合、当該分岐レベル閾値が示す値を下げるよう制御される値である
メモリアクセス装置。
(付記5−1)
付記4又は付記5に記載のメモリアクセス装置であって、
前記分岐レベル閾値は、前記主記憶装置と前記メモリアクセス装置との間のネットワークの負荷が予め定められた閾値よりも小さな値となる場合、当該分岐レベル閾値が示す値を上げるよう制御される値である
メモリアクセス装置。
(付記5−2)
付記1乃至5のいずれかに記載のメモリアクセス装置であって、
前記データ取得手段は、ベクトルロード命令を発行する命令制御手段と、前記命令制御部により発行されたベクトルロード命令に基づいて、前記主記憶装置から前記ベクトルデータを読み出すための取得命令を発行する記憶装置アクセス制御手段と、を有し、
前記命令制御手段が発行する前記ベクトルロード命令には、当該ベクトルロード命令を含む一連のプログラムのうち、当該ベクトルロード命令より前に存在する未完了の分岐命令の数に応じた分岐レベルを示す情報が含まれており、
前記記憶装置アクセス制御手段は、前記ベクトルロード命令に含まれる前記分岐レベルに応じて、前記取得命令を発行するか否か判断する
メモリアクセス装置。
(付記6)
メモリアクセス装置が、
主記憶装置から読み出したベクトルロード命令より前に存在する未完了の分岐命令の数を示す分岐レベルに応じて、前記主記憶装置からベクトルデータを取得する命令を発行するか否か判断し、
前記判断の結果に応じて前記主記憶装置から前記ベクトルデータを取得する
命令制御方法。
(付記7)
メモリアクセス装置に、
主記憶装置から読み出したベクトルロード命令に基づいて、前記主記憶装置からベクトルデータを取得するデータ取得手段を実現させ、
前記データ取得手段は、前記ベクトルロード命令より前に存在する未完了の分岐命令の数を示す分岐レベルに応じて、前記主記憶装置から前記ベクトルデータを取得する命令を発行するか否か判断する
プログラム。
(付記8)
主記憶装置と、
複数のプロセッサコアと、前記プロセッサコアから発行される命令に応じて前記主記憶装置と前記プロセッサコアとの間でデータの送受信を行うプロセッサネットワーク部と、を有するプロセッサと、
を有し、
前記プロセッサコアは、前記主記憶装置から読み出したベクトルロード命令に基づいて、前記主記憶装置からベクトルデータを取得するデータ取得手段を有し、
前記データ取得手段は、前記ベクトルロード命令より前に存在する未完了の分岐命令の数を示す分岐レベルに応じて、前記主記憶装置から前記ベクトルデータを取得する命令を前記プロセッサネットワーク部に対して発行するか否か判断する
情報処理装置。
(付記9)
付記8に記載の情報処理装置であって、
前記データ取得手段は、前記分岐レベルと予め定められた分岐レベル閾値とに基づいて、前記主記憶装置から前記ベクトルデータを取得する命令を発行するか否か判断するよう構成され、
前記プロセッサネットワーク部は、当該プロセッサネットワーク部の負荷を観測する負荷監視手段を有し、
前記負荷監視手段は、前記プロセッサネットワーク部の負荷に応じて、前記分岐レベル閾値の値を制御する
情報処理装置。
(付記10)
付記9に記載の情報処理装置であって、
前記負荷監視手段は、予め定められた情報に基づいて特定される前記プロセッサコアの前記分岐レベル閾値の値を制御する
情報処理装置。
(付記11)
付記9に記載の情報処理装置であって、
前記データ取得部は、前記負荷監視手段からの制御に応じて前記分岐レベル閾値の値を変更するか否か判断する
情報処理装置。
(付記12)
付記9乃至付記11に記載の情報処理装置であって、
前記プロセッサネットワーク部は、前記プロセッサコアの数に応じた数の前記負荷監視手段を有する
情報処理装置。
なお、上記各実施形態及び付記において記載したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されていたりする。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
以上、上記各実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることが出来る。
1 情報処理装置
2 ベクトルプロセッサ
21 コア
211 命令制御部
212 メモリアクセス処理部
2121 上限分岐レベル保持部
21211 レベル変更実施情報保持部
2122 ロードバッファ管理部
213 ベクトル制御部
214 ベクトル処理部
2141 ベクトルロード管理部
2142 ロードバッファ
2143 ベクトルレジスタ
22 プロセッサネットワーク部
221 負荷監視部
2211 コア選択情報保持部
3 主記憶装置
4 メモリアクセス装置
41 データ取得手段
5 情報処理装置
51 主記憶装置
52 プロセッサ
521 プロセッサコア
5211 データ取得手段
522 プロセッサネットワーク部

Claims (10)

  1. 主記憶装置から読み出したベクトルロード命令に基づいて、前記主記憶装置からベクトルデータを取得するデータ取得手段を有し、
    前記データ取得手段は、前記ベクトルロード命令より前に存在する未完了の分岐命令の数を示す分岐レベルに応じて、前記主記憶装置から前記ベクトルデータを取得する命令を発行するか否か判断する
    メモリアクセス装置。
  2. 請求項1に記載のメモリアクセス装置であって、
    前記データ取得手段は、前記分岐レベルが予め定められた分岐レベル閾値以下である場合に、前記主記憶装置から前記ベクトルデータを取得する命令を発行する
    メモリアクセス装置。
  3. 請求項1又は2に記載のメモリアクセス装置であって、
    前記データ取得手段は、前記分岐レベルが予め定められた分岐レベル閾値を超えていた場合、当該分岐レベルが前記分岐レベル閾値以下となるまで前記主記憶装置から前記ベクトルデータを取得する命令の発行を保留し、前記前記分岐レベルが前記分岐レベル閾値以下となった場合に、前記主記憶装置から前記ベクトルデータを取得する命令を発行する
    メモリアクセス装置。
  4. 請求項2又は3に記載のメモリアクセス装置であって、
    前記分岐レベル閾値は、前記主記憶装置と前記メモリアクセス装置との間のネットワークの負荷に応じて制御される値である
    メモリアクセス装置。
  5. 請求項4に記載のメモリアクセス装置であって、
    前記分岐レベル閾値は、前記主記憶装置と前記メモリアクセス装置との間のネットワークの負荷が予め定められた閾値よりも大きな値となる場合、当該分岐レベル閾値が示す値を下げるよう制御される値である
    メモリアクセス装置。
  6. メモリアクセス装置が、
    主記憶装置から読み出したベクトルロード命令より前に存在する未完了の分岐命令の数を示す分岐レベルに応じて、前記主記憶装置からベクトルデータを取得する命令を発行するか否か判断し、
    前記判断の結果に応じて前記主記憶装置から前記ベクトルデータを取得する
    命令制御方法。
  7. メモリアクセス装置に、
    主記憶装置から読み出したベクトルロード命令に基づいて、前記主記憶装置からベクトルデータを取得するデータ取得手段を実現させ、
    前記データ取得手段は、前記ベクトルロード命令より前に存在する未完了の分岐命令の数を示す分岐レベルに応じて、前記主記憶装置から前記ベクトルデータを取得する命令を発行するか否か判断する
    プログラム。
  8. 主記憶装置と、
    複数のプロセッサコアと、前記プロセッサコアから発行される命令に応じて前記主記憶装置と前記プロセッサコアとの間でデータの送受信を行うプロセッサネットワーク部と、を有するプロセッサと、
    を有し、
    前記プロセッサコアは、前記主記憶装置から読み出したベクトルロード命令に基づいて、前記主記憶装置からベクトルデータを取得するデータ取得手段を有し、
    前記データ取得手段は、前記ベクトルロード命令より前に存在する未完了の分岐命令の数を示す分岐レベルに応じて、前記主記憶装置から前記ベクトルデータを取得する命令を前記プロセッサネットワーク部に対して発行するか否か判断する
    情報処理装置。
  9. 請求項8に記載の情報処理装置であって、
    前記データ取得手段は、前記分岐レベルと予め定められた分岐レベル閾値とに基づいて、前記主記憶装置から前記ベクトルデータを取得する命令を発行するか否か判断するよう構成され、
    前記プロセッサネットワーク部は、当該プロセッサネットワーク部の負荷を観測する負荷監視手段を有し、
    前記負荷監視手段は、前記プロセッサネットワーク部の負荷に応じて、前記分岐レベル閾値の値を制御する
    情報処理装置。
  10. 請求項9に記載の情報処理装置であって、
    前記負荷監視手段は、予め定められた情報に基づいて特定される前記プロセッサコアの前記分岐レベル閾値の値を制御する
    情報処理装置。
JP2017053917A 2017-03-21 2017-03-21 メモリアクセス装置、命令制御方法、プログラム、情報処理装置 Active JP6849949B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017053917A JP6849949B2 (ja) 2017-03-21 2017-03-21 メモリアクセス装置、命令制御方法、プログラム、情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017053917A JP6849949B2 (ja) 2017-03-21 2017-03-21 メモリアクセス装置、命令制御方法、プログラム、情報処理装置

Publications (2)

Publication Number Publication Date
JP2018156497A JP2018156497A (ja) 2018-10-04
JP6849949B2 true JP6849949B2 (ja) 2021-03-31

Family

ID=63716579

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017053917A Active JP6849949B2 (ja) 2017-03-21 2017-03-21 メモリアクセス装置、命令制御方法、プログラム、情報処理装置

Country Status (1)

Country Link
JP (1) JP6849949B2 (ja)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69425311T2 (de) * 1993-10-18 2001-03-15 National Semiconductor Corp.(N.D.Ges.D.Staates Delaware), Santa Clara Mikroprozessor mit spekulativer Befehlsausführung
US5611063A (en) * 1996-02-06 1997-03-11 International Business Machines Corporation Method for executing speculative load instructions in high-performance processors
JP5419134B2 (ja) * 2009-03-04 2014-02-19 エヌイーシーコンピュータテクノ株式会社 ベクトルプロセッサ及びベクトル命令発行方法
JP5240270B2 (ja) * 2010-10-12 2013-07-17 日本電気株式会社 プロセッサ及びベクトルロード命令の実行方法
JP5648645B2 (ja) * 2012-03-02 2015-01-07 日本電気株式会社 ベクトル処理装置、ベクトルロード命令実行方法、及びベクトルロード命令実行プログラム

Also Published As

Publication number Publication date
JP2018156497A (ja) 2018-10-04

Similar Documents

Publication Publication Date Title
US9015451B2 (en) Processor including a cache and a scratch pad memory and memory control method thereof
JP5498505B2 (ja) データバースト間の競合の解決
US8850167B2 (en) Loading/discarding acquired data for vector load instruction upon determination of prediction success of multiple preceding branch instructions
JP2010108153A (ja) スケジューラ、プロセッサシステム、プログラム生成方法およびプログラム生成用プログラム
JP2006195823A (ja) Dma装置
WO2014082421A1 (zh) 一种众核处理器进程间相互通信的方法、装置及系统
JPWO2008155834A1 (ja) 処理装置
US20130036426A1 (en) Information processing device and task switching method
JP2006338538A (ja) ストリームプロセッサ
KR100884011B1 (ko) 멀티프로세서 시스템
JP6849949B2 (ja) メモリアクセス装置、命令制御方法、プログラム、情報処理装置
US20140297956A1 (en) Arithmetic processing apparatus, information processing apparatus and control method of arithmetic processing apparatus
US20140089586A1 (en) Arithmetic processing unit, information processing device, and arithmetic processing unit control method
US9678752B2 (en) Scheduling apparatus and method of dynamically setting the size of a rotating register
JP2015191604A (ja) 制御装置、制御プログラム、および制御方法
JP5344316B2 (ja) ベクトル演算処理装置
JP4170330B2 (ja) 情報処理装置
US10223264B2 (en) Data access control apparatus
JP6251417B2 (ja) ストレージシステム、及び、記憶制御方法
US20220413890A1 (en) Information processing apparatus, computer-readable recording medium having stored therein information processing program, and method for processing information
JP6358330B2 (ja) 情報処理装置、情報処理システム、メモリ管理方法およびメモリ管理プログラム
JP2015169956A (ja) ストレージ装置、情報処理装置、キャッシュ制御プログラム及びキャッシュ制御方法
JP2005025693A (ja) ベクトル処理装置およびベクトルロード方法
JP7151439B2 (ja) 演算処理装置および演算処理装置の制御方法
JP6926681B2 (ja) 演算処理装置及び演算処理装置の制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200212

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210126

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210203

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210216

R150 Certificate of patent or registration of utility model

Ref document number: 6849949

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150