(57)【要約】      （修正有）【課題】複数の演算処理装置間で、管理データの順序保証、例えば、主記憶へのアクセスに対応する管理データの設定前に、当該管理データを読み出さないようにするような制御を可能にする。【解決手段】自装置に対応する主記憶装置をそれぞれ管理するともに、他の演算処理装置が管理する他の主記憶装置に他の演算処理装置を通じてアクセス可能な演算処理装置において、自装置に対応する主記憶装置と他の主記憶装置のそれぞれの記憶領域ごとに、記憶領域がアクセスされたときに設定される管理データの設定または読み出しを行う管理データ制御部と、自装置に対応する主記憶装置２Ａ又は他の主記憶装置のいずれかの記憶領域にアクセスされた場合、アクセスされた記憶領域に対応する管理データの読み出しよりも管理データの設定を優先して実行させる要求処理部と、を備える。【選択図】図４
2015170313.tif 000002
【特許請求の範囲】
【請求項１】
自装置に対応する主記憶装置をそれぞれ管理するともに、他の演算処理装置が管理する他の主記憶装置に前記他の演算処理装置を通じてアクセス可能な演算処理装置において、
前記自装置に対応する主記憶装置と前記他の主記憶装置のそれぞれの記憶領域ごとに、前記記憶領域がアクセスされたときに設定される管理データの設定または読み出しを行う管理データ制御部と、
前記自装置に対応する主記憶装置又は前記他の主記憶装置のいずれかの記憶領域にアクセスされた場合、アクセスされた前記記憶領域に対応する管理データの読み出しよりも前記管理データの設定を優先して実行させる要求処理部と、を備える演算処理装置。
【請求項２】
前記要求処理部は、前記管理データの設定を要求する設定要求を記憶する第１の先入れ先出し記憶部と、
前記管理データの読み出しを要求する読み出し要求を記憶する第２の先入れ先出し記憶部と、
前記第２の先入れ先出し記憶部からの読み出し要求よりも前記第１の先入れ先出し記憶部からの設定要求を優先して選択する選択回路と、を有する請求項１に記載の演算処理装置。
【請求項３】
前記管理データ制御部は、書き込み要求が完了したことを示す応答が返されない命令により、前記管理データを前記主記憶装置に設定する請求項１または２に記載の演算処理装置。
【請求項４】
自装置に対応する主記憶装置をそれぞれ管理するともに、他の演算処理装置が管理する他の主記憶装置に前記他の演算処理装置を通じてアクセス可能な演算処理装置の制御方法において、
前記自装置に対応する主記憶装置又は前記他の主記憶装置の記憶領域にアクセスするステップと、
前記自装置に対応する主記憶装置又は前記他の主記憶装置のいずれかの記憶領域にアクセスされた場合、主記憶装置のそれぞれの記憶領域ごとに設けられた、アクセスされた前記記憶領域に対応する管理データの読み出しよりも前記管理データの設定を優先して実行させる処理ステップと、を有する演算処理装置の制御方法。
【請求項５】
前記処理ステップは、
前記管理データの設定を要求する設定要求を第１の先入れ先出し記憶部に記憶するステップと、
前記管理データの読み出しを要求する読み出し要求を第２の先入れ先出し記憶部に記憶するステップと、
前記第２の先入れ先出し記憶部からの読み出し要求よりも前記第１の先入れ先出し記憶部からの設定要求を優先して選択するステップと、を有する請求項４に記載の演算処理装置の制御方法。
【請求項６】
書き込み要求が完了したことを示す応答が返されない命令により、前記管理データを前記主記憶装置に設定するステップをさらに有する請求項４または５に記載の演算処理装置の制御方法。
【請求項７】
自装置に対応する主記憶装置をそれぞれ管理するともに、他の演算処理部が管理する他の主記憶装置に前記他の演算処理部を通じてアクセス可能な複数の演算処理部を有する演算処理装置であって、前記それぞれの演算処理部が、
前記自装置に対応する主記憶装置と前記他の主記憶装置のそれぞれの記憶領域ごとに、
前記記憶領域がアクセスされたときに設定される管理データの設定または読み出しを行う管理データ制御部と、
前記自装置に対応する主記憶装置又は前記他の主記憶装置のいずれかの記憶領域にアクセスされた場合、アクセスされた前記記憶領域に対応する管理データの読み出しよりも前記管理データの設定を優先して実行させる要求処理部と、を備える演算処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置および演算処理装置の制御方法に関する。
【背景技術】
【０００２】
メインフレーム等、情報処理装置の演算処理装置には、主記憶の一定記憶領域ごと、例えば４ＫＢごとにＫＥＹデータという主記憶管理のためのデータが存在するものがある。一定領域ごとのＫＥＹデータは、例えば、それぞれ対応する一定領域の参照（Ｒ  ｂｉｔ）と更新（Ｃ  ｂｉｔ）を表現する。演算処理装置のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）や、ＣＰＵに含まれるコアが主記憶内のある記憶領域へストア（ＳＴ）命令を発行すると、ストア命令の発行に伴って、以下の処理がなされる。すなわち、Ｒ  ｂｉｔとＣ  ｂｉｔを更新する更新要求（ＳＥＴ−ＲＣと呼ぶことにする）がＫＥＹデータを管理するＫＥＹ制御部へ発行される。以下、ＣＰＵあるいはＣＰＵに含まれるコアをプロセッサ、あるいは演算処理装置ともいう。ただし、演算処理装置が複数のＣＰＵを有し、各ＣＰＵが複数のコアを有する場合もある。さらに、以下、ＫＥＹデータを管理データと呼ぶことにする。
【０００３】
実際に記憶領域にストアされたデータと、データがストアされた記憶領域の管理データには、整合性が保たれていることが求められる。ストア対象のデータを別のプロセッサが参照したとき、書き込み後の最新データに伴って発行された管理データの更新要求が処理されていることが、例えば、システム管理上要求される。なお、演算処理装置において、管理データ（ＫＥＹデータ）を参照する参照命令としては、ＩＳＫ（Ｉｎｓｅｒｔ  Ｓｔｏｒａｇｅ  Ｋｅｙ）命令が例示される。例えば、ＩＳＫ命令は、オペランドで指定されたレジスタに対して、指定された主記憶のアドレスに対応するＫＥＹデータを主記憶から読み出してセットする。ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）は、例えば、ＩＳＫ命令を用いて主記憶のＲ  ｂｉｔ、Ｃ  ｂｉｔ等を読み出し、仮想記憶におけるページの入れ替え時に、どのページを先に追い出すか等の判断に使用する。ＯＳは、例えば、頻繁に更新、参照されるページは極力追い出さないようにページを管理すればよい。
【０００４】
演算処理装置においては、ロード（ＬＤ）命令で新データが参照された後に発行される管理データの参照命令によって、ストア（ＳＴ）命令発行前の管理データが参照できない制御がなされている。
【０００５】
例えば、演算処理装置が、複数のプロセッサとして、ＣＰＵ０とＣＰＵ１とを有する場合の主記憶へのストアとロードの処理は、以下のように例示される。
１．ＣＰＵ０  ＳＴ  （Ａ）  ・・・  ＣＰＵ０がＡというアドレスにデータをストアした。ストアに伴って、ＳＥＴ−ＲＣ  （Ａ）が発行される。
２．ＣＰＵ１  ＬＤ  （Ａ）  ・・・  ＣＰＵ１がＡというアドレスのデータを読み出した。
３．ＣＰＵ１  ＩＳＫ  （Ａ）  ・・・  ＣＰＵ１がＡというアドレスを含む一定範囲の記憶領域に対応するＫＥＹデータを読み出す命令を発行する。
【０００６】
手順２でロードしたときに、手順１でストアしたデータが参照された場合、手順３で発行したＩＳＫ（管理データの参照命令）は、手順１でのＳＥＴ−ＲＣ（管理データの更新要求）後のＫＥＹデータ（管理データ）を参照する結果となるように、ＫＥＹデータの設定と参照との関係が制御されている。
【０００７】
図１に、主記憶へのアクセスレイテンシがどのＣＰＵからも平等なＵＭＡ（Ｕｎｉｆｏ
ｒｍ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）型の大規模ＳＭＰ（Ｓｙｍｍｅｔｒｉｃ  ｍｕｌｔｉｐｒｏｃｅｓｓｉｎｇ）構成の演算処理装置の構成を例示する。図１の演算処理装置は、複数のシステムボードを有する。また、各システムボードは、複数のＣＰＵ（ＣＰＵ１−ＬＳＩ、ＣＰＵ２−ＬＳＩ、ＣＰＵ３−ＬＳＩ等）と、複数のＳＣ（Ｓｙｓｔｅｍ  Ｃｏｎｔｒｏｌｌｅｒ；  ＳＣ１−ＬＳＩ、ＳＣ２−ＬＳＩ、ＳＣ３−ＬＳＩ等）と、複数に区分された主記憶（ＭＥＭ、メインストレージ）とを有する。さらに、各ＣＰＵは、例えば、複数の演算コアと、キャッシュ制御部と、外部インターフェース部とを有する。一方、各ＳＣは、ＣＰＵポート部と、キャッシュＴＡＧ情報部と、メモリコントローラと、ＫＥＹ制御部とを有する。各ＣＰＵの外部インターフェース部と、それぞれのＣＰＵに対応するＳＣのＣＰＵポート部とが接続されている。また、各システムボードのＳＣは、他のシステムボードのＳＣと、例えば、インターコネクトと呼ばれる伝送路で接続される。
【０００８】
主記憶（図中ＭＥＭ）に対するアクセス命令は演算コアから発行される。アクセス命令の対象データが演算コア内に配置されたＬ１キャッシュでヒットしなかった場合には、アクセス命令がＬ２キャッシュへのアクセスとなって転送される。さらに、アクセス命令の対象データがＬ２キャッシュでヒットしなかった場合、ＣＰＵの外に別チップで存在するＳＣへと要求が伝達される。
【０００９】
外部インターフェース部は、演算コアからＳＣへの要求を送り出す。要求は外部インターフェース部経由でＳＣへと伝えられる。ＳＣは、キャッシュＴＡＧ情報と呼ばれる情報を保持している。キャッシュＴＡＧ情報は、アクセス対象のデータがどのＳＣの管理下にあるかを示す情報を含む。ＳＣは、例えば、ローカルパイプラインと呼ばれるパイプライン処理によってキャッシュＴＡＧ情報を参照する。さらに、ＳＣは、他のシステムボードに実装される別のＳＣと通信を行いながら、最終的に要求されたデータを格納するメモリを管理するメモリコントローラやＫＥＹ制御部へ要求を伝達する。ＳＣは、キャッシュＴＡＧ情報の示すアドレスを管理するメモリコントローラにアクセス命令を送る。メモリコントローラへのアクセス要求、あるいは他のＳＣとの通信は、グローバルパイプラインと呼ばれるパイプライン処理によって行われる。各ＳＣのグローバルパイプラインは、互いに同期して実行される。
【００１０】
なお、メモリコントローラはメインストレージとのデータのやり取りを行うユニットであり、ＫＥＹ制御部はＫＥＹデータを管理するユニットである。ＫＥＹデータに関係する要求においてはＳＣの内部は後続の要求が追い越すことはなく一旦受け付けられた要求は全てのＳＣで同期して動作することで到着順に処理される。
ところで、上述のように要求がＳＣに入ってからは、ＫＥＹデータに関係する要求の実行順序が保証される。一方、要求の発行元であるＣＰＵ側でもＫＥＹデータに関係する要求の実行順序を保証する仕組みが求められる。ところで、ＣＰＵの外部インターフェース部では要求種別ごとにキューが分かれている。つまり、ＣＰＵの外部インターフェース部は、要求された順序とは無関係にＳＣに対して、要求種別間で平等に要求を発行する。
【００１１】
図２に、演算処理装置内での要求の流れを例示する。図２において、ＣＰＵの外部インターフェース部の中にある２つの四角が要求種別毎に存在するキューを例示している。図２では先に説明したストア命令（ＳＴ）がＣＰＵ０で発行された後に、ＣＰＵ１からロード命令（ＬＤ）が発行された場合を例示している。図２のＳ１ではＣＰＵ０の演算コアがストア命令（ＳＴ）を実行し、それに伴い管理データ（ＫＥＹ）のＲＣ  ｂｉｔ更新要求であるＳＥＴ−ＲＣ要求が発行される。ＳＥＴ−ＲＣ要求は外部インターフェース部内のキューへセットされる。しかしこのＳＥＴ−ＲＣ要求は外部インターフェース部内のＳＥＴ−ＲＣキューの混み具合によっては直ちにＳＣへ発行されるとは限らない。その間に別のＣＰＵであるＣＰＵ１が、ＣＰＵ０によってストア（ＳＴ）されたアドレスに対してロード（ＬＤ）命令の要求（ＬＤ要求）を発行したとする（Ｓ２）。ＬＤ要求はＳＣを経由
して（Ｓ３）、実際にデータを保持しているＣＰＵ０へとデータの読み出し要求（吐き出し要求ともいう）が発行される（Ｓ４）。吐き出し要求を受けたＣＰＵ０の演算コアによって読み出されたデータは外部インターフェース部を経由してＳＣへと応答される。このときストア（ＳＴ）されて更新されたデータの読み出しがＳＥＴ−ＲＣを追い抜いてしまうと、管理データ（ＫＥＹ）が更新されていない状態でデータの更新が他のＣＰＵへ伝わってしまう。そのため、外部インターフェース部内のキュー取り出し部は、管理データ（ＫＥＹ）の設定要求（ＳＥＴ−ＲＣ）がキュー内からなくなるまで読み出し要求に対するデータの応答をＳＣへは発行しない。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特表２００３−５１２６７３号公報
【特許文献２】特開２００３−６７３５７号公報
【特許文献３】特開平１１−１６７５５７号公報
【特許文献４】特開２００３−３２３４１５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
上述のように、従来技術では、ＵＭＡ型のＳＭＰ構成の演算処理装置において、要求がＳＣ等のＣＰＵ外の制御部に入ってから、その制御部が他の制御部と連携することで後続の要求が先行する要求を追い抜かないようになっている。一方、要求がＳＣ等の制御部に入る前の順序保証は、ＣＰＵ側で追い越しが起こらない制御によってなされていた。しかしながら、図２のようにどのＣＰＵからもメモリが等距離にあるような構造（ＵＭＡ）である場合、主記憶へのアクセスに制御部（ＳＣ）間の連携通信が入るため、レイテンシが問題となる。つまり、ＣＰＵの半導体集積度の向上に伴い、このような主記憶のレイテンシの問題や部品点数の削減などの観点から次のような課題が生じる。すなわち、例えば、ＣＰＵ外で管理データ（ＫＥＹ）を制御する制御部（ＳＣ）をなくするとともに、複数ＣＰＵ間で主記憶の領域ごとにアクセス時間が均一とは限らないＮＵＭＡ（Non-Uniform Memory Access、ヌマ）型構造を取り入れることが望まれている。しかしながら、複数のコ
ア間、あるいは複数のプロセッサ間で管理データの順序を制御する制御部（ＳＣ）をなくそうとすると、管理データ（ＫＥＹ）特有の順序保証、例えば、主記憶へのアクセスに対応する管理データの設定前に、当該管理データを読み出さないようにするような制御をどのように実現するか、という課題が生じる。
【課題を解決するための手段】
【００１４】
開示の技術の一側面は、自装置に対応する主記憶装置をそれぞれ管理するともに、他の演算処理装置が管理する他の主記憶装置に前記他の演算処理装置を通じてアクセス可能な演算処理装置によって例示される。本演算処理装置は、前記自装置に対応する主記憶装置と前記他の主記憶装置のそれぞれの記憶領域ごとに、前記記憶領域がアクセスされたときに設定される管理データの設定または読み出しを行う管理データ制御部と、前記自装置に対応する主記憶装置又は前記他の主記憶装置のいずれかの記憶領域にアクセスされた場合、アクセスされた前記記憶領域に対応する管理データの読み出しよりも管理データの設定を優先して実行させる要求処理部と、を備える。
【発明の効果】
【００１５】
本演算処理装置によれば、複数の演算処理装置間で、管理データの順序保証、例えば、主記憶へのアクセスに対応する管理データの設定前に、当該管理データを読み出さないようにするような制御が可能となる。
【図面の簡単な説明】
【００１６】
【図１】ＵＭＡ型の大規模ＳＭＰ構成の演算処理装置の構成を例示する図である。
【図２】演算処理装置内での要求の流れを例示する図である。
【図３】実施例１に係るＮＵＭＡ型の演算処理装置１０の構成を例示する図である。
【図４】ＫＥＹリクエスト処理部の構成を例示する図である。
【図５】比較例に係る演算処理装置の制御シーケンスチャートを例示する図である。
【図６】比較例に係る演算処理装置の制御シーケンスチャートを例示する図である。
【図７】実施例１の方式を適用したシーケンスチャートを例示する図である。
【図８】実施例２に係るキーリクエスト処理部の構成を例示する図である。
【発明を実施するための形態】
【００１７】
以下、図面を参照して、一実施形態に係る演算処理装置について説明する。以下の実施形態の構成は例示であり、本演算処理装置は実施形態の構成には限定されない。以下の実施例１、２では、メモリコントローラやＫＥＹ制御部などの機能をＣＰＵに内蔵し、メモリをＣＰＵ直結にすることでメモリレイテンシを削減しＮＵＭＡ（Ｎｏｎ−Ｕｎｉｆｏｒｍ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）構成が実現される。ただし、ＮＵＭＡ構成ではＳＣが存在しない。このため、図２に例示した仕組みでは、ＫＥＹデータ（管理データに相当）への要求の順序保証を行うことができない。そこで、以下の実施例１、２では、ＫＥＹデータへの要求の順序制御を行う新たな回路が提案される。
【００１８】
［実施例１］
図３から図７を参照して、実施例１に係る演算処理装置を説明する。図３に、実施例１に係るＮＵＭＡ型の演算処理装置１０の構成を例示する。演算処理装置１０は、複数のＣＰＵ０，  ＣＰＵ１等と、ＣＰＵ０およびＣＰＵ１等からアクセスされる主記憶（ＭＥＭ）２を有する。ただし、図３では、ＣＰＵ０の管理化にある主記憶２の部分を主記憶２Ａといい、ＣＰＵ１の管理化にある主記憶の部分を主記憶２Ｂという。主記憶２Ａ、２Ｂを総称する場合には、主記憶２ということにする。主記憶２Ａ、２Ｂが主記憶装置の一例である。ここで、主記憶２Ａ（２Ｂ）がＣＰＵ０（ＣＰＵ１）の管理化にあるとは、例えば、ＣＰＵ０（ＣＰＵ１）が、主記憶２Ａへのデータ書き込み、および読み出しを行うとともに、主記憶２Ａ（２Ｂ）の状態を管理していることをいう。また、主記憶２Ａ（２Ｂ）の状態としては、主記憶２Ａ（２Ｂ）のデータがＣＰＵ０（ＣＰＵ１）以外の他のＣＰＵにＣＰＵ０（ＣＰＵ１）を介して引き渡されて、読み出し中であるような状態が例示される。ＣＰＵ０（ＣＰＵ１）は、自身が管理する主記憶２Ａ（２Ｂ）にアクセスするとともに、相手のＣＰＵ１（ＣＰＵ０）を介して、相手のＣＰＵ１（ＣＰＵ０）が管理する主記憶２Ｂ（２Ａ）にアクセスする。したがって、演算処理装置１０は、ＣＰＵ０，ＣＰＵ１等から主記憶２Ａ、２Ｂへのアクセス時間が非均等なシステムであるＮＵＭＡ型のシステムであるということができる。なお、ＣＰＵ０、ＣＰＵ１は、演算処理部の一例である。ただし、ＣＰＵ０、ＣＰＵ１は、演算処理装置の一例ということもできる。
【００１９】
＜ＣＰＵの構成＞
演算処理装置１０内の各ＣＰＵ、例えば、ＣＰＵ０とＣＰＵ１とは、インターコネクトと呼ばれる伝送路３により接続されている。
【００２０】
さらに、例えば、ＣＰＵ０は、演算コア１１Ａ、メモリコントローラ１２Ａ、キャッシュ制御部１３Ａ、ＫＥＹ制御部１４Ａ、およびＫＥＹリクエスト処理部１５Ａを有している。なお、他のＣＰＵ、例えば、ＣＰＵ１も、ＣＰＵ０と同様に、演算コア１１Ｂ、メモリコントローラ１２Ｂ、キャッシュ制御部１３Ｂ、ＫＥＹ制御部１４Ｂ、およびＫＥＹリクエスト処理部１５Ｂを有している。以下、ＣＰＵ０を例にして、各ＣＰＵの構成および作用を例示する。なお、総称する場合には、ＣＰＵ０、ＣＰＵ１をＣＰＵと呼び、演算コア１１Ａ、１１Ｂを演算コア１１と呼び、メモリコントローラ１２Ａ、１２Ｂをメモリコントローラ１２と呼ぶことにする。同様に、総称する場合には、キャッシュ制御部１３Ａ
、１３Ｂをキャッシュ制御部１３と呼び、ＫＥＹ制御部１４Ａ、１４ＢをＫＥＹ制御部１４と呼び、ＫＥＹリクエスト処理部１５Ａ、１５ＢをＫＥＹリクエスト処理部１５と呼ぶことにする。
【００２１】
演算コア１１Ａは、主記憶２Ａに実行可能に展開されたコンピュータプログラムの命令を実行することにより、メモリコントローラ１２Ａを介して、ＣＰＵ０が管理する主記憶２ＡあるいはＣＰＵ１等が管理する主記憶２Ｂ等に格納されたデータを処理する。なお、演算コア１１Ａは、ＣＰＵ１等が管理する主記憶２Ｂ等に格納されたデータを処理する場合には、適切なタイミングで伝送路３を介して、ＣＰＵ１から処理対象のデータを取得し、適切なタイミングで、ＣＰＵ１へ処理後のデータを引き渡す。
【００２２】
メモリコントローラ１２Ａは、主記憶２Ａのデータを管理する。例えば、メモリコントローラ１２Ａは、ＣＰＵ０の要求に応じて、主記憶２Ａのデータを取得し、ＣＰＵ０に引き渡す。
【００２３】
キャッシュ制御部１３Ａは、図示しないキャッシュメモリへのデータの格納、読み出し等を実行する。また、キャッシュ制御部１３Ａは、キャッシュＴＡＧ情報を保持し、演算コア１１Ａから要求されたデータの管理先を判定する。例えば、要求されたデータがＣＰＵ１で管理されている場合には、キャッシュ制御部１３Ａは、ＣＰＵ１のキャッシュ制御部１３Ｂを介して、ＣＰＵ１が管理する主記憶２Ｂのデータを取得する。また、キャッシュ制御部１３Ａは、ＣＰＵ１のキャッシュ制御部１３Ｂの要求に応じて、ＣＰＵ０が管理する主記憶２Ａに格納されたデータをキャッシュ制御部１３Ｂに引き渡す。さらに、キャッシュ制御部１３Ａは、適切なタイミングでキャッシュ制御部１３Ｂを介して、ＣＰＵ１で処理されたデータを受け取り、ＣＰＵ０が管理する主記憶２Ａに格納する。ＣＰＵ１のキャッシュ制御部１３Ｂの制御もキャッシュ制御部１３Ａの制御と同様である。また、ＣＰＵの数が３以上の場合も、キャッシュ制御部１３の制御は、キャッシュ制御部１３Ａと同様である。
【００２４】
ＫＥＹ制御部１４Ａは、ＣＰＵ０の演算コア１１Ａ、キャッシュ制御部１３Ａ、あるいは他のＣＰＵからのリクエストにしたがって、主記憶２ＡへのＫＥＹデータの設定、および主記憶２ＡからのＫＥＹデータの読み出しを実行する。なお、ＫＥＹデータ等の管理データが主記憶に書き込まれる場合には、管理データを書き込むための書き込み要求が実際に完了したことを示す応答が返されない突き放し型と呼ばれる書き込み命令（posted write命令ともいう）が用いられる。ＫＥＹ制御部１４Ａ、１４Ｂが管理データ制御部の一例である。
【００２５】
＜ＫＥＹリクエスト処理部の構成＞
本実施例１では、各ＣＰＵチップは、ＫＥＹリクエスト処理部というモジュールを有する。図４に、ＣＰＵ０のＫＥＹリクエスト処理部１５Ａの構成を例示する。ＫＥＹリクエスト処理部１５Ａは、ＫＥＹデータの設定または読み出し等の要求（以下、リクエストという）を受け付けるポート部１５１と、どのリクエストを受理するかを決定するプライオリティ部１５２と、選ばれたリクエストをＫＥＹ制御部１４Ａへと発行するための出力部である出力バッファ１５３を有する。
【００２６】
ポート部１５１と出力バッファ１５３はＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）によってリクエストを保持する。したがって、ポート部１５１と出力バッファ１５３においては、後続リクエストによる先行リクエストの追い越しは起こらない。ところで、リクエストには、自チップ内のコアから発生するローカルリクエストと他チップのコアが発行するリモートリクエストが存在する。これらのリクエストはＣＰＵチップ間接続インターフェースおよび図３の伝送路３によってＣＰＵ間でやり取りされる。さらに、リク
エストは２つのグループに分類される。２つの分類は、ＭＯ系リクエスト（Ｍｏｖｅ−Ｏｕｔ：ＫＥＹ書き込み系要求）とＭＩ系リクエスト（Ｍｏｖｅ−Ｉｎ：ＫＥＹ参照系要求）と呼ばれる。ＭＯ系リクエストが、設定要求の一例である。また、ＭＩ系リクエストが読み出し要求の一例である。
【００２７】
したがって、ポート部１５１は、ＭＯ系のリクエストを記憶するローカルＭＯ用のポート（ＬＭＯＰＴ）及リモートＭＯ用のポート（ＲＭＯＰＴ）と、ＭＩ系のリクエストを記憶するローカルＭＩ用のポート（ＬＭＩＰＴ）およびリモートＭＩ用のポート（ＲＭＩＰＴ）とを有する。なお、ローカルＭＯ用のポート（ＬＭＯＰＴ）とローカルＭＩ用のポート（ＬＭＩＰＴ）とは、自装置、つまりＣＰＵ０の演算コア１１Ａあるいはキャッシュ制御部１３Ａで発生したリクエストを記憶する。一方、リモートＭＯ用のポート（ＲＭＯＰＴ）とリモートＭＩ用のポート（ＲＭＩＰＴ）とは、ＣＰＵ０以外の他のＣＰＵ（ＣＰＵ１等）で発生したリクエストを記憶する。ＭＯ系のリクエストを記憶するローカルＭＯ用のポート（ＬＭＯＰＴ）及リモートＭＯ用のポート（ＲＭＯＰＴ）が、第１の先入れ先出し記憶部の一例である。また、ＭＩ系のリクエストを記憶するローカルＭＩ用のポート（ＬＭＩＰＴ）およびリモートＭＩ用のポート（ＲＭＩＰＴ）が、第２の先入れ先出し記憶部の一例である。
【００２８】
図４において、プライオリティ部１５２は２段の制御回路を有する。プライオリティ部１５２の第１段階の制御回路１５２１、１５２２は、ＭＯ系グループとＭＩ系グループに分けてリクエストを受ける。例えば、制御回路１５２１には、ローカルのＭＯとリモートのＭＯが入力される。また、制御回路１５２２には、ローカルのＭＩとリモートのＭＩが入力される。制御回路１５２１、１５２２のそれぞれが、各グループ内で優先されるポートを、例えば、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）の手順で決定する。つまり、制御回路１５２１、１５２２は、リクエストを保持しているポートの中で最も長い間選択されていなかったポートが選択されるような論理で動作する。制御回路１５２１、１５２２は、ＬＲＵによりポート間で偏り無くＫＥＹ制御部にリクエストを発行することを可能にしている。ただし、実施例１を含むいずれの実施形態においても、第１段階の制御回路のポート決定手順がＬＲＵに限定される訳ではない。
【００２９】
次に、第２段階の制御回路１５２３において、ＭＯ系とＭＩ系のプライオリティ選択が行われる。第２段階の制御回路１５２３は、ＭＯ系がＭＩ系より優先されて選択されるように制御する。以上のようなプライオリティ部１５２の構成により、ＫＥＹデータの更新系要求（ＭＯ系リクエスト）とＫＥＹの参照系要求（ＭＩ系リクエスト）との間の順序が保証されている。第１段階の制御回路１５２１、１５２２は、例えば、論理ゲートと、ＬＲＵのための処理の履歴を管理するカウンタ、フラグ等で実現される。また、第２段階の制御回路１５２３は、論理ゲート等で実現される。ＫＥＹリクエスト処理部１５が要求処理部の一例である。
【００３０】
＜比較例のシーケンス＞
図５、図６に比較例に係る演算処理装置の制御シーケンスチャートを例示する。図５はＣＰＵ０が行ったストア（ＳＴ）命令の操作により発行されたＳＥＴ−ＲＣ命令がＣＰＵ０の外部インターフェース部内の送信バッファ部に残っている状態でＣＰＵ１からアドレス（Ａ）に対してデータのロード（ＬＤ）命令が発行された場合の動作を例示している。図のように要求されたデータの応答はＣＰＵ０内の外部インターフェース部で止められ、ＳＥＴ−ＲＣ（Ａ）が処理されＳＣへ発行されるまでロード（ＬＤ）命令が先に処理されることはない。
【００３１】
図６は図５の状態の続きでＳＥＴ−ＲＣ（Ａ）が処理された後のシーケンスを例示している。ＣＰＵ０の外部インターフェース部でロード（ＬＤ）命令の応答をＳＣへ返すこと
ができ、要求データは要求元であるＣＰＵ１へと応答される。応答データの到着を期にＣＰＵ１上でＬＤ（Ａ）命令を発行したプログラムの後続命令であるＩＳＫ（Ａ）命令が発行される。ＩＳＫ（Ａ）命令はメインストレージ上にあるＫＥＹデータを読み出してＣＰＵのレジスタにセットする動作を行う。比較例のシーケンスでは、ＩＳＫ（Ａ）命令が発行されるとき、既にＳＥＴ−ＲＣ（Ａ）は処理された後なので、ＫＥＹデータが突き放し型の書き込み命令（posted write命令）で設定される場合でも、ＫＥＹデータの順序を保証した動作が可能となる。
【００３２】
＜実施例１のシーケンス＞
図７に実施例１の方式を適用したシーケンスチャートを例示する。上記比較例での処理と同様に、ＣＰＵ０がストア（ＳＴ）命令を実行することによってＳＥＴ−ＲＣ（Ａ）命令がＫＥＹリクエスト処理部１５へ送られる。このとき、ＳＥＴ−ＲＣ（Ａ）命令の処理を担当するＫＥＹリクエスト処理部１５はＣＰＵ０側にあってもよいし、ＣＰＵ１側にあってもよい。例えば、自ＣＰＵが管理する主記憶の部分に含まれないアドレスへのＫＥＹリクエスト処理部へはチップ間インターコネクトを使って、ＳＥＴ−ＲＣ（Ａ）命令のアドレス（Ａ）を管理するＣＰＵにリクエストが送出される。なお、主記憶の部分、例えば、主記憶２Ａを管理するＣＰＵと、主記憶２ＡのＫＥＹを管理するＣＰＵが一致しなくてもよい。例えば、ＣＰＵ０が主記憶２Ａを管理し、ＣＰＵ１が主記憶２ＡのＫＥＹデータを管理してもよい。
【００３３】
図７では（Ａ）というアドレスを担当しているのがＣＰＵ０のＫＥＹリクエスト処理部１５Ａだった場合を表している。この時点では、リクエストは、ＫＥＹリクエスト処理部１５Ａのポート部１５１にセットされているが、実際のＳＥＴ−ＲＣの操作は実行されていない。ここでは仮に他のＫＥＹリクエスト処理が集中してこのＳＥＴ−ＲＣ（Ａ）がポート部１５１内に滞留しているものと仮定する。このとき、ＣＰＵ１側からロード（ＬＤ（Ａ））命令が発行されると、図７の処理は図５、６の処理とは異なり、ＣＰＵ０は、ＳＥＴ−ＲＣ（Ａ）の処理を待たずに、ロード（ＬＤ（Ａ））命令の応答を要求元のＣＰＵ１に返すことができる。ＣＰＵ１上でロード（ＬＤ（Ａ））命令を発行したプログラムはロード（ＬＤ（Ａ））命令の応答を受け取ったのを期にＩＳＫ（Ａ）命令を発行する。ＩＳＫ（Ａ）命令はアドレス（Ａ）を担当するＣＰＵ０のＫＥＹリクエスト処理部１５Ａへチップ間インターコネクトである伝送路３を経由して通知される。
【００３４】
したがって、図７の例では、ＫＥＹリクエスト処理部１５ＡにはＳＥＴ−ＲＣ（Ａ）とＩＳＫ（Ａ）がポートに同時に存在することになる。しかし、実施例１の優先順序を制御するプライオリティ部１５２の制御回路１５２１、１５２２、および１５２３によりＭＩ系リクエストがＭＯ系リクエストを追い抜くことはできない。このため、図７の例では、ＳＥＴ−ＲＣ（Ａ）が先に処理される。Ｍ０系リクエストに対応するＳＥＴ−ＲＣ（Ａ）命令の処理順序はＫＥＹリクエスト処理部１５Ａのポート部１５１にセットされた時点でＭＩ系リクエストより先に処理されることが確定する。このため、ＳＥＴ−ＲＣ（Ａ）命令を発行したＣＰＵ０はＫＥＹリクエスト処理部１５Ａのポート部１５１にセットした時点で、ＳＥＴ−ＲＣ（Ａ）命令の処理完了を待つことなく、後続の処理、例えば、ＣＰＵ１からのロード（ＬＤ（Ａ））命令に対応する応答をＣＰＵ１に返す処理を続けることができる。プライオリティ部１５２は、選択回路の一例である。
【００３５】
＜実施例１の効果＞
実施例１のリクエスト処理部１５によれば、ＫＥＹリクエスト処理部１５のポート部１５にリクエストがセットされた時点で、処理順序を守って、リクエストが処理されることが保証できる。したがって、例えば、ＣＰＵは、ＫＥＹデータを突き放し型の書き込み命令（posted write命令）で設定する場合でも、リクエストをポート部１５１にセットした時点で、リクエストの処理完了とみなして次のリクエストの発行、処理の続行等が可能と
なる。
【００３６】
また、図３に例示したように、実施例１の演算処理装置１０は、ＳＣの機能をＣＰＵに内蔵し、ＣＰＵ外部のＳＣを無くした。このため、ＬＳＩ間通信が減りレイテンシが削減される。また部品点数が削減される。
【００３７】
比較例の方式ではＣＰＵ０でストア（ＳＴ）された後のデータをＣＰＵ１がロード（ＬＤ）したものをＣＰＵ外部インターフェース部で順序を保証していたが、実施例１の方式では後続のＫＥＹデータの参照要求はＫＥＹデータ書き込み要求の後に処理されることが保証される。このため、例えば、図７に例示したように、実施例１のＣＰＵは、少なくとも自身が管理する主記憶の部分のデータの読み出し要求に対しては、読み出し要求対象のデータに対応するＫＥＹデータの書き込みと無関係に、読み出し要求対象のデータを応答可能である。
【００３８】
［実施例２］
図８を参照して、実施例２にかかる演算処理装置のＫＥＹリクエスト処理部１５Ｃを説明する。上記実施例１では、ポート部１５１に入力されたリクエストをプライオリティ部１５２により、ＭＩ系リクエストよりＭ０系リクエストを優先して処理するＫＥＹリクエスト処理部１５について説明した。実施例１のポート部１５１は、図４のように、ローカルＭＯ用のポート、リモートのＭＯ用のポート、ローカルのＭＩ用のポート、およびリモートＭＩ用のポートを有している。実施例２では、実施例１よりもさらに複雑なポート部を有するＫＥＹリクエスト処理部を例示する。実施例２の演算処理装置の他の構成は、実施例１の演算処理装置１０と同様である。そこで、同一の構成要素については、同一の符号を付してその説明を省略する。
【００３９】
図８は、実施例２に係るキーリクエスト処理部１５Ｃの構成を例示する。実施例２のリクエスト処理部１５Ｃも、実施例１の場合と同様、ポート部１５１Ｃ、プライオリティ部１５２Ｃ、出力バッファ１５３Ｃ、１５３Ｄを有する。
【００４０】
図８のように、実施例２のキーリクエスト処理部１５Ｃでは、実施例１のキーリクエスト処理部１５と比較して、ポート部１５１Ｃの構成が複雑となっている。すなわち、ポート部１５１Ｃは、ローカルのＭＯ／ＭＩ用のポート（ＬＭＯＰＴ、ＬＭＩＰＴ）、リモートのＭＯ／ＭＩ用のポート（ＲＭＯＰＴ、ＲＭＩＰＴ）に加えて、ＬＫＲＰＴが４つ追加されている（ＬＫＲＰＴ００、ＬＫＲＰＴ０１、ＬＫＲＰＴ１０、ＬＫＲＰＴ１１）。実施例１で説明したように、ＬＭＯＰＴ、ＬＭＩＰＴ、ＲＭＯＰＴ、ＲＭＩＰＴには、それぞれ、ローカルのＣＰＵのコアから発行されるＭＯ系リクエスト、ＭＩ系リクエスト、リモートのＣＰＵのコアから発行されるＭＯ系リクエスト、ＭＩ系リクエストが入力される。
【００４１】
また、図８では、Ｌ２キャッシュは、４つにアドレスインターリーブされ、ＳＸ００、ＳＸ０１、ＳＸ１０、ＳＸ１１で例示され、ＫＥＹリクエスト処理部１５Ｃに接続されている。上記４つのポートＬＫＲＰＴ００、ＬＫＲＰＴ０１、ＬＫＲＰＴ１０、ＬＫＲＰＴ１１には、Ｌ２キャッシュから発行されるメモリアクセスに付随するＫＥＹアクセスの要求が入力される。すなわち、ＣＰＵからの主記憶へのアクセス要求は、インターリーブされたＬ２キャッシュを通じて、各ポートにセットされる（ＬＫＲＰＴ００／０１／１０／１１）。ローカルのＭＯ用のポート（ＬＭＯＰＴ）、リモートのＭＯの用ポート（ＲＭＯＰＴ）が第１の先入れ先出し記憶部の一例である。また、ローカルのＭＩ用のポート（ＬＭＩＰＴ）、リモートのＭＩ用のポート（ＲＭＩＰＴ）、および４つのポートＬＫＲＰＴが、第２の先入れ先出し記憶部の一例である。また、キーリクエスト処理部１５Ｃが、要求処理部の一例である。
【００４２】
図８では、さらに、リモートのＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）のルータ（ＲＴ）がＫＥＹリクエスト処理部１５Ｃに接続されている。ＭＯ系ＫＥＹリクエストは、ＲＴ（ルータ）受信部となるＲＭＯＰＴにおいて、後続のパケットに追い越されないことが保証される。ＲＭＯＰＴにおいて、パケットの追い越しが発生しないことが、データとＫＥＹの順序性保証のための要件となる。そのため、送信側ＬＳＩのルータ（ＲＴ）から受信側ＬＳＩのＲＭＯＰＴに受信したパケットがＲＭＯＰＴのビジーによりＲＴ内で待たされるがない制御が求められる。
【００４３】
そこで、例えば、ＲＭＯＰＴは到着する全てのリクエストを受けきるように制御される。到着する全てのリクエストを受けきるようにするために、送信側のリクエスト発行部（例えば、Ｌ２キャッシュ制御部）はリクエスト送出からＣＰＬＴ（Ｃｏｍｐｌｅｔｅ、完了応答）受信までクレジット管理を行う。一方、受信側のキーリクエスト処理部１５Ｃは、クレジット数と同じ数だけのエントリ数のＲＭＯＰＴを持つようにすればよい。
【００４４】
実施例２のプライオリティ部１５２Ｃは、実施例１と同様に、３つの制御回路１５２１Ｃ、１５２２Ｃ、１５２３Ｃを有する。制御回路１５２１Ｃには、ポート部１５１Ｃのうち、ＭＩ系のリクエストを保持するポートＬＭＯＰＴ、ＲＭＯＰＴが接続される。また、制御回路１５２１Ｃには、ＬＭＯＰＴ、ＲＭＯＰＴ以外のポートが接続される。そして、実施例１と同様、制御回路１５２１Ｃ、１５２１Ｃ内では、それぞれ、たとえば、ＬＲＵにしたがってリクエストが処理される。そして、制御回路１５２３Ｃは、制御回路１５２２Ｃからのリクエスト（ＭＩ系リクエストおよびＬ２キャッシュからのリクエスト）よりも、制御回路１５２１ＣからのＭＯ系のリクエストを優先して、出力バッファ１５３Ｃ、１５３Ｄに出力する。プライオリティ部１５２Ｃは、選択回路の一例である。
【００４５】
出力バッファ１５３Ｃ、１５３Ｄは、アドレスインターリーブされた主記憶に対応している。出力バッファ１５３Ｃ、１５３Ｄは、受けたリクエストをそれぞれアドレスインターリーブされた主記憶に対応するＫＥＹ制御部ＫＸ０、ＫＸ１に発行する。図中ＫＸ０／ＫＸ１とはＫＥＹ制御部であり、内部に最近使用したＫＥＹデータを保持できるキャッシュを備えてもよい。ＫＸ０／ＫＸ１は、例えば、メモリコントローラ（ＭＡＣ）に接続されており、ＭＡＣ経由で図示しない主記憶へと要求を発行する。
【００４６】
以上述べたように、図８に示したキーリクエスト処理部１５Ｃは、ＭＩ系のリクエストを他のＫＥＹデータへのリクエストよりも優先して処理する。そのため、実施例２のＫＲＹリクエスト処理部１５Ｃを有する演算処理装置のＣＰＵは、ポート部１５１Ｃにリクエストをセットした時点で、リクエストの処理完了とみなして次のリクエストの発行、あるいは処理の続行等が可能となる。演算処理装置のＣＰＵは、例えば、ＫＥＹデータを突き放し型の書き込み命令（posted write命令）で設定する場合でも、ポート部１５１Ｃにリクエストをセットした時点で、リクエストの処理完了とみなして次のリクエストの発行、あるいは処理の続行等が可能となる。
【符号の説明】
【００４７】
ＣＰＵ０、ＣＰＵ１  ＣＰＵ
２Ａ、２Ｂ  主記憶
３  伝送路
１１Ａ、１１Ｂ  演算コア
１２Ａ、１２Ｂ  メモリコントローラ
１３Ａ、１３Ｂ  キャッシュ制御部
１４Ａ、１４Ｂ  ＫＥＹ制御部
１５Ａ、１５Ｂ  ＫＥＹリクエスト処理部
１５１、１５１Ｃ  ポート部
１５２、１５２Ｃ  プライオリティ部
１５３、１５３Ｃ  出力バッファ
【図１】
2015170313.tif 000003
【図２】
2015170313.tif 000004
【図３】
2015170313.tif 000005
【図４】
2015170313.tif 000006
【図５】
2015170313.tif 000007
【図６】
2015170313.tif 000008
【図７】
2015170313.tif 000009
【図８】
2015170313.tif 000010