(57)【特許請求の範囲】
【請求項１】
主記憶を共有するマルチプロセッサシステムにおいて、
いずれかのプロセッサからの前記主記憶への主記憶アクセス命令の実行を開始すると、当該主記憶を占有し、当該主記憶へのアクセスが完了した後、所定の処理が完了すると、当該プロセッサからの開放指示を受けて、当該主記憶の占有を開放して、他の前記プロセッサからの当該主記憶へのアクセスを許可する装置であって、
実行中の前記主記憶アクセス命令の各々ごとに、命令種別と、アクセスアドレスと、前記主記憶へのアクセスが完了したか否かを示すアクセス完了データとを対応付けて記憶する実行中命令記憶手段と、
新たな前記主記憶アクセス命令である後続主記憶アクセス命令を受信したときに、前記実行中命令記憶手段を参照して、前記後続主記憶アクセス命令と前記アクセスアドレスが等しいレコードが存在する場合、当該レコードと前記後続主記憶アクセス命令の前記命令種別がいずれも参照命令であり、かつ、当該レコードの前記アクセス完了データがアクセス完了を示しているのであれば、前記プロセッサからの前記開放指示の受信を待たずに、前記後続主記憶アクセス命令の実行を開始する実行手段と、
を備える主記憶アクセス制御装置。
【請求項２】
実行待ちの前記後続主記憶アクセス命令の各々ごとに、前記命令種別と、前記アクセスアドレスを記憶する実行待ち命令記憶手段をさらに備え、
前記実行手段は、前記実行中命令記憶手段における、前記命令種別が前記参照命令であるいずれかのレコードの前記アクセス完了データがアクセス完了の状態になると、前記実行待ち命令記憶手段が記憶した前記後続主記憶アクセス命令のなかに、当該レコードと前記アクセスアドレスが等しい前記参照命令である実行可能命令が、少なくとも１つ以上存在する場合に、前記実行可能命令のいずれかの実行を開始する、
請求項１の主記憶アクセス制御装置。
【請求項３】
請求項１乃至２の主記憶アクセス制御装置と、前記主記憶を包含する主記憶装置と、複数の前記プロセッサと、を包含する主記憶アクセス制御システム。
【請求項４】
主記憶を共有するマルチプロセッサシステムにおいて、
いずれかのプロセッサからの前記主記憶への主記憶アクセス命令の実行を開始すると、当該主記憶を占有し、当該主記憶へのアクセスが完了した後、所定の処理が完了すると、当該プロセッサからの開放指示を受けて、当該主記憶の占有を開放して、他の前記プロセッサからの当該主記憶へのアクセスを許可する方法であって、
実行中の前記主記憶アクセス命令の各々ごとに、命令種別と、アクセスアドレスと、前記主記憶へのアクセスが完了したか否かを示すアクセス完了データとを対応付けて第一の記憶域に記憶し、
新たな前記主記憶アクセス命令である後続主記憶アクセス命令を受信したときに、前記第一の記憶域を参照して、前記後続主記憶アクセス命令と前記アクセスアドレスが等しいレコードが存在する場合、当該レコードと前記後続主記憶アクセス命令の前記命令種別がいずれも参照命令であり、かつ、当該レコードの前記アクセス完了データがアクセス完了を示しているのであれば、前記プロセッサからの前記開放指示の受信を待たずに、前記後続主記憶アクセス命令の実行を開始する、
主記憶アクセス制御方法。
【請求項５】
実行待ちの前記後続主記憶アクセス命令の各々ごとに、前記命令種別と、前記アクセスアドレスを第二の記憶域に記憶し、
前記第一の記憶域における、前記命令種別が前記参照命令であるいずれかのレコードの前記アクセス完了データがアクセス完了の状態になると、前記第二の記憶域が記憶した前記後続主記憶アクセス命令のなかに、当該レコードと前記アクセスアドレスが等しい前記参照命令である実行可能命令が、少なくとも１つ以上存在する場合に、前記実行可能命令のいずれかの実行を開始する、
請求項４の主記憶アクセス制御方法。
【請求項６】
主記憶を共有するマルチプロセッサシステムにおいて、
いずれかのプロセッサからの前記主記憶への主記憶アクセス命令の実行を開始すると、当該主記憶を占有し、当該主記憶へのアクセスが完了した後、所定の処理が完了すると、当該プロセッサからの開放指示を受けて、当該主記憶の占有を開放して、他の前記プロセッサからの当該主記憶へのアクセスを許可する処理をコンピュータに実行させるプログラムであって、
実行中の前記主記憶アクセス命令の各々ごとに、命令種別と、アクセスアドレスと、前記主記憶へのアクセスが完了したか否かを示すアクセス完了データとを対応付けて第一の記憶域に記憶する実行中命令記憶処理と、
新たな前記主記憶アクセス命令である後続主記憶アクセス命令を受信したときに、前記第一の記憶域を参照して、前記後続主記憶アクセス命令と前記アクセスアドレスが等しいレコードが存在する場合、当該レコードと前記後続主記憶アクセス命令の前記命令種別がいずれも参照命令であり、かつ、当該レコードの前記アクセス完了データがアクセス完了を示しているのであれば、前記プロセッサからの前記開放指示の受信を待たずに、前記後続主記憶アクセス命令の実行を開始する実行処理と、
をコンピュータに実行させる主記憶アクセス制御プログラム。
【請求項７】
実行待ちの前記後続主記憶アクセス命令の各々ごとに、前記命令種別と、前記アクセスアドレスを第二の記憶域に記憶する実行待ち命令記憶処理と、
前記第一の記憶域における、前記命令種別が前記参照命令であるいずれかのレコードの前記アクセス完了データがアクセス完了の状態になると、前記第二の記憶域が記憶した前記後続主記憶アクセス命令のなかに、当該レコードと前記アクセスアドレスが等しい前記参照命令である実行可能命令が、少なくとも１つ以上存在する場合に、前記実行可能命令のいずれかの実行を開始する前記実行処理と、
をコンピュータに実行させる請求項６の主記憶アクセス制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明は、主記憶を共有するマルチプロセッサシステムにおいて、各プロセッサから主記憶上の同一アドレスへのアクセス競合が発生した場合の、アクセス処理を制御する主記憶アクセス制御装置、主記憶アクセス制御システム、主記憶アクセス制御方法、及び、主記憶アクセス制御プログラムに関する。
【背景技術】
【０００２】
コンピュータシステムの処理性能を向上させるため、マルチプロセッサシステムが包含するプロセッサの台数は、年々増加してきている。主記憶装置を共有するマルチプロセッサシステムにおいては、プロセッサの台数が増加するにしたがい、主記憶における同一アドレスへのアクセスの競合がシステム性能に与える影響が大きくなる。
【０００３】
例えば、複数のプロセッサが、システム内の同じ資源（リソース）に同時にアクセスする際の排他制御の仕組みであるスピンロック処理などでは、多くのプロセッサが、主記憶上の同一アドレスにアクセスする。このとき、当該アドレスに対するアクセス競合が発生し、当該アドレスへのアクセス権を取得したプロセッサ以外のプロセッサは、当該アドレスへのアクセス権を取得できるまで、処理を待たされることになる。したがって、アクセス競合が発生した場合の主記憶アクセス処理の性能を向上させる技術の重要性が、益々高まってきている。
【０００４】
このような、主記憶アクセス処理の性能を向上させる関連技術として、特許文献１には、複数のノードを備えたシステムにおいて、第１の主記憶アクセスリクエストの処理中に、当該リクエストとアクセスアドレスが競合する第２の主記憶アクセスリクエストを他ノードから受信した場合の、アクセス処理技術が公開されている。この技術では、ノードが第１のリクエストの処理を完了するまで第２のリクエストを保持し、第１のリクエストの処理を完了した後、第２のリクエストを続けて処理する。
【０００５】
また、上述のスピンロック処理の関連技術として、特許文献２には、演算処理装置がスピンロック状態になったことを検出した場合、演算処理装置に接続されるキャッシュメモリに対して、当該演算処置から出力されるメモリアクセスリクエストをマスクするためのフラグ信号を出力する技術が公開されている。この技術では、ポーリング回数を低減することにより、バスアクセスやキャッシュアクセスの回数を削減している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開2012-138038号公報
【特許文献２】特開2005-327086号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
各プロセッサがキャッシュを備えるマルチプロセッサシステムでは、主記憶上の同一アドレスへのアクセス競合が発生した場合、各プロセッサ間のキャッシュコヒーレンシ制御のためのスヌープ処理が行われる。この場合、ある主記憶アクセス命令に関するスヌープ処理が完了しないうちに、当該主記憶アクセスとアクセスアドレスの等しい後続の主記憶アクセス命令の実行が開始されると、データ不正が発生する可能性がある。したがって、このようなマルチプロセッサシステムにおいては、通常、各プロセッサが、自身が発行した主記憶アクセス命令について、スヌープ処理を含めた全ての処理が完了したことを確認して、アクセスアドレスの開放指示を発行し、主記憶アクセス処理を制御する主記憶アクセス制御装置は、この開放指示を受信してから、後続の当該アクセスアドレスに対する主記憶アクセス命令の処理を開始している。
【０００８】
しかしながら、主記憶への参照命令については、スヌープ処理は発生しない。したがって、例えばスピンロック処理時のように、同一アドレスへの参照命令が連続するケースでは、主記憶アクセス制御装置は、上述のアクセスアドレスの開放指示の受信を待たなくても、実行中の主記憶アクセス命令の主記憶アクセスが完了し、当該アクセスアドレスへのアクセスが可能になった時点で、後続の主記憶アクセス命令の処理を開始しても、データ不正の問題は生じない。
【０００９】
上述の通り、主記憶への参照命令が連続するケースでは、後続の主記憶アクセス命令の処理を開始するタイミングを早めることが可能となるが、上述の特許文献１乃至２は、このような主記憶アクセス処理の技術については言及していない。
【００１０】
本願発明の目的は、上述の課題を解決した主記憶アクセス制御装置、主記憶アクセス制御システム、主記憶アクセス制御方法、及び、主記憶アクセス制御プログラムを提供することである。
【課題を解決するための手段】
【００１１】
本願発明の一実施形態の主記憶アクセス制御装置は、主記憶を共有するマルチプロセッサシステムにおいて、いずれかのプロセッサからの前記主記憶への主記憶アクセス命令の実行を開始すると、当該主記憶を占有し、当該主記憶へのアクセスが完了した後、所定の処理が完了すると、当該プロセッサからの開放指示を受けて、当該主記憶の占有を開放して、他の前記プロセッサからの当該主記憶へのアクセスを許可する装置であって、実行中の前記主記憶アクセス命令の各々ごとに、命令種別と、アクセスアドレスと、前記主記憶へのアクセスが完了したか否かを示すアクセス完了データとを対応付けて記憶する実行中命令記憶手段と、新たな前記主記憶アクセス命令である後続主記憶アクセス命令を受信したときに、前記実行中命令記憶手段を参照して、前記後続主記憶アクセス命令と前記アクセスアドレスが等しいレコードが存在する場合、当該レコードと前記後続主記憶アクセス命令の前記命令種別がいずれも参照命令であり、かつ、当該レコードの前記アクセス完了データがアクセス完了を示しているのであれば、前記プロセッサからの前記開放指示の受信を待たずに、前記後続アクセス命令の実行を開始する実行手段と、を備える。
【００１２】
本願発明の一実施形態の主記憶アクセス制御方法は、  主記憶を共有するマルチプロセッサシステムにおいて、いずれかのプロセッサからの前記主記憶への主記憶アクセス命令の実行を開始すると、当該主記憶を占有し、当該主記憶へのアクセスが完了した後、所定の処理が完了すると、当該プロセッサからの開放指示を受けて、当該主記憶の占有を開放して、他の前記プロセッサからの当該主記憶へのアクセスを許可する方法であって、実行中の前記主記憶アクセス命令の各々ごとに、命令種別と、アクセスアドレスと、前記主記憶へのアクセスが完了したか否かを示すアクセス完了データとを対応付けて第一の記憶域に記憶し、新たな前記主記憶アクセス命令である後続主記憶アクセス命令を受信したときに、前記第一の記憶域を参照して、前記後続主記憶アクセス命令と前記アクセスアドレスが等しいレコードが存在する場合、当該レコードと前記後続主記憶アクセス命令の前記命令種別がいずれも参照命令であり、かつ、当該レコードの前記アクセス完了データがアクセス完了を示しているのであれば、前記プロセッサからの前記開放指示の受信を待たずに、前記後続アクセス命令の実行を開始する。
【００１３】
本願発明の一実施形態の主記憶アクセス制御プログラムは、主記憶を共有するマルチプロセッサシステムにおいて、いずれかのプロセッサからの前記主記憶への主記憶アクセス命令の実行を開始すると、当該主記憶を占有し、当該主記憶へのアクセスが完了した後、所定の処理が完了すると、当該プロセッサからの開放指示を受けて、当該主記憶の占有を開放して、他の前記プロセッサからの当該主記憶へのアクセスを許可する処理をコンピュータに実行させるプログラムであって、実行中の前記主記憶アクセス命令の各々ごとに、命令種別と、アクセスアドレスと、前記主記憶へのアクセスが完了したか否かを示すアクセス完了データとを対応付けて第一の記憶域に記憶する実行中命令記憶処理と、新たな前記主記憶アクセス命令である後続主記憶アクセス命令を受信したときに、前記第一の記憶域を参照して、前記後続主記憶アクセス命令と前記アクセスアドレスが等しいレコードが存在する場合、当該レコードと前記後続主記憶アクセス命令の前記命令種別がいずれも参照命令であり、かつ、当該レコードの前記アクセス完了データがアクセス完了を示しているのであれば、前記プロセッサからの前記開放指示の受信を待たずに、前記後続アクセス命令の実行を開始する実行処理と、をコンピュータに実行させる。
【発明の効果】
【００１４】
本願発明は、主記憶を共有するマルチプロセッサシステムにおいて、主記憶上の同一アドレスに対する参照命令を連続して処理する場合に、後続の参照命令の処理を開始するタイミングを早めることで、主記憶アクセス性能を向上させる。
【図面の簡単な説明】
【００１５】
【図１】本願発明の第１の実施形態の主記憶アクセス制御システムの構成を示すブロック図である。
【図２】本願発明の第１の実施形態の動作を示すフローチャートである。
【図３】本願発明の第１の実施形態における同一アドレスへの主記憶アクセスにおいて、更新命令の処理が入る場合の主記憶アクセスの時間軸動作の例である。
【図４】本願発明の第１の実施形態における同一アドレスへの主記憶アクセスにおいて、参照命令を連続して処理する場合の主記憶アクセスの時間軸動作の例である。
【図５】本願発明の第２の実施形態の主記憶アクセス制御システムの構成を示すブロック図である。
【図６】本願発明の第３の実施形態の主記憶アクセス制御装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１６】
本願発明の第１の実施の形態について図面を参照して詳細に説明する。
【００１７】
図１は本実施形態の主記憶アクセス制御システム１の構成を示すブロック図である。本実施形態の主記憶アクセス制御システム１は、主記憶アクセス制御装置１０と、ｎ個のプロセッサ（中央処理装置）２０−１乃至２０−ｎと、主記憶装置３０と、を包含している。
【００１８】
主記憶アクセス制御装置１０は、実行中命令記憶部１１と、実行部１３と、を包含している。実行中命令記憶部１１は、電子回路あるいはコンピュータプログラムによりアクセス制御が行われる電子メモリ等の記憶装置である。実行部１３は、電子回路である場合もあれば、コンピュータプログラムである場合もある。
【００１９】
実行中命令記憶部１１は、プロセッサ２０−１乃至２０−ｎから発行された、主記憶装置３０へのアクセス命令で、実行中であるものに関する情報を記憶している。実行中命令記憶部１１は、主記憶アクセス命令ごとに、命令種別１１０、アクセスアドレス１１１、発行元プロセッサ１１２、リプライデータ１１３、及び、開放指示不要フラグ１１４の情報を記憶している。
【００２０】
命令種別１１０は、主記憶アクセス命令が、主記憶装置３０への参照命令であるのか、あるいは、更新命令であるのか等を示す情報である。アクセスアドレス１１１は、主記憶装置３０における、主記憶アクセス命令のアクセスアドレスである。リプライデータ１１３は、主記憶アクセス命令の実行により、主記憶装置３０から受信したリプライデータであり、例えば、参照命令の場合は主記憶装置３０から読み出したデータであり、更新命令の場合は、主記憶装置３０への書き込み完了を示すデータとなる。
【００２１】
発行元プロセッサ１１２は、主記憶アクセス命令の発行元のプロセッサの識別情報である。プロセッサ２０−１乃至２０−ｎは、それぞれ、識別情報として、１乃至ｎのプロセッサ番号が付与されており、発行元プロセッサ１１２は、１乃至ｎの何れかの値となる。
【００２２】
開放指示不要フラグ１１４は、主記憶アクセス命令を発行したプロセッサが、当該主記憶アクセス命令の処理を全て完了したときに、当該主記憶アクセス命令のアクセスアドレスのエントリの開放指示を、主記憶アクセス制御装置１０に対して発行しなくてもよいことを示すフラグである。
【００２３】
実行部１３は、プロセッサ２０−１乃至２０−ｎの何れかから発行された後続の主記憶アクセス命令１２を受信すると、主記憶アクセス命令１２の命令情報を、実行中命令記憶部１１に照合する。主記憶アクセス命令１２の命令情報は、命令種別１２０、アクセスアドレス１２１、及び、発行元プロセッサ１２２の情報を包含している。命令種別１２０と、アクセスアドレス１２１と、発行元プロセッサ１２２の詳細は、それぞれ、命令種別１１０と、アクセスアドレス１１１と、発行元プロセッサ１１２と同様である。
【００２４】
実行部１３は、アクセスアドレス１２１と値が一致するアクセスアドレス１１１を持つレコードが、実行中命令記憶部１１内に存在しない場合は、主記憶アクセス命令１２とアクセスアドレスが競合する実行中の主記憶アクセス命令が存在しないため、主記憶アクセス命令１２の命令情報を実行中命令記憶部１１に登録して、主記憶アクセス命令１２の実行を開始する。
【００２５】
実行部１３は、アクセスアドレス１２１と値が一致するアクセスアドレス１１１を持つレコードが実行中命令記憶部１１内に存在する場合は、命令種別１２０と、実行中命令記憶部１１における当該レコードの命令種別１１０を確認する。実行部１３は、命令種別１２０、及び、命令種別１１０の少なくともいずれか一方が更新命令である場合、当該レコードに対応する主記憶アクセス命令の処理が全て完了し、当該主記憶アクセス命令の発行元のプロセッサからアクセスアドレスのエントリの開放指示を受信するまで、主記憶アクセス命令１２を実行することができない。したがって、実行部１３は、発行元プロセッサ１２２が示す主記憶アクセス命令１２の発行元プロセッサに対して、主記憶アクセスのリトライ指示を送信する。
【００２６】
実行部１３は、上述の確認の結果、命令種別１２０、及び、命令種別１１０の両方が参照命令である場合、実行中命令記憶部１１における当該レコードのリプライデータ１１３を確認し、リプライデータ１１３が格納済みであるかどうかを確認する。実行部１３は、リプライデータ１１２３格納済みである場合、当該レコードを実行中命令記憶部１１から削除して、主記憶アクセス命令１２の命令情報を実行中命令記憶部１１に登録し、主記憶アクセス命令１２の実行を開始する。実行部１３は、リプライデータ１１３が格納済みでない場合、当該レコードにおける開放指示不要フラグ１１４を点灯させたのち、発行元プロセッサ１２２が示す主記憶アクセス命令１２の発行元プロセッサに対して、主記憶アクセスのリトライ指示を送信する。
【００２７】
実行部１３は、実行中命令記憶部１１に登録された、実行中の主記憶アクセス命令のいずれかのリプライデータを主記憶装置３０から受信すると、実行中命令記憶部１１における当該主記憶アクセス命令に対応するレコードのリプライデータ１１２として格納する。実行部１３は、リプライデータ１１２、及び、当該レコードの開放指示不要フラグ１１４の値を、発行元プロセッサ１１２が示すプロセッサに送信する。
【００２８】
実行部１３は、プロセッサ２０−１乃至２０−ｎのいずれかから、所定の処理が全て完了した主記憶アクセス命令のアクセスアドレスのエントリの開放指示を受信すると、実行中命令記憶部１１から、当該主記憶アクセス命令に対応するレコードを削除する。実行部１３は、主記憶装置３０における同一アドレスへの参照アクセスが連続し、上述の主記憶アクセス命令１２の開始動作により、実行中命令記憶部１１から既に命令情報が削除されている主記憶アクセス命令に対応するアクセスアドレスのエントリの開放指示を受信した場合は、当該開放指示を無効化する。
【００２９】
プロセッサ２０−１乃至２０−ｎは、実行部１３から、発行した主記憶アクセス命令に対応するリプライデータ１１３、及び、開放指示不要フラグ１１４を受信すると、開放指示不要フラグ１１４が点灯していない場合は、当該主記憶アクセス命令に関するキャッシュコヒーレンシ制御のためのスヌープ処理等の所定の処理を全て完了させた後、当該主記憶アクセス命令アクセスアドレスのエントリの開放指示を実行部１３へ送信する。プロセッサ２０−１乃至２０−ｎは、上述の開放指示不要フラグ１１４が点灯している場合は、当該主記憶アクセス命令アクセスアドレスのエントリの開放指示の発行を行わない。
【００３０】
次に、図２のフローチャートを参照して、本実施形態の動作について詳細に説明する。
【００３１】
主記憶アクセス制御装置１０は、プロセッサ２０−１乃至２０−ｎのいずれかから、主記憶装置３０への主記憶アクセス命令１２を受信する（Ｓ１０１）。実行部１３は、主記憶アクセス命令１２におけるアクセスアドレス１２１と値が一致するアクセスアドレス１１１を持つレコードが、実行中命令記憶部１１内に存在するか確認する（Ｓ１０２）。
【００３２】
値が一致するレコードが存在しない場合（Ｓ１０３でＮｏ）、実行部１３は、主記憶アクセス命令１２の命令種別１２０と、アクセスアドレス１２１と、発行元プロセッサ１２２を、実行中命令記憶部１１に登録し、主記憶アクセス命令１２を実行する（Ｓ１１１）。値が一致するレコードが存在する場合（Ｓ１０３でＹｅｓ）、実行部１３は、一致したレコードにおける命令種別１１０、及び、主記憶アクセス命令１２における命令種別１２０を確認する（Ｓ１０４）。
【００３３】
命令種別１１０と命令種別１２０の少なくともいずれかが参照命令でない場合（Ｓ１０５でＮｏ）、実行部１３は、主記憶アクセス命令１２における発行元プロセッサ１２２が示すプロセッサに、リトライ指示を送信し（Ｓ１０９）、全体の処理は終了する。命令種別１１０と命令種別１２０がいずれも参照命令である場合（Ｓ１０５でＹｅｓ）、実行部１３は、Ｓ１０３で値が一致したレコードにおけるリプライデータ１１３が格納済みであるか確認する（Ｓ１０６）。
【００３４】
リプライデータ１１３が格納済みでない場合（Ｓ１０７でＮｏ）、実行部１３は、Ｓ１０３で値が一致したレコードにおける開放指示不要フラグ１１４を点灯させる（Ｓ１０８）。リプライデータ１１２が格納済みである場合（Ｓ１０７でＹｅｓ）、実行部１３は、実行中命令記憶部１１におけるＳ１０３で一致したレコードを削除する（Ｓ１１０）。実行部１３は、主記憶アクセス命令１２の命令種別１２０と、アクセスアドレス１２１と、発行元プロセッサ１２２を、実行中命令記憶部１１に登録し、主記憶アクセス命令１２を実行する（Ｓ１１１）。
【００３５】
実行部１３は、主記憶アクセス命令１２のリプライデータ１１３を、主記憶装置３０から受信し、実行中命令記憶部１１に格納した後、リプライデータ１１３と開放指示不要フラグ１１４を、発行元プロセッサ１２２が示すプロセッサへ送信する（Ｓ１１２）。発行元プロセッサ１２２が示すプロセッサは、主記憶アクセス命令１２の所定の処理を完了させる（Ｓ１１３）。
【００３６】
開放指示不要フラグ１１４が点灯している場合（Ｓ１１４でＹｅｓ）、全体の処理は終了する。開放指示不要フラグ１１４が点灯していない場合（Ｓ１１４でＮｏ）、発行元プロセッサ１２２が示すプロセッサは、実行部１３に、アクセスアドレス１２１の開放指示を送信する（Ｓ１１５）。
【００３７】
アクセスアドレス１２１と値が一致するアクセスアドレス１１１のレコードが実行中命令記憶部１１に存在しない場合（Ｓ１１６でＮｏ）、全体の処理は終了する。アクセスアドレス１２１と値が一致するアクセスアドレス１１１のレコードが実行中命令記憶部１１に存在する場合、実行部１３は、アクセスアドレス１２１と値が一致するアクセスアドレス１１１のレコードを、実行中命令記憶部１１から削除し（Ｓ１１７）、全体の処理は終了する。
【００３８】
本実施形態には、主記憶を共有するマルチプロセッサシステムにおいて、主記憶上の同一アドレスに対する参照命令を連続して処理する場合に、後続の参照命令の処理を開始するタイミングを早めることで、主記憶アクセス性能を向上させる効果がある。その理由は、実行部１３が、受信した主記憶アクセス命令１２のアクセスアドレス１２１が、実行中の主記憶アクセス命令と競合する場合、両方の命令がいずれも参照命令であり、かつ、実行中の主記憶アクセス命令のリプライデータ１１３が格納済みである場合、実行中の主記憶アクセス命令のアクセスアドレスのエントリの開放指示を待たずに、主記憶アクセス命令１２の処理を開始するからである。
【００３９】
各々のプロセッサがキャッシュを備えた、主記憶を共有するマルチプロセッサシステムでは、各プロセッサは、キャッシュコヒーレンシ制御のためのスヌープ処理を実行する。主記憶における同一アドレスへのアクセスが競合した場合、ある主記憶アクセス命令のスヌープ処理が、先行する主記憶アクセス命令の処理を追い越す、あるいは、後続の主記憶アクセス命令の処理に追い越されることがないことを、主記憶アクセス制御装置が保障する必要がある。しかがって、通常、主記憶アクセス制御装置は、実行中の先行主記憶アクセス命令の所定の処理が全て完了した後、アクセスアドレスのエントリの開放指示を、先行する主記憶アクセス命令の発行元のプロセッサから受信するまでは、後続の主記憶アクセス命令の処理を開始しない。
【００４０】
しかしながら、主記憶アクセス命令が参照命令である場合は、スヌープ処理が発生しないため、実行中の主記憶アクセス命令と、後続の主記憶アクセス命令が、いずれも参照命令であるならば、上述のスヌープ処理に関わる命令間の順序保障の問題は発生しない。したがって、実行中の主記憶アクセス命令と、後続の主記憶アクセス命令が、いずれも参照命令である場合は、主記憶アクセス制御装置は、実行中の主記憶アクセス命令の発行元プロセッサからのアクセスアドレスのエントリの開放指示を待たずに、後続の主記憶アクセス命令を開始することが可能となる。
【００４１】
本実施形態における同一アドレスへの主記憶アクセス競合時において、実行中の主記憶アクセス命令と後続の主記憶アクセス命令の、少なくともいずれかが更新命令である場合の主記憶アクセス制御装置１０の主記憶アクセスの時間軸動作を図３に示す。
【００４２】
主記憶アクセス制御装置１０は、プロセッサ２０−１からのアクセスリクエストを受信して、当該アクセスリクエストの処理を開始する。その後、主記憶アクセス制御装置１０は、プロセッサ２０−２乃至２０−４から、同一アドレスへのアクセスリクエストを受信するが、プロセッサ２０−１からのアクセスリクエストが処理中であるため、プロセッサ２０−２乃至２０−４に対して、リトライ指示を送信する。
【００４３】
主記憶アクセス制御装置１０は、プロセッサ２０−１からのアクセスリクエストに対する主記憶装置３０からのリプライデータを受信すると、リプライデータを、プロセッサ２０−１に送信する。主記憶アクセス制御装置１０がリプライデータを受け取った時点で、主記憶装置３０における当該アクセスアドレスへのアクセス自体は可能となるが、当該アクセスリクエストに関するスヌープ処理等の所定の処理が完了していないため、主記憶アクセス制御装置１０は、当該アクセスアドレスへの後続のアクセスリクエストを受け付けない。
【００４４】
プロセッサ２０−１は、アクセスリクエストに関する所定の処理を全て完了させた後、主記憶装置３０に対して、当該アクセスアドレスのエントリ開放指示を送信する。主記憶アクセス制御装置１０は、当該アクセスアドレスのエントリ開放指示の受信をもって、当該アクセスアドレスへの後続のアクセスリクエストを受け付けることが可能となり、エントリ開放指示の受信後、最初に受信したプロセッサ２０−４からのアクセスリクエストの処理を開始する。
【００４５】
本実施形態における同一アドレスへの主記憶アクセス競合時において、参照命令を連続して処理する場合の主記憶アクセス制御装置１０の主記憶アクセスの時間軸動作を図４に示す。
【００４６】
主記憶アクセス制御装置１０は、図３の場合と同様に、プロセッサ２０−１からの参照リクエストの処理中に受信したアクセスリクエストの発行元であるプロセッサ２０−２乃至２０−４に対して、リトライ指示を送信する。
【００４７】
主記憶アクセス制御装置１０は、プロセッサ２０−１からのアクセスリクエストに対する主記憶装置３０からのリプライデータを受信すると、当該アクセスリクエストと同じアクセスアドレスに対する後続の参照リクエストを受け付けることが可能となる。主記憶アクセス制御装置１０は、当該リプライデータの受信後、最初に受信したプロセッサ２０−２からの参照リクエストの処理を開始する。
【００４８】
図４における、主記憶アクセス制御装置１０による、プロセッサ２０−１からの主記憶アクセスリクエストの処理時間は、図３におけるそれと比較して、主記憶アクセス制御装置１０がプロセッサ２０−１へリプライデータを送信し、プロセッサ２０−１からアクセスアドレスのエントリ開放指示を受信するまでの時間分短いこととなる。
【００４９】
特に、マルチノード構成の分散共有メモリを備える大規模なコンピュータシステムでは、プロセッサから主記憶装置へのレイテンシが長いことが多く、上述の主記憶アクセスリクエストで短縮される処理時間が大きくなるため、本実施形態の主記憶アクセス性能を向上させる効果は大きくなる。
【００５０】
また、多数のプロセッサを備えたマルチプロセッサシステムにおいて、スピンロックが発生したような場合、同一アドレスに対する多数の参照リクエストが連続するため、本実施形態の、上述の主記憶アクセスリクエストの処理時間の短縮による主記憶アクセス性能を向上させる効果は大きくなる。
【００５１】
さらに、本実施形態では、実行中命令記憶部１１が、実行中の主記憶アクセス命令ごとに、開放指示不要フラグを備え、後続の参照命令が処理待ちの状態のときに、実行部１３が開放指示不要フラグを点灯させ、当該主記憶アクセス命令のアクセスアドレスの開放指示の発行が不要であることを、当該主記憶アクセス命令の発行元のプロセッサに通知する。したがって、各プロセッサは、不要なアクセスアドレスの開放指示の発行処理を行わないで済むため、本実施形態には、各プロセッサの処理性能を向上させる効果もある。
＜第２の実施形態＞
次に、本願発明の第２の実施形態について図面を参照して詳細に説明する。
【００５２】
図５は本願発明の第２の実施形態の主記憶アクセス制御システム１の構成を示すブロック図である。本実施形態の主記憶アクセス制御システム１は、主記憶アクセス制御装置１０が、実行待ち命令記憶部１４を備えていることを除いては、実施形態１と同様の構成である。
【００５３】
実行待ち命令記憶部１４は、電子回路あるいはコンピュータプログラムによりアクセス制御が行われる電子メモリ等の記憶装置である。
【００５４】
実行待ち命令記憶部１４は、プロセッサ２０−１乃至２０−ｎから発行された、主記憶装置３０へのアクセス命令で、アクセスアドレスの競合等により、実行待ちになった命令に関する情報を記憶している。実行待ち命令記憶部１４は、主記憶アクセス命令ごとに、命令種別１４０、アクセスアドレス１４１、発行元プロセッサ１４２の情報を記憶している。
【００５５】
実行部１３は、実行中命令記憶部１１を参照し、実行中命令記憶部１１における、命令種別１１０が参照命令であるいずれかのレコードのリプライデータが格納されたことを検出する。実行部１３は、当該レコードとアクセスアドレスが等しい参照命令である実行待ちの命令が、実行待ち命令記憶部１４に、少なくとも１つ以上存在する場合、該当する実行待ち命令のうちの何れかの実行を開始する。
【００５６】
実行部１３は、実行待ち命令記憶部１４に記憶された何れかの実行待ちの命令の実行を開始すると、当該命令に関するレコードを、実行待ち命令記憶部１４から削除する。
【００５７】
本実施形態には、第一の実施形態の効果に加えて、実行待ちの状態にある主記憶への参照命令の実行を開始するタイミングを早めることで、主記憶アクセス性能をさらに向上させる効果がある。その理由は、実行待ち命令記憶部１４が、実行待ちの主記憶アクセス命令を記憶し、実行部１３が、実行中の主記憶への参照命令のいずれかのリプライデータが格納されたことを検出すると、実行待ち命令記憶部１４における、当該参照命令とアクセスアドレスが等しい実行待ちの参照命令の実行を開始するからである。
【００５８】
本実施形態では、主記憶アクセス制御装置１０は、アクセスアドレスの競合等で、実行待ちになった主記憶アクセス命令のリトライ指示を、当該命令の発行元プロセッサに送信するのではなく、実行待ちになった主記憶アクセス命令の情報を、実行待ち命令記憶部１４に格納する。したがって、主記憶アクセス制御装置１０は、実行待ちになった主記憶アクセス命令に関する、発行元プロセッサからのリトライを待たずに、アクセスアドレスが競合する実行中の主記憶アクセス命令のリプライデータが格納されたタイミングで、実行待ちの主記憶アクセス命令の実行を開始することが可能となる。
＜第３の実施形態＞
次に、本願発明の第３の実施形態について図面を参照して詳細に説明する。
【００５９】
図６は本実施形態の主記憶アクセス制御装置１０の構成を示すブロック図である。
【００６０】
本実施形態の主記憶アクセス制御装置１０は、プロセッサ２０−１乃至２０−ｎのいずれかからの主記憶装置３０への主記憶アクセス命令の実行を開始すると、アクセスアドレスの主記憶を占有する。主記憶アクセス制御装置１０は、当該アクセスアドレスへのアクセスが完了した後、所定の処理が完了すると、当該プロセッサからの開放指示を受けて、当該アクセスアドレスの占有を開放して、他のプロセッサからの当該アクセスアドレスへのアクセスを許可する。
【００６１】
主記憶アクセス制御装置１０は、実行中命令記憶部１１と、実行部１３と、を包含している。
【００６２】
実行中命令記憶部１１は、実行中の前記主記憶アクセス命令の各々ごとに、命令種別１１０と、アクセスアドレス１１１と、前記主記憶へのアクセスが完了したか否かを示すアクセス完了データ１１５とを対応付けて記憶する。
【００６３】
実行部１３は、新たな主記憶アクセス命令である後続主記憶アクセス命令を受信したときに、実行中命令記憶部１１を参照する。実行部１３は、後続主記憶アクセス命令とアクセスアドレスが等しいレコードが存在する場合、当該レコードと後続主記憶アクセス命令の命令種別がいずれも参照命令であり、かつ、当該レコードのアクセス完了データ１１５がアクセス完了を示しているのであれば、プロセッサからの開放指示の受信を待たずに、後続アクセス命令の実行を開始する。
【００６４】
本実施形態には、第１の実施形態と同様に、主記憶上の同一アドレスに対する参照命令を連続して処理する場合に、後続の参照命令の処理を開始するタイミングを早めることで、主記憶アクセス性能を向上させる効果がある。その理由は、実行部１３が、受信した後続主記憶アクセス命令のアクセスアドレスが、実行中の主記憶アクセス命令と競合する場合、両方の命令がいずれも参照命令であり、かつ、実行中の主記憶アクセス命令のアクセス完了データ１１５が格納済みである場合、実行中の主記憶アクセス命令のアクセスアドレスのエントリの開放指示を待たずに、後続主記憶アクセス命令の処理を開始するからである。
【００６５】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されたものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【００６６】
１    主記憶アクセス制御システム
１０    主記憶アクセス制御装置
１１    実行中命令記憶部
１１０    命令種別
１１１    アクセスアドレス
１１２    発行元プロセッサ
１１３    リプライデータ
１１４    開放指示不要フラグ
１１５    アクセス完了データ
１２    主記憶アクセス命令
１２０    命令種別
１２１    アクセスアドレス
１２２    発行元プロセッサ
１３    実行部
１４    実行待ち命令記憶部
１４０    命令種別
１４１    アクセスアドレス
１４２    発行元プロセッサ
２０−１乃至２０−ｎ    プロセッサ（中央処理装置）
３０    主記憶装置
【要約】
【課題】同一アドレスへの参照命令を連続して処理する場合、後続命令の処理開始のタイミングを早めて、主記憶アクセス性能を向上させる主記憶アクセス制御装置を提供する。
【解決手段】本願発明の命令実行制御装置は、主記憶を共有するマルチプロセッサシステムにおいて、実行中の主記憶アクセス命令ごとに、命令種別と、アクセスアドレスと、主記憶へのアクセスが完了したか否かを示すアクセス完了データとを対応付けて記憶する実行中命令記憶手段と、後続主記憶アクセス命令を受信したときに、実行中命令記憶手段を参照して、後続主記憶アクセス命令とアクセスアドレスが等しいレコードが存在する場合、当該レコードと後続主記憶アクセス命令の命令種別がいずれも参照命令であり、かつ、当該レコードのアクセス完了データがアクセス完了を示していれば、プロセッサからの開放指示の受信を待たずに、後続アクセス命令の実行を開始する実行手段と、を備える。
【選択図】      図１【図１】
0005559373.tif 000002
【図２】
0005559373.tif 000003
【図３】
0005559373.tif 000004
【図４】
0005559373.tif 000005
【図５】
0005559373.tif 000006
【図６】
0005559373.tif 000007