(57)【要約】【課題】主記憶を共有するマルチプロセッサシステムにおいて、プロセッサ間の同期処理において発生するオーバヘッドを低減する。【解決手段】主記憶６０を共有するプロセッサ４０−１乃至４０−ｎと、主記憶６０へのアクセス命令を処理する主記憶アクセス制御装置５０と、を備え、プロセッサ４０−１乃至４０−ｎは、主記憶６０における特定の領域からの読み出しを行う際に、その特定の領域が、後続命令によって更新されるまで、その特定の領域からの読み出しを保留することを指示する更新待ち読み出し命令を発行し、主記憶アクセス制御装置５０は、主記憶６０へのアクセス命令を１以上記憶する命令記憶部５２と、命令記憶部５２に更新待ち読み出し命令が記憶されている場合、後続命令によって、当該特定の領域が更新されたのちに、その特定の領域からの読み出しを実行する命令実行部５３と、を備える。【選択図】      図５
2017138755.tif 000002
【特許請求の範囲】
【請求項１】
主記憶を共有する複数のプロセッサと、前記プロセッサから発行された前記主記憶へのアクセス命令を処理する主記憶アクセス制御装置と、を備え、
前記プロセッサは、前記主記憶における特定の領域からの読み出しを行う際に、前記特定の領域が、前記複数のプロセッサのうちの少なくともいずれかから発行された後続命令によって更新されるまで、前記特定の領域からの読み出しを保留することを指示する更新待ち読み出し命令を発行し、
前記主記憶アクセス制御装置は、
前記複数のプロセッサから発行された、前記主記憶へのアクセス命令を１以上記憶する命令記憶手段と、
前記命令記憶手段に前記更新待ち読み出し命令が記憶されている場合、前記後続命令によって、前記特定の領域が更新されたのちに、前記特定の領域からの読み出しを実行する命令実行手段と、
を備える、
マルチプロセッサシステム。
【請求項２】
前記特定の領域に格納された情報を介して互いに処理を同期させる前記複数のプロセッサのうち、第一の前記プロセッサは、第二の前記プロセッサによって行われる先行処理が完了するのを待つ場合に前記更新待ち読み出し命令を発行し、
前記第二のプロセッサは、前記先行処理を完了したときに、前記特定の領域を更新する書き込み命令を発行し、
前記命令実行手段は、前記書き込み命令を実行したのち、前記特定の領域からの読み出しを実行することによって、前記特定の領域から読み出した結果を、前記第一のプロセッサに通知する、
請求項１に記載のマルチプロセッサシステム。
【請求項３】
前記複数のプロセッサのうち、第一の前記プロセッサは、第二の前記プロセッサによって、ストレージ装置から前記特定の領域に転送されたデータを使用する場合に、前記更新待ち読み出し命令を発行し、
前記命令実行手段は、前記ストレージ装置から前記特定の領域に対してデータを転送する処理が完了したのち、前記特定の領域からの読み出しを実行することによって、前記特定の領域から読み出した結果を、前記第一のプロセッサに通知する、
請求項１に記載のマルチプロセッサシステム。
【請求項４】
前記命令記憶手段は、前記複数のプロセッサから発行された前記更新待ち読み出し命令ごとに、前記特定の領域からの読み出しを保留中であるか否かを示すフラグを、保留中であることを示す状態で記憶し、
前記命令実行手段は、前記更新待ち読み出し命令が示す前記特定の領域が更新されたときに、前記フラグを保留中でないことを示す状態に更新することによって、保留されている前記特定の領域からの読み出しを実行する、
請求項１乃至３のいずれか一項に記載のマルチプロセッサシステム。
【請求項５】
前記複数のプロセッサは、前記更新待ち読み出し命令であることを表す命令情報を含む、前記更新待ち読み出し命令を発行し、
前記命令記憶手段は、前記複数のプロセッサから発行された前記アクセス命令が、前記更新待ち読み出し命令であることを示す命令情報を含む場合に、前記フラグを保留中であることを示す状態にして前記アクセス命令を記憶する、
請求項４に記載のマルチプロセッサシステム。
【請求項６】
前記命令記憶手段は、前記主記憶へのアクセス命令ごとにアクセス先のアドレスを記憶し、
前記命令実行手段は、前記命令記憶手段に前記更新待ち読み出し命令が記憶されている場合、前記更新待ち読み出し命令が示す前記アドレスを含む前記後続命令が実行されたのちに、前記特定の領域からの読み出しを実行する、
請求項１乃至５のいずれか一項に記載のマルチプロセッサシステム。
【請求項７】
主記憶を共有する複数のプロセッサと、前記プロセッサから発行された前記主記憶へのアクセス命令を処理する主記憶アクセス制御装置と、を備えたシステムにおいて、
前記プロセッサは、前記主記憶における特定の領域からの読み出しを行う際に、前記特定の領域が、前記複数のプロセッサのうちの少なくともいずれかから発行された後続命令によって更新されるまで、前記特定の領域からの読み出しを保留することを指示する更新待ち読み出し命令を発行し、
前記主記憶アクセス制御装置は、
前記複数のプロセッサから発行された、前記主記憶へのアクセス命令を、命令記憶手段に１以上記憶し、
前記命令記憶手段に前記更新待ち読み出し命令が記憶されている場合、前記後続命令によって、前記特定の領域が更新されたのちに、前記特定の領域からの読み出しを実行する、
マルチプロセッサシステムにおける主記憶アクセス制御方法。
【請求項８】
前記特定の領域に格納された情報を介して互いに処理を同期させる前記複数のプロセッサのうち、第一の前記プロセッサは、第二の前記プロセッサによって行われる先行処理が完了するのを待つ場合に、前記更新待ち読み出し命令を発行し、
前記第二のプロセッサは、前記先行処理を完了したときに、前記特定の領域を更新する書き込み命令を発行し、
前記主記憶アクセス制御装置は、前記書き込み命令を実行したのち、前記特定の領域からの読み出しを実行することによって、前記特定の領域から読み出した結果を、前記第一のプロセッサに通知する、
請求項７に記載のマルチプロセッサシステムにおける主記憶アクセス制御方法。
【請求項９】
主記憶を共有する複数のプロセッサと、前記プロセッサから発行された前記主記憶へのアクセス命令を処理する主記憶アクセス制御装置と、を備えたシステムにおいて、
前記プロセッサが、前記主記憶における特定の領域からの読み出しを行う際に、前記特定の領域が、前記複数のプロセッサのうちの少なくともいずれかから発行された後続命令によって更新されるまで、前記特定の領域からの読み出しを保留することを指示する更新待ち読み出し命令を発行する場合に、
前記複数のプロセッサから発行された、前記主記憶へのアクセス命令を、命令記憶手段に１以上記憶する命令記憶処理と、
前記命令記憶手段に前記更新待ち読み出し命令が記憶されている場合、前記後続命令によって、前記特定の領域が更新されたのちに、前記特定の領域からの読み出しを実行する命令実行処理と、
を前記主記憶アクセス制御装置に実行させるための、マルチプロセッサシステムにおける主記憶アクセス制御プログラム。
【請求項１０】
前記特定の領域に格納された情報を介して互いに処理を同期させる前記複数のプロセッサのうち、第一の前記プロセッサが、第二の前記プロセッサによって行われる先行処理が完了するのを待つ場合に、前記更新待ち読み出し命令を発行し、
前記第二のプロセッサが、前記先行処理を完了したときに、前記特定の領域を更新する書き込み命令を発行する場合に、
前記命令実行処理は、前記書き込み命令を実行したのち、前記特定の領域からの読み出しを実行することによって、前記特定の領域から読み出した結果を、前記第一のプロセッサに通知する、
請求項９に記載のマルチプロセッサシステムにおける主記憶アクセス制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明は、主記憶を共有するマルチプロセッサシステムにおいて、各プロセッサが行う処理間で同期をとる技術に関する。
【背景技術】
【０００２】
近年、計算機の性能を向上させるために、多数のプロセッサエレメント（以降、ＰＥと称する）を並列動作させる並列計算機が多用されている。並列計算機には、大別して、ＰＥごとに主記憶を備える主記憶分散型と、複数のＰＥが主記憶を共有する主記憶共有型とがある。主記憶共有型の並列計機には、主記憶が物理的に集中して配置される場合と、各ＰＥ内にそれらが論理的に共有する主記憶の一部が分散して配置される場合（いわゆる分散共有メモリ型）とがある。
【０００３】
並列計算機においては、並列に動作するＰＥ同士で、効率良くイベントの発生を通知することが必要である。特に、データベース検索、あるいは、知識処理などの非決定的な処理を行う場合には、ＰＥ間において非同期なイベントが多数送られるので、イベントの発生を高速に通信する必要がある。さらに、数値計算などの定型的なプログラムにおいても、ＰＥ間におけるバリア同期等を高速に実現するために、イベントの発生を効率よく通知する技術が期待されている。
【０００４】
このような技術の一例として、特許文献１には、マルチプロセッサシステムにおいて、共有メモリの中に、並列処理を行うプロセッサ群の同期ポイントを示す同期フラグ領域を固定アドレス領域に確保した、同期方法が開示されている。この同期方法では、ソフトウェアにより、当該同期フラグ領域を処理の実行状態に応じて更新することによって、プロセッサ間の同期をとることを実現する。
【０００５】
また、特許文献２には、並列化されたプロセッサ数が増大するのに伴い、参照する状態フラグも増大することから、状態フラグの収集方法を効率化することによって、プロセッサ間の同期処理を高速化した並列計算機が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開2005-71109号公報
【特許文献２】特開平9-22397号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
主記憶共有型の並列計算機において、ＰＥ間でイベントの発生等を表すイベント情報を通知する一般的な方法（以降、第１の方法と称する）として、共有主記憶を介する方法がある。この方法では、ＰＥごとに、他のＰＥから送られるイベント情報を保持する領域（以降、同期フラグ領域と称する）が共有主記憶に設けられる。イベント情報を送信する送信元のＰＥは、送信先のＰＥに割り当てられた同期フラグ領域を更新することにより、イベントの発生等を通知する。送信先のＰＥは、共有主記憶における、当該ＰＥに割り当てられた同期フラグ領域を、更新の有無に関わらず定期的にポーリングすることによって、同期フラグ領域に対する更新の有無を検出する。
【０００８】
各ＰＥは、同期フラグ領域が更新されている場合は、同期フラグ領域が更新されたことを、当該ＰＥで実行しているプログラムに通知することによって、そのプログラムにより当該フラグ領域が表わすイベントを処理する。この場合、各ＰＥは、他の複数のＰＥからイベント情報が通知されたときに、所定のイベントが発生したと判断する場合もある。この場合、各ＰＥは、共有主記憶における他の複数のＰＥと関連付けされた同期フラグ領域について、更新の有無を検出する。
【０００９】
このように、共有主記憶における同期フラグ領域に対する更新を、定期的なポーリングにより検出する方法では、フラグが書き込まれたことを検出するために、繰り返し共有主記憶をアクセスするので、実行中の他プロセスが主記憶アクセスを行う際の性能を低下させる虞がある。
【００１０】
また、イベント情報を通信する他の一般的な方法（以降、第２の方法と称する）として、上述した第１の方法と同様に、送信元のＰＥが、イベント情報を、共有主記憶における送信先のＰＥに割り当てられた同期フラグ領域に書き込むとともに、割り込み処理を発生させることによって、イベントが発生したことを送信先のＰＥに通知する方法がある。この際、割り込み処理が発生した送信先のＰＥは、自ＰＥに割り当てられた同期フラグ領域をポーリングすることによって、イベント情報の更新内容を得ることができる。
【００１１】
この第２の方法では、第１の方法より、ポーリングによる主記憶アクセス頻度を低下させることができる。しかしながら、この第２の方法では、割り込み処理による負荷が大きいとともに、この割り込み処理が発生するたびに、同期フラグ領域をポーリングする必要が依然としてあるので、プロセッサ間の同期処理において発生するオーバヘッドが大きい。
【００１２】
以上述べてきた通り、上述した第１の方法、すなわち、共有主記憶における同期フラグ領域を、周期的にポーリングすることによって、同期フラグ領域に対する更新の有無を検出する方法では、同期フラグ領域が更新されていないにも拘らず、共有主記憶をアクセスすることが生じる。したがって、この第１の方法では、共有主記憶を無駄にアクセスするので、プロセッサ間の同期処理において発生するオーバヘッドが大きいという問題がある。また、上述した第２の方法でも、同期フラグ領域をポーリングする必要が残されているとともに、割り込み処理による負荷が大きいので、プロセッサ間の同期処理において発生するオーバヘッドが大きいという問題がある。特許文献１及び２は、この問題について言及していない。本願発明の主たる目的は、この問題を解決したマルチプロセッサシステム等を提供することである。
【課題を解決するための手段】
【００１３】
本願発明の一態様に係るマルチプロセッサシステムは、主記憶を共有する複数のプロセッサと、前記プロセッサから発行された前記主記憶へのアクセス命令を処理する主記憶アクセス制御装置と、を備え、前記プロセッサは、前記主記憶における特定の領域からの読み出しを行う際に、前記特定の領域が、前記複数のプロセッサのうちの少なくともいずれかから発行された後続命令によって更新されるまで、前記特定の領域からの読み出しを保留することを指示する更新待ち読み出し命令を発行し、前記主記憶アクセス制御装置は、前記複数のプロセッサから発行された、前記主記憶へのアクセス命令を１以上記憶する命令記憶手段と、前記命令記憶手段に前記更新待ち読み出し命令が記憶されている場合、前記後続命令によって、前記特定の領域が更新されたのちに、前記特定の領域からの読み出しを実行する命令実行手段と、を備える。
【００１４】
上記目的を達成する他の見地において、本願発明の一態様に係るマルチプロセッサシステムにおける主記憶アクセス制御方法は、記憶を共有する複数のプロセッサと、前記プロセッサから発行された前記主記憶へのアクセス命令を処理する主記憶アクセス制御装置と、を備えたシステムにおいて、前記プロセッサは、前記主記憶における特定の領域からの読み出しを行う際に、前記特定の領域が、前記複数のプロセッサのうちの少なくともいずれかから発行された後続命令によって更新されるまで、前記特定の領域からの読み出しを保留することを指示する更新待ち読み出し命令を発行し、前記主記憶アクセス制御装置は、前記複数のプロセッサから発行された、前記主記憶へのアクセス命令を、命令記憶手段に１以上記憶し、前記命令記憶手段に前記更新待ち読み出し命令が記憶されている場合、前記後続命令によって、前記特定の領域が更新されたのちに、前記特定の領域からの読み出しを実行する。
【００１５】
また、上記目的を達成する更なる見地において、本願発明の一態様に係るマルチプロセッサシステムにおける主記憶アクセス制御プログラムは、主記憶を共有する複数のプロセッサと、前記プロセッサから発行された前記主記憶へのアクセス命令を処理する主記憶アクセス制御装置と、を備えたシステムにおいて、前記プロセッサが、前記主記憶における特定の領域からの読み出しを行う際に、前記特定の領域が、前記複数のプロセッサのうちの少なくともいずれかから発行された後続命令によって更新されるまで、前記特定の領域からの読み出しを保留することを指示する更新待ち読み出し命令を発行する場合に、前記複数のプロセッサから発行された、前記主記憶へのアクセス命令を、命令記憶手段に１以上記憶する命令記憶処理と、前記命令記憶手段に前記更新待ち読み出し命令が記憶されている場合、前記後続命令によって、前記特定の領域が更新されたのちに、前記特定の領域からの読み出しを実行する命令実行処理と、を前記主記憶アクセス制御装置に実行させるためのプログラムである。
【００１６】
更に、本願発明は、係るマルチプロセッサシステムにおける主記憶アクセス制御プログラム（コンピュータプログラム）が格納された、コンピュータ読み取り可能な、不揮発性の記録媒体によっても実現可能である。
【発明の効果】
【００１７】
本願発明は、主記憶を共有するマルチプロセッサシステムにおいて、プロセッサ間の同期処理において発生するオーバヘッドを低減することを可能とする。
【図面の簡単な説明】
【００１８】
【図１】本願発明の第１の実施形態に係るマルチプロセッサシステム１の構成を示すブロック図である。
【図２】本願発明の第１の実施形態に係る演算プロセッサ１０乃至１３から発行される更新待ち読み出し命令の命令情報の構成を例示する図である。
【図３】本願発明の第１の実施形態に係るメモリリクエストバッファ２２に格納された主記憶アクセス命令を例示する図である。
【図４】本願発明の第１の実施形態に係るマルチプロセッサシステム１の動作を示すフローチャートである。
【図５】本願発明の第２の実施形態に係るマルチプロセッサシステム２の構成を示すブロック図である。
【図６】本願発明の各実施形態に係る主記憶アクセス制御装置を実行可能な情報処理装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１９】
以下、本願発明の実施の形態について図面を参照して詳細に説明する。
【００２０】
＜第１の実施形態＞
図１は、本願発明の第１の実施の形態に係るマルチプロセッサシステム１を概念的に示すブロック図である。マルチプロセッサシステム１は、大別して、４個の演算プロセッサ１０乃至１３、ＩＯ（Input Output）プロセッサ１４、主記憶アクセス制御装置２０、及び、主記憶装置３０を備える。演算プロセッサ１０乃至１３、及び、ＩＯプロセッサ１４は主記憶装置３０を共有し、共通の論理アドレス空間にアクセス可能である。尚、マルチプロセッサシステム１が備える演算プロセッサの数は、４個に限定されず、複数であればよい。また、マルチプロセッサシステム１は、複数のＩＯプロセッサを備えてもよい。主記憶アクセス制御装置２０は、演算プロセッサ１０乃至１３、及び、ＩＯプロセッサ１４から発行された、主記憶装置３０に対するアクセス命令を処理する。図１に示すマルチプロセッサシステム１は、超並列計算機を構成する筐体内に実装されてもよい。
【００２１】
演算プロセッサ１０乃至１３は、様々なアプリケーションプログラム等を実行する。演算プロセッサ１０乃至１３は、並列動作可能な処理部分に分割されたプログラムを割り当てられることによって、当該プログラムを並列に処理することができる。演算プロセッサ１０乃至１３がプログラムを並列処理する場合、マルチプロセッサシステム１は、これらの演算プロセッサ間における同期処理を行う必要がある。本実施形態に係るマルチプロセッサシステム１は、主記憶装置３０における特定の領域（同期フラグ領域）を介して、その同期処理を行う。
【００２２】
例えば、マルチプロセッサシステム１は、処理Ａを実行する演算プロセッサｉ（ｉは１０乃至１３の少なくとも何れかの整数）と、処理Ａが完了したのちに実行する必要がある処理Ｂを実行する演算プロセッサｊ（ｊは１０乃至１３の少なくとも何れかの整数）との間で同期処理を行う場合、以下の通り動作する。すなわち、演算プロセッサｊは、演算プロセッサｉによる処理Ａが完了するまで、処理Ｂの開始を保留する。演算プロセッサｉは、処理Ａを完了したのち、主記憶装置３０における同期フラグ領域を更新する。演算プロセッサｊは、同期フラグ領域が更新されたことを検出したのち、処理Ｂを開始する。尚、演算プロセッサｊは、先行する更新待ち読み出し命令のリプライを受信するまで（即ち、処理Ｂの開始を保留中に）、処理Ａの完了に依存しない他の処理を実行可能である。
【００２３】
本実施形態に係る演算プロセッサｊは、この処理Ｂを実行するに際し、更新待ち読み出し命令を発行する。この更新待ち読み出し命令は、同期フラグ領域が演算プロセッサｉによって発行された命令によって更新されるまで、同期フラグ領域からの読み出しを保留する（中断する、停止する）ように指示する命令である。
【００２４】
図２は、更新待ち読み出し命令の命令情報１００の構成を例示する図である。図２に示す通り、更新待ち読み出し命令の命令情報１００は、命令コード１０１、更新待ち読み出し命令フラグ１０２、及び、アクセスアドレス１０３を含んでいる。
【００２５】
命令コード１０１は、主記憶装置３０からの読み出し命令であることを表す命令コードである。更新待ち読み出し命令フラグ１０２は、この読み出し命令が、更新待ち読み出し命令であることを表すフラグである。尚、更新待ち読み出し命令の命令情報１００は、命令コード１０１と更新待ち読み出し命令フラグ１０２とを含む代わりに、更新待ち読み出し命令として新たに定義された命令コードを含むようにしてもよい。
【００２６】
アクセスアドレス１０３は、主記憶装置３０における同期フラグ領域の場所を示すアドレスである。同期フラグ領域には、例えば、演算プロセッサ１０乃至１３が、その全ての組み合わせについて、互いに処理に関する同期をとることができるように、イベント情報に関する送信元と送信先との組み合わせごとにアドレスが割り当てられている。すなわち、例えば、演算プロセッサ１０（送信先）に対して演算プロセッサ１１乃至１３（送信元）がイベント情報を通知する際に使用する同期フラグ領域におけるアドレスは、それぞれの演算プロセッサに対して、個別に割り当てられている。イベント情報に関する送信元と送信先との、その他の組み合わせについても同様である。
【００２７】
図１に示す演算プロセッサｊは、更新待ち読み出し命令を発行したのち、主記憶アクセス制御装置２０による更新待ち読み出し命令の実行が完了するまで、処理Ｂの開始を保留する。演算プロセッサｊは、更新待ち読み出し命令の実行が完了することによって、演算プロセッサｉによって同期フラグ領域が更新されたことを確認したのち、処理Ｂを開始する。
【００２８】
図１に示す主記憶アクセス制御装置２０は、メモリリクエスト受信部２１、メモリリクエストバッファ２２、及び、命令実行部２３を備えている。メモリリクエスト受信部２１は、演算プロセッサ１０乃至１３、及び、ＩＯプロセッサ１４から発行された、主記憶装置３０に対するアクセス命令を受信する。メモリリクエスト受信部２１は、受信したアクセス命令を、メモリリクエストバッファ２２に格納する。
【００２９】
メモリリクエストバッファ２２は、メモリリクエスト受信部２１から入力された主記憶装置３０に対するアクセス命令を、１以上記憶可能なバッファである。
【００３０】
図３は、メモリリクエストバッファ２２に格納された、主記憶装置３０に対するアクセス命令を例示する図である。図３に例示する通り、本実施形態に係るメモリリクエストバッファ２２は、アクセス命令ごとに、Ｒ（Read）ビット、Ｌ（Length）ビット、Ｐ（Polling）ビット、及び、アクセスアドレスを含むレコード２２１乃至２２６を記憶している。メモリリクエストバッファ２２は、これらの情報以外に、例えば、アクセス命令の発行元である演算プロセッサの識別子等を記憶してもよい。メモリリクエストバッファ２２に記憶されたこれらの情報は、メモリリクエスト受信部２１によって、演算プロセッサ１０乃至１３、及び、ＩＯプロセッサ１４から受信したアクセス命令に含まれる命令情報から抽出された情報である。
【００３１】
Ｒビットは、当該アクセス命令が、読み出し命令であることを示す１ビットのフラグ（情報）である。Ｒビットは、「１」である場合、当該アクセス命令が読み出し命令であり、「０」である場合、当該アクセス命令が書き込み命令であることを示すこととする。
【００３２】
Ｌビットは、主記憶装置３０に対してアクセスするデータの長さを表す４ビットのフラグ（情報）である。図３に示す例では、Ｌビットは、「０」、「２」、「４」、「８」である場合、順に、「２バイト」、「２バイトにおける下位１バイト」、「２バイトにおける上位１バイト」、「４バイト」をアクセスすることを示すこととする。
【００３３】
Ｐビットは、「１」である場合に、当該アクセス命令が更新待ち読み出し命令であって、その実行が保留された状態にあることを示す、１ビットのフラグ（情報）である。
【００３４】
図３に示す例は、プログラムのメインルーチンを実行している演算プロセッサ１０による処理Ａが完了したのち、演算プロセッサ１１乃至１３が、処理Ａに後続する処理Ｂを並列に実行する場合に、メモリリクエストバッファ２２に格納された、アクセス命令を示している。
【００３５】
図３に示すレコード２２１乃至２２３は、順に、演算プロセッサ１１乃至１３が処理Ｂを実行するのに先立って発行した更新待ち読み出し命令を示すレコードであることとする。すなわち、レコード２２１が示すとおり、演算プロセッサ１１は、アドレス「００００００」における上位１バイトを読み出す更新待ち読み出し命令を発行している。アドレス「００００００」における上位１バイトは、演算プロセッサ１０が演算プロセッサ１１に対して通知するイベント情報を格納する同期フラグ領域を含むこととする。同様に、レコード２２２が示す通り、演算プロセッサ１２は、アドレス「０００００２」における下位１バイトを読み出す更新待ち読み出し命令を発行している。レコード２２３が示す通り、演算プロセッサ１３は、アドレス「０００００２」における上位１バイトを読み出す更新待ち読み出し命令を発行している。
【００３６】
図３に示すレコード２２４及び２２５は、演算プロセッサ１０が処理Ａを実行中に発行した、主記憶３０に対するアクセス命令を示すレコードであることとする。レコード２２４が示す通り、演算プロセッサ１０は、処理Ａを実行中に、アドレス「００００１０」における２バイトを読み出す通常の読み出し命令を発行している。レコード２２５が示す通り、演算プロセッサ１０は、処理Ａを実行中に、アドレス「００００１２」における２バイトに対する書き込み命令を発行している。
【００３７】
図３に示すレコード２２６は、演算プロセッサ１０が処理Ａを完了したのち、処理Ａを完了したことを演算プロセッサ１１乃至１３に通知するために発行した、同期フラグ領域を更新する書き込み命令を示すレコードであることとする。レコード２２６が示す通り、演算プロセッサ１０は、アドレス「００００００」における４バイトに対する書き込み命令を発行している。
【００３８】
図１に示す命令実行部２３は、メモリリクエストバッファ２２に記憶された、主記憶装置３０に対するアクセス命令を実行する。命令実行部２３は、メモリリクエスト送信部２４、及び、メモリリクエスト調停部２５を備えている。
【００３９】
メモリリクエスト調停部２５は、メモリリクエストバッファ２２に記憶された、主記憶装置３０に対するアクセス命令を実行する順番を調停する。メモリリクエストバッファ２２が、図３に示す通りアクセス命令を記憶している場合、メモリリクエスト調停部２５は、以下の通りに動作する。
【００４０】
すなわち、メモリリクエスト調停部２５は、レコード２２１乃至２２３におけるＰビットが１であることから、レコード２２１乃至２２３が示す更新待ち読み出し命令の実行を一旦保留する。メモリリクエスト調停部２５は、次に、レコード２２４及び２２５が示すアクセス命令を実行することを決定する。メモリリクエスト調停部２５は、さらに、レコード２２６が示す書き込み命令を実行することを決定する。メモリリクエスト調停部２５は、この際、レコード２２６が示す書き込み命令の書き込み先である領域が、レコード２２１乃至２２３が示す更新待ち読み出し命令の読み出し先である領域を含むことを確認する。メモリリクエスト調停部２５は、この確認によって、レコード２２１乃至２２３におけるＰビットを「１」から「０」にリセット（即ち、保留中でないことを示す状態に更新）する。メモリリクエスト調停部２５は、こののち、Ｐビットがリセットされた、レコード２２１及び２２３が示すアクセス命令を順次実行（再開）することを決定する。
【００４１】
メモリリクエスト送信部２４は、メモリリクエスト調停部２５による調停結果に従い、メモリリクエストバッファ２２からアクセス命令を順番に読み出す。メモリリクエスト送信部２４は、読み出したアクセス命令を主記憶装置３０に送信することによって、当該アクセス命令を実行する。
【００４２】
次に図４のフローチャートを参照して、本実施形態に係るマルチプロセッサシステム１の動作（処理）について詳細に説明する。
【００４３】
演算プロセッサｊは、演算プロセッサｉにより実行される処理Ａが完了したのちに実行する必要がある処理Ｂを実行するに際し、更新待ち読み出し命令を発行する（ステップＳ１０１）。メモリリクエストバッファ２２は、当該更新待ち読み出し命令を、Ｐビットが１に設定された状態で記憶する（ステップＳ１０２）。演算プロセッサｉは、処理Ａを実行する（ステップＳ１０３）。
【００４４】
演算プロセッサｉは、処理Ａを完了したのち、同期フラグ領域の内容を更新する書き込み命令を発行する（ステップＳ１０４）。命令実行部２５は、同期フラグ領域の内容を更新するとともに、当該更新待ち読み出し命令のＰビットを０にリセットする（ステップＳ１０５）。命令実行部２５は、当該更新待ち読み出し命令を実行することによって、同期フラグ領域の内容を読み出して、読み出した結果を演算プロセッサｊに通知する（ステップＳ１０６）。演算プロセッサｊは、処理Ｂを実行し（ステップＳ１０７）、全体の処理は終了する。
【００４５】
本実施形態に係るマルチプロセッサシステム１は、主記憶を共有するマルチプロセッサシステムにおいて、プロセッサ間の同期処理において発生するオーバヘッドを低減することができる。その理由は、マルチプロセッサシステム１が以下の通りに動作するからである、すなわち、
・演算プロセッサ１０乃至１３は、主記憶装置３０における同期フラグ領域からの読み出しを行う際に、同期フラグ領域が後続命令によって更新されるまで、その読み出しを保留することを指示する更新待ち読み出し命令を発行する。
【００４６】
・主記憶アクセス制御装置２０におけるメモリリクエストバッファ２２は、演算プロセッサ１０乃至１３から発行された主記憶装置３０へのアクセス命令を記憶する。
【００４７】
・主記憶アクセス制御装置２０における命令実行部２３は、メモリリクエストバッファ２２に更新待ち読み出し命令が記憶されている場合、当該後続命令によって、同期フラグ領域が更新されたのちに、同期フラグ領域からの読み出しを実行する。
【００４８】
以下に、本実施形態に係るマルチプロセッサシステム１によって実現される効果について、詳細に説明する。
【００４９】
主記憶を共有するマルチプロセッサシステムにおいて、各プロセッサは、他のプロセッサとの間の同期処理を行うために、通常、主記憶における同期フラグ領域を周期的にポーリングすることによって、同期フラグ領域に対する更新の有無を検出する。しかしながら、この場合、同期フラグ領域が更新されていないにも拘らず、プロセッサが主記憶をアクセスすることが生じる。したがって、この場合、主記憶を無駄にアクセスするので、プロセッサ間の同期処理において発生するオーバヘッドが大きいという問題がある。また、ポーリングによる主記憶アクセス頻度を低下させるために割り込み処理を行う方法もあるが、この方法でも、同期フラグ領域をポーリングする必要が残されているとともに、割り込み処理による負荷が大きいので、プロセッサ間の同期処理において発生するオーバヘッドが大きいという問題がある。したがって、主記憶を共有するマルチプロセッサシステムでは、プロセッサ間の同期処理において発生するオーバヘッドを低減することが課題である。
【００５０】
これに対して、本実施形態に係るマルチプロセッサシステム１では、演算プロセッサ１０乃至１３が発行可能な命令として、更新待ち読み出し命令を追加する。この更新待ち読み出し命令は、主記憶装置３０における特定の領域からの読み出しを行う際に、その特定の領域が、演算プロセッサのうちの少なくともいずれかから発行された後続命令によって更新されるまで、その特定の領域からの読み出しを保留することを指示する命令である。
【００５１】
演算プロセッサｊは、演算プロセッサｉとの間で同期処理を行う場合、主記憶装置３０における同期フラグ領域に対する更新待ち読み出し命令を発行する。発行された更新待ち読み出し命令は、主記憶アクセス制御装置２０におけるメモリリクエストバッファ２２に格納される。主記憶アクセス制御装置２０における命令実行部２３は、演算プロセッサｉによって同期フラグ領域が更新されるまで更新待ち読み出し命令の実行を保留し、同期フラグ領域が更新されたのちに、同期フラグ領域からの読み出しを実行する。
【００５２】
したがって、本実施形態に係るマルチプロセッサシステム１では、演算プロセッサｊは、同期フラグ領域に対する更新の有無を検出するために、同期フラグ領域に対する周期的なポーリングを行う必要がない。また、マルチプロセッサシステム１では、演算プロセッサｉは、演算プロセッサｊに対して、同期フラグ領域を更新したことを通知する割り込み処理を行う必要もない。これにより、本実施形態に係るマルチプロセッサシステム１は、プロセッサ間の同期処理において発生するオーバヘッドを低減することができる。
【００５３】
また、本実施形態に係る演算プロセッサ１０乃至１３は、外部のストレージ装置に格納されたデータを使用する場合に、更新待ち読み出し命令を発行してもよい。図１に示すＩＯプロセッサ１４には、ストレージ装置（不図示）が接続されている。例えば、演算プロセッサ１０は、ＩＯプロセッサ１４を経由して、当該ストレージ装置に格納されたデータを使用する処理を行う場合、ＩＯプロセッサ１４に対して、ストレージ装置に格納されたデータを主記憶装置３０に対してＤＭＡ（Direct Memory Access）転送することを指示する命令を発行する。演算プロセッサ１０は、次に、ＤＭＡ転送による転送先のアドレスを、読み出しアドレスとして指定した更新待ち読み出し命令を発行する。このとき、主記憶アクセス制御装置２０は、ＤＭＡ転送が完了するまで、転送先アドレスからの読み出しを保留する。主記憶アクセス制御装置２０は、ＤＭＡ転送が完了したのち、転送先アドレスからの読み出しを行うことによって、ＤＭＡ転送が完了したことを演算プロセッサ１０に通知する。この後、演算プロセッサ１０は、主記憶アクセス制御装置２０に転送されたデータを使用する処理を開始する。この場合、演算プロセッサ１０は、ＤＭＡ転送が完了したことを検出するために、主記憶装置３０に対して何度もポーリングを行う必要が無い。したがって、本実施形態に係る演算プロセッサ１０乃至１３は、ＤＭＡ転送を行う処理において発生するオーバヘッドも低減することができる。
【００５４】
＜第２の実施形態＞
図５は、第２の実施形態に係るマルチプロセッサシステム２の構成を概念的に示すブロック図である。
【００５５】
本実施形態に係るマルチプロセッサシステム２は、大別して、ｎ（ｎは２以上の任意の整数）個のプロセッサ４０−１乃至４０−ｎ、及び、主記憶アクセス制御装置５０を備えている。
【００５６】
プロセッサ４０−１乃至４０−ｎは、主記憶６０を共有する。プロセッサ４０−１乃至４０−ｎは、主記憶６０における特定の領域からの読み出しを行う際に、更新待ち読み出し命令を発行する。更新待ち読み出し命令は、その特定の領域が、プロセッサ４０−１乃至４０−ｎのうちの少なくともいずれかから発行された後続命令によって更新されるまで、その特定の領域からの読み出しを保留する（中断する、停止する）ように指示する命令である。
【００５７】
主記憶アクセス制御装置５０は、プロセッサ４０−１乃至４０−ｎから発行された主記憶６０へのアクセス命令を処理する装置であり、命令記憶部５２、及び、命令実行部５３を備える。
【００５８】
命令記憶部５２は、プロセッサ４０−１乃至４０−ｎから発行された、主記憶６０へのアクセス命令を１以上記憶する。
【００５９】
命令実行部５３は、命令記憶部５２に更新待ち読み出し命令が記憶されている場合、当該後続命令によって、当該特定の領域が更新されたのちに、その特定の領域からの読み出しを実行する。
【００６０】
本実施形態に係るマルチプロセッサシステム２は、主記憶を共有するマルチプロセッサシステムにおいて、プロセッサ間の同期処理において発生するオーバヘッドを低減することができる。その理由は、マルチプロセッサシステム２が以下の通りに動作するからである、すなわち、
・プロセッサ４０−１乃至４０−ｎは、主記憶６０における特定の領域からの読み出しを行う際に、その特定の領域が後続命令によって更新されるまで、その読み出しを保留することを指示する更新待ち読み出し命令を発行する。
【００６１】
・主記憶アクセス制御装置５０における命令記憶部５２は、プロセッサ４０−１乃至４０−ｎから発行された主記憶６０へのアクセス命令を記憶する。
【００６２】
・主記憶アクセス制御装置５０における命令実行部５３は、命令記憶部５２に更新待ち読み出し命令が記憶されている場合、当該後続命令によって、当該特定の領域が更新されたのちに、その特定の領域からの読み出しを実行する。
【００６３】
＜ハードウェア構成例＞
上述した各実施形態において図１、及び、図５に示した主記憶アクセス制御装置における各部は、専用のＨＷ（ＨａｒｄＷａｒｅ）（電子回路）によって実現することができる。また、図１及び図５において、少なくとも、下記構成は、ソフトウェアプログラムの機能（処理）単位（ソフトウェアモジュール）と捉えることができる。
・メモリリクエストバッファ２２及び命令記憶部５２における記憶制御機能、
・命令実行部２３及び５３。
【００６４】
但し、これらの図面に示した各部の区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。この場合のハードウェア環境の一例を、図６を参照して説明する。
【００６５】
図６は、本願発明の各実施形態に係る主記憶アクセス制御装置を実行可能な情報処理装置９００（コンピュータ）の構成を例示的に説明する図である。即ち、図６は、図１及び図５に示した主記憶アクセス制御装置を実現可能なコンピュータ（情報処理装置）の構成であって、上述した実施形態における各機能を実現可能なハードウェア環境を表す。
【００６６】
図６に示した情報処理装置９００は、構成要素として下記を備えている。
・ＣＰＵ（Ｃｅｎｔｒａｌ＿Ｐｒｏｃｅｓｓｉｎｇ＿Ｕｎｉｔ）９０１、
・ＲＯＭ（Ｒｅａｄ＿Ｏｎｌｙ＿Ｍｅｍｏｒｙ）９０２、
・ＲＡＭ（Ｒａｎｄｏｍ＿Ａｃｃｅｓｓ＿Ｍｅｍｏｒｙ）９０３、
・ハードディスク（記憶装置）９０４、
・外部装置との通信インタフェース９０５、
・バス９０６（通信線）、
・ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ＿Ｄｉｓｃ＿Ｒｅａｄ＿Ｏｎｌｙ＿Ｍｅｍｏｒｙ）等の記録媒体９０７に格納されたデータを読み書き可能なリーダライタ９０８、
・入出力インタフェース９０９。
【００６７】
即ち、上記構成要素を備える情報処理装置９００は、これらの構成がバス９０６を介して接続された一般的なコンピュータである。情報処理装置９００は、ＣＰＵ９０１を複数備える場合もあれば、マルチコアにより構成されたＣＰＵ９０１を備える場合もある。
【００６８】
そして、上述した実施形態を例に説明した本願発明は、図６に示した情報処理装置９００に対して、次の機能を実現可能なコンピュータプログラムを供給する。その機能とは、その実施形態の説明において参照したブロック構成図（図１及び図５）における上述した構成、或いはフローチャート（図４）の機能である。本願発明は、その後、そのコンピュータプログラムを、当該ハードウェアのＣＰＵ９０１に読み出して解釈し実行することによって達成される。また、当該装置内に供給されたコンピュータプログラムは、読み書き可能な揮発性のメモリ（ＲＡＭ９０３）またはハードディスク９０４等の不揮発性の記憶デバイスに格納すれば良い。
【００６９】
また、前記の場合において、当該ハードウェア内へのコンピュータプログラムの供給方法は、現在では一般的な手順を採用することができる。その手順としては、例えば、ＣＤ−ＲＯＭ等の各種記録媒体９０７を介して当該装置内にインストールする方法や、インターネット等の通信回線を介して外部よりダウンロードする方法等がある。そして、このような場合において、本願発明は、係るコンピュータプログラムを構成するコード或いは、そのコードが格納された記録媒体９０７によって構成されると捉えることができる。
【００７０】
以上、上述した実施形態を模範的な例として本願発明を説明した。しかしながら、本願発明は、上述した実施形態には限定されない。即ち、本願発明は、本願発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
【符号の説明】
【００７１】
１    マルチプロセッサシステム
１０乃至１３    演算プロセッサ
１４    ＩＯプロセッサ
２０    主記憶アクセス制御装置
２１    メモリリクエスト受信部
２２    メモリリクエストバッファ
２２１乃至２２６    レコード
２３    命令実行部
２４    メモリリクエスト送信部
２５    メモリリクエスト調停部
３０    主記憶装置
１００    更新待ち読み出し命令の命令情報
１０１    命令コード
１０２    更新待ち読み出し命令フラグ
１０３    アクセスアドレス
２    マルチプロセッサシステム
４０−１乃至４０−ｎ    プロセッサ
５０    主記憶アクセス制御装置
５２    命令記憶部
５３    命令実行部
６０    主記憶
９００    情報処理装置
９０１    ＣＰＵ
９０２    ＲＯＭ
９０３    ＲＡＭ
９０４    ハードディスク（記憶装置）
９０５    通信インタフェース
９０６    バス
９０７    記録媒体
９０８    リーダライタ
９０９    入出力インタフェース
【図１】
2017138755.tif 000003
【図２】
2017138755.tif 000004
【図３】
2017138755.tif 000005
【図４】
2017138755.tif 000006
【図５】
2017138755.tif 000007
【図６】
2017138755.tif 000008