(57)【特許請求の範囲】
【請求項１】
演算ノードと、
複数のメモリモジュールと、
前記演算ノード及びメモリモジュールが接続されたネットワークと、
前記演算ノードが発行した入出力命令実行中に前記複数のメモリモジュールにアクセス要求を送信し、その完了を待たずに入出力完了通知を送信する入出力装置接続手段と、
前記入出力装置接続手段と前記ネットワークの間に接続され、前記入出力装置接続手段から前記アクセス要求を受信すると前記ネットワーク経由で前記メモリモジュールに転送し、前記ネットワーク経由で前記メモリモジュールからアクセス完了通知を受信し、前記アクセス要求がすべて完了するのを待ち合わせて、前記入出力装置接続手段から受信した前記入出力完了通知を前記ネットワーク経由で前記演算ノードまたは前記メモリモジュールに転送する入出力制御手段と、を包含する情報処理装置。
【請求項２】
前記入出力制御手段は、前記ネットワーク経由で前記演算ノードから前記入出力命令を受信して、前記入出力命令の内容に応じて、前記入出力完了通知の転送時に前記アクセス要求のすべての完了を待ち合わせるか否かを決定する、請求項１の情報処理装置。
【請求項３】
前記入出力命令の内容は、命令の種類、入出力装置のアドレス、オプションフィールドの指定値の何れかである、請求項２の情報処理装置。
【請求項４】
前記演算ノードは、待ち合わせ要否を表示するレジスタを備え、
前記入出力制御手段は、前記ネットワーク経由で前記演算ノードから前記入出力命令とともに前記レジスタの表示を受信して、前記レジスタの表示に応じて、前記入出力完了通知の転送時に前記アクセス要求のすべての完了を待ち合わせるか否かを決定する、請求項１の情報処理装置。
【請求項５】
前記入出力制御手段は、待ち合わせ要否を表示し、前記演算ノードから書き換え可能なレジスタを備え、前記レジスタの表示に応じて、前記入出力完了通知の転送時に前記アクセス要求のすべての完了を待ち合わせるか否かを決定する、請求項１の情報処理装置。
【請求項６】
前記入出力装置接続手段には、前記入出力完了通知の転送時に前記アクセス要求のすべての完了を待ち合わせるか否かの指定がなされており、
前記入出力制御手段は、前記入出力命令の対象となる前記入出力装置接続手段になされている指定に応じて、前記入出力完了通知の転送時に前記アクセス要求のすべての完了を待ち合わせるか否かを決定する、請求項１の情報処理装置。
【請求項７】
演算ノード及び複数のメモリモジュールが接続されたネットワークと、前記演算ノードが発行した入出力命令実行中に前記複数のメモリモジュールにアクセス要求を送信し、その完了を待たずに入出力完了通知を送信する入出力装置接続手段との間で、
前記入出力装置接続手段から前記アクセス要求を受信すると前記ネットワーク経由で前記メモリモジュールに転送し、前記ネットワーク経由で前記メモリモジュールからアクセス完了通知を受信し、前記アクセス要求がすべて完了するのを待ち合わせて、前記入出力装置接続手段から受信した前記入出力完了通知を前記ネットワーク経由で前記演算ノードまたは前記メモリモジュールに転送する方法。
【請求項８】
前記ネットワーク経由で前記演算ノードから前記入出力命令を受信して、前記入出力命令の内容に応じて、前記入出力完了通知の転送時に前記アクセス要求のすべての完了を待ち合わせるか否かを決定する、請求項７の方法。
【請求項９】
前記入出力命令の内容は、命令の種類、入出力装置のアドレス、オプションフィールドの指定値の何れかである、請求項８の方法。
【請求項１０】
演算ノード及び複数のメモリモジュールが接続されたネットワークと、前記演算ノードが発行した入出力命令実行中に前記複数のメモリモジュールにアクセス要求を送信し、その完了を待たずに入出力完了通知を送信する入出力装置接続手段との間に接続されたコンピュータに、請求項７乃至９の何れか１項の方法を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散共有メモリを有する情報処理装置、方法、および、プログラムに関する。
【背景技術】
【０００２】
特許文献１は、同一アドレスのメモリへの書き込み順序を保証する分散共有メモリを有するシステムを開示する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１１−２８２７４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１が開示するような、同一アドレスのメモリへの書き込み順序を保証する分散共有メモリシステムは、順序保証のための複雑な回路を必要とする。一方、特許文献１が開示するような種々の書き込み命令間で同一アドレスへの厳密な書き込み順序を保証する必要は無いのであるが、同一アドレスでなくても特定の命令間のメモリアクセスで順序の保証が欲しい場合もある。
【０００５】
例えば、分散共有メモリシステムが入出力命令を実行し、入出力データ転送、及び、入出力完了報告でメモリアクセスをした場合、当該データ転送完了と、入出力完了報告との間で順序が保障されていれば良い。但し、データ転送と入出力完了報告は、異なるアドレスをアクセスする場合がある。場合によって、入出力完了報告はメモリアクセスを伴わないことも有る。
【０００６】
本発明は、入出力命令におけるデータ転送の完了と、入出力完了報告との間で順序を保障する分散共有メモリを有する情報処理装置、方法、および、プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の１実施の形態の情報処理装置は、演算ノードと、複数のメモリモジュールと、前記演算ノード及びメモリモジュールが接続されたネットワークと、前記演算ノードが発行した入出力命令実行中に前記複数のメモリモジュールにアクセス要求を送信し、その完了を待たずに入出力完了通知を送信する入出力装置接続手段と、前記入出力装置接続手段と前記ネットワークの間に接続され、前記入出力装置接続手段から前記アクセス要求を受信すると前記ネットワーク経由で前記メモリモジュールに転送し、前記ネットワーク経由で前記メモリモジュールからアクセス完了通知を受信し、前記アクセス要求がすべて完了するのを待ち合わせて、前記入出力装置接続手段から受信した前記入出力完了通知を前記ネットワーク経由で前記演算ノードまたは前記メモリモジュールに転送する入出力制御手段と、を包含する。
【０００８】
本発明の１実施の形態の方法は、演算ノード及び複数のメモリモジュールが接続されたネットワークと、前記演算ノードが発行した入出力命令実行中に前記複数のメモリモジュールにアクセス要求を送信し、その完了を待たずに入出力完了通知を送信する入出力装置接続手段との間で、前記入出力装置接続手段から前記アクセス要求を受信すると前記ネットワーク経由で前記メモリモジュールに転送し、前記ネットワーク経由で前記メモリモジュールからアクセス完了通知を受信し、前記アクセス要求がすべて完了するのを待ち合わせて、前記入出力装置接続手段から受信した前記入出力完了通知を前記ネットワーク経由で前記演算ノードまたは前記メモリモジュールに転送する。
【発明の効果】
【０００９】
本発明にかかる分散共有メモリを有する情報処理装置は、入出力命令のメモリアクセスの完了と、当該入出力命令の完了通知の順序を保証することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、第１の実施の形態にかかる情報処理装置１０の構成図である。
【図２】図２は、主記憶装置５０の構成図である。
【図３】図３は、ＩＯ制御装置２０の構成図である。
【図４】図４は、第２の実施の形態にかかる情報処理装置１０の構成図である。
【発明を実施するための形態】
【００１１】
＜第１の実施の形態＞
図１は、本発明の第１の実施の形態にかかる情報処理装置１０の構成図である。情報処理装置１０は、１以上の演算ノード４０、ＩＯ制御装置２０（以降、ＩＰＢ）、及び、それらに共有される主記憶装置５０を包含する。複数の演算ノード４０は、例えば、演算ノード１乃至演算ノードｍ（ｍは自然数）である。
【００１２】
情報処理装置１０は、さらに、ＩＰＢに接続された１以上の入出力装置接続装置３０（以降、ＨＢＡ）を包含する。各ＨＢＡ配下（図１では上方）には、図示されない入出力装置、例えば、ハードディスク装置、ネットワーク装置が接続されている。
【００１３】
図２は、主記憶装置５０の構成図である。主記憶装置５０は、複数のメモリモジュール５２と主記憶ネットワーク装置５１（以降、ネットワーク）を包含する。複数のメモリモジュール５２は、例えば、メモリモジュール１乃至ｎ（ｎは複数）である。各メモリモジュール５２には、アドレスの範囲が割り当てられている。
【００１４】
ネットワークには、ｍ個の演算ノード４０、ｎ個のメモリモジュール５２、及び、ＩＯ制御装置２０が接続されている。
【００１５】
情報処理装置１０において、入出力命令（以降、ＩＯ命令）は、以下のように実行される。
【００１６】
１）演算ノード４０がＩＯ命令を発行する。発行されたＩＯ命令はネットワーク、及び、ＩＰＢを経由してＨＢＡに受信される。
【００１７】
２）ＨＢＡは、接続されている入出力装置を駆動して入出力を実行し、適切なメモリモジュール５２からデータを読んだり、適切なメモリモジュール５２にデータを書いたりする。適切なメモリモジュール５２とは、ＩＯ命令で指定されたアドレスのメモリ、例えば、ＩＯバッファ、を包含するメモリモジュール５２を意味する。１回のＩＯ命令の実行で、データ転送の対象となるメモリモジュール５２は、一つの場合も有るし、複数の場合も有る。
【００１８】
ＨＢＡは、メモリモジュール５２を読み書きするとき、アクセス要求（以降、メモリリクエスト）を発行し、完了応答（以降、メモリリプライ）を受信する。
【００１９】
入力装置から情報処理装置１０に入力されたデータやメモリリクエストは、ＨＢＡ、ＩＰＢ、ネットワーク、メモリモジュール５２の順に転送される。出力装置から外部に出力されたデータやメモリリプライは、逆順に転送される。
【００２０】
ＨＢＡが、複数のメモリモジュール５２に一連のメモリリクエストを発行した場合、アクセスが完了して、ＨＢＡにメモリリプライが届けられる順番はメモリリクエストの順番通りになるとは限らない。その理由は、各メモリモジュール５２は、独立に動作し、異なるトラフィック量を有するからである。
【００２１】
３）ＨＢＡは、ＩＯ命令の実行に必要となる一連のメモリリクエストを発行すると、ＩＯ命令を発行した演算ノード４０に、ＩＯ処理が完了したことを通知する。ＩＯ処理完了の通知の仕方には、ＩＯアクセス完了通知とＩＯアクセス完了アクセスの２種類がある。
【００２２】
ＩＯアクセス完了通知は、ＩＯ処理が完了したことを、ＩＯ命令を発行した演算ノード４０に直接通知する方法である。
【００２３】
ＩＯアクセス完了アクセスは、主記憶装置５０の指定されたメモリ領域に、ＩＯ命令が完了したことを示す内容を書き込む方法である。演算ノード４０は、該メモリ領域をメモリリードすることで、ＩＯ命令の完了を認識することができる。
【００２４】
図３は、ＩＰＢの構成図である。ＩＰＢは、ＩＯ命令実行に伴うすべてのメモリリクエストに対するメモリリプライが報告されるのを待って、ＩＯの完了通知を、ネットワークに転送する。すなわち、ＩＰＢは、ＩＯ命令のすべてのメモリリプライの報告に同期させて、ＩＯの完了通知をネットワークに流す機能を有する。
【００２５】
ＩＰＢは、アウトバウンドデータの流れを制御する制御するＯＢ制御部２１と、インバウンドデータの流れを制御するＩＢ制御部２２を包含する。ここで、アウトバウンドデータは、主記憶装置５０のネットワークからＨＢＡにむかうデータであり、インバウンドデータは、逆に、ＨＢＡから主記憶装置５０のネットワークに向かうデータである。
【００２６】
ＩＰＢは、ＨＢＡの個数分のＯＢ制御部２１、および、ＩＢ制御部２２を有する。各々のＯＢ制御部２１、および、ＩＢ制御部２２は、関連付けられたＨＢＡのＩＯ命令実行に伴うデータの流れを制御する。
【００２７】
ＩＰＢは、さらに、メモリアクセスの同期制御を行うために、メモリリクエスト制御部２３、メモリリプライ制御部２４、同期命令照合部２５、同期命令制御部２６を包含する。メモリリクエスト制御部２３は、ネットワークとＩＢ制御部２２の間に接続される。メモリリプライ制御部２４は、ネットワークとＯＢ制御部２１の間に接続される。同期命令照合部２５は、ＨＢＡとＯＢ制御部２１の間に接続される。同期命令制御部２６は、ＨＢＡとＩＢ制御部２２の間に接続される。
【００２８】
インバウンドデータは、例えば、メモリリクエスト、ＩＯ処理完了の通知であり、ＨＢＡから発して、順次、同期命令制御部２６、ＩＢ制御部２２、メモリリクエスト制御部２３、ネットワーク、メモリモジュール５２または演算ノード４０と転送される。
【００２９】
アウトバウンドデータは、例えば、ＩＯ命令、メモリリプライであり、メモリモジュール５２または演算ノード４０から発して、順次、ネットワーク、メモリリプライ制御部２４、ＯＢ制御部２１、同期命令照合部２５を経由して、ＨＢＡへ転送される。
【００３０】
ここで、ＯＢ制御部２１、ＩＢ制御部２２、メモリリクエスト制御部２３、メモリリプライ制御部２４、同期命令照合部２５、同期命令制御部２６は、論理回路で構成される。ＯＢ制御部２１、ＩＢ制御部２２、メモリリクエスト制御部２３、メモリリプライ制御部２４、同期命令照合部２５、または、同期命令制御部２６は、コンピュータでもあるＩＰＢの図示されないプロセッサで実行されるプログラムで実現されても良い。プログラムは、コンピュータでもあるＩＰＢの図示されないメモリに格納される。なお、このプログラムは、ファームウェアとも呼ばれる。
【００３１】
ＩＯ命令実行に伴うＩＰＢの動作は、以下のとおりである。
【００３２】
１）同期命令照合部２５は、ＯＢ制御部２１から転送されたＩＯ命令を、ＨＢＡに転送する。この時に、同期命令照合部２５は、ＨＢＡに送出するＩＯ命令に、各ＩＯ命令を識別するＩＤを付与する。
【００３３】
さらに、同期命令照合部２５は、受信したＩＯ命令が、同期処理が必要なＩＯ命令であるか否かを判断する。同期命令照合部２５は、例えば、ＩＯ命令の内容に応じてこの判断を行う。
【００３４】
例えば、ＩＯ命令に同期処理が必要な命令と不要な命令の２種類が有る場合、同期命令照合部２５は、ＩＯ命令のコマンドフィールドを参照して、受信したＩＯ命令が、同期処理が必要な種類なのか否かを判断する。
【００３５】
また、例えば、ＩＯ命令の対象となる入出力装置によって、同期処理の要否が決まる場合、同期命令照合部２５は、ＩＯ命令の入出力装置アドレスフィールドを参照して、受信したＩＯ命令に同期処理が必要なのか否かを判断する。
【００３６】
また、例えば、ＩＯ命令に同期処理の要否を指定するオプションが有る場合、同期命令照合部２５は、ＩＯ命令のオプションフィールドの指定値を参照して、同期処理が必要なオプション指定なのか否かを判断する。
【００３７】
同期処理が必要なＩＯ命令ならば、同期命令照合部２５は、同期命令制御部２６に該ＩＯ命令のＩＤを送付する。即ち、同期命令照合部２５から同期命令制御部２６に通知されたＩＤを付与されたＩＯ命令は、同期処理が必要なＩＯ命令である。
【００３８】
２）ＨＢＡは、同期命令照合部２５から受信したＩＯ命令のＩＤを保持する。ＨＢＡは、ＩＯ命令の内容に従い、ａ）メモリリクエストを発行した後、そのメモリリプライを待たずに、ｂ）ＩＯの完了通知を同期命令制御部２６に発行する。この時、ＨＢＡは、ＩＯ命令のＩＤをＩＯの完了通知に付与して同期命令制御部２６に送出する。
【００３９】
３）同期命令制御部２６は、ＨＢＡからＩＯの完了通知を受とったタイミングで、付与されているＩＤが、先に同期命令照合部２５から通知されたＩＤか否かを判定する。この判定が肯定的であれば、同期命令制御部２６は、ＩＯの完了通知に、同期処理用のフラグを添付し、これをＩＢ制御部２２経由で、メモリリクエスト制御部２３に転送する。
【００４０】
４）メモリリクエスト制御部２３は、上述の２）のａ）でＨＢＡが発行したメモリリクエストを、ネットワークに転送する。この時、メモリリクエスト制御部２３は、ネットワークに転送したメモリリクエストの個数をカウントする。
【００４１】
５）メモリリプライ制御部２４は、ネットワークから転送されたメモリリプライをＯＢ制御部２１に転送する。この時、メモリリプライ制御部２４は、ネットワークから受信したメモリリプライの個数をカウントする。
【００４２】
６）上述の４）、５）から明らかなように、メモリリクエスト制御部２３のカウント数と、メモリリプライ制御部２４のカウント数の差分は、ＩＰＢから主記憶装置５０に転送され、まだ主記憶装置５０内にてアクセス処理中のメモリアクセスの個数となる。従って、このカウント数の差分が零値ならば、ＩＰＢから主記憶装置５０に発行されたメモリアクセスが全て完了したことを示している
７）メモリリクエスト制御部２３は、上述の２）のｂ）でＨＢＡが発行したＩＯの完了通知を受信した後、上述の６）で説明したカウント値の差分が零値になるのを待ち合わせて、ＩＯの完了通知をネットワークに転送する。
【００４３】
８）ＩＯの完了通知が、ＩＯアクセス完了通知であれば、ネットワークからＩＯ命令発行元の演算ノード４０に転送される。ＩＯの完了通知が、ＩＯアクセス完了アクセスであれば、ネットワークから書き込みアドレスのメモリを含むメモリモジュール５２に転送されて記憶される。
【００４４】
本実施の形態の情報処理装置１０は、ＩＯ命令のメモリアクセスの完了と、当該ＩＯの完了通知の順序を保証することができる。その理由は、ＩＰＢの同期命令制御部２６が、メモリリクエストの完了通知であるメモリリプライを待ち合わせてから、ＩＯの完了通知を、演算ノード４０またはメモリモジュール５２に転送するからである。この結果、例えば、ＩＰＢが全メモリモジュール５２に同期用のリードアクセスを行う必要が無くなる。メモリアクセストラフィックが低下し、情報処理装置１０の性能向上が可能となる。
【００４５】
情報処理装置１０は、プログラムが上記待ち合わせの要否を指定することを可能とする。その理由は、同期命令照合部２５が、ＩＯ命令の内容に応じて、上述の待ち合わせの要否を判断するからである。この結果、待ち合わせが不要なＩＯ命令の実行時間が短縮できる。
【００４６】
＜第１の実施の形態の変形＞
同期命令照合部２５は、受信したＩＯ命令の内容以外の情報から、同期処理の要否を判断しても良い。
【００４７】
例えば、演算ノード４０が、同期処理の要否を表示するレジスタを備え、ＩＯ命令と共に当該レジスタの表示をＩＰＢに送信する。同期命令照合部２５は、当該表示が同期要であれば当該ＩＯ命令は同期要であると判断して、そのＩＤを同期命令制御部２６に送付する。
【００４８】
また、例えば、ＩＰＢ自身が同期処理の要否を表示するレジスタを備え、同期命令照合部２５は、ＩＯ命令受信時に、当該表示が同期要であれば受信したＩＯ命令は同期要であると判断して、そのＩＤを同期命令制御部２６に送付する。この場合、演算ノード４０は、このＩＰＢのレジスタ書き換え命令を備えていても良い。
【００４９】
さらに、例えば、各ＨＢＡには、同期処理の要否がシステムパラメータ等により指定されている。同期命令照合部２５は、ＩＯ命令受信時に、ＩＯ命令の処理の対象となるＨＢＡに同期要が指定されていれば、受信したＩＯ命令は同期要であると判断して、そのＩＤを同期命令制御部２６に送付する。
【００５０】
また、同期命令照合部２５は、上述の判定方法の幾つかを組み合わせて、同期処理の要否を判定しても良い。
【００５１】
＜第２の実施形態＞
図４は、第２の実施の形態にかかる情報処理装置１０の構成図である。情報処理装置１０は、演算ノード４０と、複数のメモリモジュール５２と、演算ノード４０及びメモリモジュール５２が接続されたネットワークと、ＨＢＡと、ＨＢＡとネットワークの間に接続されＩＰＢとを包含する。
【００５２】
ＨＢＡは、演算ノード４０が発行したＩＯ命令実行中に複数のメモリモジュール５２にアクセス要求を送信し、その完了を待たずに入出力完了通知を送信する。
【００５３】
ＩＰＢは、ＨＢＡからアクセス要求を受信するとネットワーク経由でメモリモジュール５２に転送する。また、ＩＰＢは、ネットワーク経由でメモリモジュール５２からアクセスリプライを受信し、アクセス要求がすべて完了するのを待ち合わせて、ＨＢＡから受信したＩＯの完了通知をネットワーク経由で演算ノード４０に転送する。
【００５４】
本実施の形態の情報処理装置１０は、ＩＯ命令のメモリアクセスの完了と、当該ＩＯの完了通知の順序を保証することができる。その理由は、ＩＰＢが、メモリリクエストの完了通知であるメモリリプライを待ち合わせてから、ＩＯの完了通知を、演算ノード４０またはメモリモジュール５２が接続されたネットワークに転送するからである。この結果、例えば、ＩＰＢが全メモリモジュール５２に同期用のリードアクセスを行う必要が無くなる。メモリアクセストラフィックが低下し、情報処理装置１０の性能向上が可能となる。
【００５５】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【００５６】
１０    情報処理装置
２０    ＩＯ制御装置
２１    ＯＢ制御部
２２    ＩＢ制御部
２３    メモリリクエスト制御部
２４    メモリリプライ制御部
２５    同期命令照合部
２６    同期命令制御部
３０    入出力装置接続装置
４０    演算ノード
５０    主記憶装置
５１    主記憶ネットワーク装置
５２    メモリモジュール
【図１】
0006384359.tif 000002
【図２】
0006384359.tif 000003
【図３】
0006384359.tif 000004
【図４】
0006384359.tif 000005