(57)【要約】      （修正有）【課題】分散して配置されたメインメモリ間のデータの移動を、当該データを使用するプロセスを停止することなく、かつ、同一性を確保しつつ実行することが可能な不均一メモリアクセス機構を備える。【解決手段】複数のノードの各々は、一つ以上のプロセッサと一つ以上のメモリモジュールとに接続されたコントローラとを具備し、１つのノードの備える一つ以上のメモリモジュールへ割り当てられた移動元メモリ空間の記憶データを、１つのノードとは異なる他のノードの備える一つ以上のメモリモジュールの移動先メモリ空間へ移動するメモリコピー部と、メモリコピー部がメモリ移動処理を開始すると、移動元メモリ空間に対する書き込み処理を監視して、書き込み処理で移動元メモリ空間に書き込まれるデータと同一の書き込みデータを、移動先メモリ空間へ書き込むメモリミラー処理を行うメモリミラー部とを備える。【選択図】図１
2010211506.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードを備え、
前記複数のノードの各々は、
プロセスを実行する一つ以上のプロセッサと、
前記プロセスで使用するメモリ空間を割り当てられる一つ以上のメモリモジュールと、
前記一つ以上のプロセッサと前記一つ以上のメモリモジュールとに接続されたコントローラと
を具備し、
前記各ノードの前記コントローラは互いに接続されており、
前記各コントローラは、
前記複数のノードのうち１つのノードの備える前記一つ以上のメモリモジュールへ前記プロセスで使用するために割り当てられた移動元メモリ空間の記憶データを、前記１つのノードとは異なる他のノードの備える前記一つ以上のメモリモジュールの移動先メモリ空間へ移動するメモリ移動処理を行うメモリコピー部と、
前記メモリコピー部が前記メモリ移動処理を開始すると、前記移動元メモリ空間に対する書き込み処理を監視して、前記書き込み処理を検知すると、前記書き込み処理で前記移動元メモリ空間に書き込まれるデータと同一の書き込みデータを、前記移動先メモリ空間へ書き込むメモリミラー処理を行うメモリミラー部と
を備える不均一メモリアクセス機構を備えるコンピュータ。
【請求項２】
請求項１に記載の不均一メモリアクセス機構を備えるコンピュータであって、
前記他のノードは、前記移動元メモリ空間を使用する前記プロセスの動作する前記プロセッサの属するノードである
不均一メモリアクセス機構を備えるコンピュータ。
【請求項３】
請求項１または請求項２に記載の不均一メモリアクセス機構を備えるコンピュータであって、
前記１つ以上のプロセッサ上で動作するオペレーションシステムをさらに備え、
前記メモリコピー部と前記メモリミラー部は、前記プロセスを管理するオペレーティングシステムから、前記移動元メモリ空間のメモリアドレスと、前記移動先メモリ空間のメモリアドレスと、前記移動処理行う前記記憶データのデータサイズと、を含むメモリ移動情報を通知されて、前記メモリ移動情報に基づいて前記メモリ移動処理を実行する
不均一メモリアクセス機構を備えるコンピュータ。
【請求項４】
請求項３に記載の不均一メモリアクセス機構を備えるコンピュータであって、
前記コントローラは、前記メモリ移動情報を入力すると、前記移動元メモリ空間のメモリアドレスに基づいて、前記移動元メモリ空間が当該コントローラの属するノードの備える前記１つ以上のメモリモジュール上のメモリ空間であるか否かを判定し、
前記移動元メモリ空間が、当該コントローラの属するノード配下の前記１つ以上のメモリモジュール上のメモリ空間であると判定した場合、前記メモリコピー部と前記メモリミラー部へ前記メモリ移動情報を通知して、
前記移動元メモリ空間が、当該コントローラの属するノード配下の前記１つ以上のメモリモジュール上のメモリ空間でないと判定した場合、前記移動元メモリ空間の属する前記コントローラへ前記メモリ移動情報を転送する
不均一メモリアクセス機構を備えるコンピュータ。
【請求項５】
請求項３または請求項４に記載の不均一メモリアクセス機構を備えるコンピュータであって、
前記メモリコピー部は、前記メモリ移動処理を開始すると、前記コピー元メモリ空間の前記記憶データを前記データサイズ達するまで、当該メモリコピー部の属するノードの備える前記１つ以上のメモリモジュールに対して、前記コピー元メモリ空間の読み込みトランザクションを出力し、前記読み込みトランザクションで取得した結果を、前記コピー先メモリ空間に対する書き込みトランザクションとして前記他のノードへ出力して前記メモリ移動処理を実行する
不均一メモリアクセス機構を備えるコンピュータ。
【請求項６】
請求項３から請求項５までのいずれかに記載の不均一メモリアクセス機構を備えるコンピュータであって、
前記メモリミラー部は、前記メモリコピー部が前記メモリ移動処理を開始すると、前記メモリミラー部を備えるコントローラの入力するトランザクションを監視して、当該コントローラが前記コピー元メモリ空間に対する書き込みトランザクションを入力すると、当該書き込みトランザクションの書き込みデータと同一のデータを、前記コピー先メモリ空間への書き込みトランザクションとして前記他のノードへ出力することで前記メモリミラー処理を実行する
不均一メモリアクセス機構を備えるコンピュータ。
【請求項７】
請求項１から請求項６までのいずれかに記載の不均一メモリアクセス機構を備えるコンピュータであって、
前記メモリミラー部は、前記プロセスが一時停止するときに、前記メモリミラー処理を停止し、
前記オペレーションシステムは、前記プロセスを再開するときに、前記プロセスに割り当てられたメモリ空間の物理アドレスを、前記移動元メモリ空間から前記移動先メモリ空間へ置き換える
不均一メモリアクセス機構を備えるコンピュータ。
【請求項８】
請求項１から請求項７までのいずれかに記載の不均一メモリアクセス機構を備えるコンピュータであって、
前記１つ以上のプロセッサが前記コントローラを備える
不均一メモリアクセス機構を備えるコンピュータ。
【請求項９】
請求項１から請求項８までのいずれかに記載の不均一メモリアクセス機構を備えるコンピュータであって、
前記メモリコピー部は、前記プロセスが終了したときに前記メモリコピー処理を終了し、    
前記メモリミラー部は、前記プロセスが終了したときに前記メモリミラー処理を終了する
不均一メモリアクセス機構を備えるコンピュータ。
【請求項１０】
請求項１から請求項９までのいずれかに記載の不均一メモリアクセス機構を備えるコンピュータで使用されるコントローラ。
【請求項１１】
複数のノードを備え、
前記複数のノードの各々は、
プロセスを実行する一つ以上のプロセッサと、
前記プロセスで使用するメモリ空間を割り当てられる一つ以上のメモリモジュールと、
前記一つ以上のプロセッサと前記一つ以上のメモリモジュールとに接続されたコントローラとを具備する不均一メモリアクセス機構を備えるコンピュータにおいて、
前記各ノードの前記コントローラは互いに接続されており、
前記複数のノードのうち１つのノードの備える前記一つ以上のメモリモジュールへ、前記プロセスで使用するために割り当てられた移動元メモリ空間の記憶データを、前記１つのノードとは異なる他のノードの備える前記一つ以上のメモリモジュールの移動先メモリ空間へ移動するメモリ移動処理を行うステップと、
前記メモリコピー部が前記メモリ移動処理を開始すると、前記移動元メモリ空間に対する書き込み処理を監視して、前記書き込み処理を検知すると、前記書き込み処理で前記移動元メモリ空間に書き込まれるデータと同一の書き込みデータを、前記移動先メモリ空間へ書き込むメモリミラー処理を行うステップと
を備える不均一メモリアクセス機構を備えるコンピュータにおけるデータ移動方法。
【請求項１２】
請求項１１に記載の不均一メモリアクセス機構を備えるコンピュータにおけるデータ移動方法であって、
前記他のノードは、前記移動元メモリ空間を使用する前記プロセスの動作する前記プロセッサの属するノードである
不均一メモリアクセス機構を備えるコンピュータにおけるデータ移動方法。
【請求項１３】
請求項１１または請求項１２に記載の不均一メモリアクセス機構を備えるコンピュータにおけるデータ移動方法であって、前記不均一メモリアクセス機構を備えるコンピュータは、前記１つ以上のプロセッサ上で動作するオペレーションシステムをさらに備え、
前記メモリ移動処理を行うステップは、
前記プロセスを管理するオペレーティングシステムから、前記移動元メモリ空間のメモリアドレスと、前記移動先メモリ空間のメモリアドレスと、前記移動処理行う前記記憶データのデータサイズと、を含むメモリ移動情報を通知されるステップと、
前記メモリ移動情報に基づいて前記メモリ移動処理を実行するステップと
を含む不均一メモリアクセス機構を備えるコンピュータにおけるデータ移動方法。
【請求項１４】
請求項１３に記載の不均一メモリアクセス機構を備えるコンピュータにおけるデータ移動方法であって、前記メモリ移動処理を行うステップは、
前記メモリ移動情報を入力すると、前記移動元メモリ空間のメモリアドレスに基づいて、前記移動元メモリ空間が当該コントローラの属するノードの備える前記１つ以上のメモリモジュール上のメモリ空間であるか否かを判定するステップと、
前記移動元メモリ空間が当該コントローラの属するノード配下の前記１つ以上のメモリモジュール上のメモリ空間であると判定した場合、前記メモリコピー部と前記メモリミラー部へ前記メモリ移動情報を通知するステップと、
前記移動元メモリ空間が当該コントローラの属するノード配下の前記１つ以上のメモリモジュール上のメモリ空間でないと判定した場合、前記移動元メモリ空間の属する前記コントローラへ前記メモリ移動情報を転送するステップと
を含む不均一メモリアクセス機構を備えるコンピュータにおけるデータ移動方法。
【請求項１５】
請求項１３または請求項１４に記載の不均一メモリアクセス機構を備えるコンピュータにおけるデータ移動方法であって、前記メモリ移動処理を行うステップは、
前記メモリ移動処理を開始すると、前記コピー元メモリ空間の前記記憶データを前記データサイズに達するまで、当該メモリコピー部の属するノードの備える前記１つ以上のメモリモジュールに対して、前記コピー元メモリ空間の読み込みトランザクションを出力するステップと、
前記読み込みトランザクションで取得した結果を、前記コピー先メモリ空間に対する書き込みトランザクションとして前記他のノードへ出力するステップと
を含む不均一メモリアクセス機構を備えるコンピュータにおけるデータ移動方法。
【請求項１６】
請求項１３から請求項１５までのいずれかに記載の不均一メモリアクセス機構を備えるコンピュータにおけるデータ移動方法であって、前記メモリミラー処理を行うステップは、
前記メモリコピー部が前記メモリ移動処理を開始すると、前記メモリミラー部を備えるコントローラの入力するトランザクションを監視するステップと、
当該コントローラが前記コピー元メモリ空間に対する書き込みトランザクションを入力すると、当該書き込みトランザクションの書き込みデータと同一のデータを、前記コピー先メモリ空間への書き込みトランザクションとして前記他のノードへ出力するステップと
を含む不均一メモリアクセス機構を備えるコンピュータにおけるデータ移動方法。
【請求項１７】
請求項１１から請求項１６までのいずれかに記載の不均一メモリアクセス機構を備えるコンピュータにおけるデータ移動方法であって、
前記プロセスが一時停止するときに、前記メモリミラー処理を停止ステップと、
前記プロセスを再開するときに、前記プロセスに割り当てられたメモリ空間の物理アドレスを、前記移動元メモリ空間から前記移動先メモリ空間へ置き換えるステップと
をさらに備える不均一メモリアクセス機構を備えるコンピュータにおけるデータ移動方法。
【請求項１８】
請求項１１から請求項１７までのいずれかに記載の不均一メモリアクセス機構を備えるコンピュータにおけるデータ移動方法であって、
前記プロセスが終了したときに、前記メモリコピー処理を終了するステップと、
前記プロセスが終了したときに、前記メモリミラー処理を終了するステップと
をさらに備える不均一メモリアクセス機構を備えるコンピュータにおけるデータ移動方法。
【請求項１９】
請求項１１から請求項１８までのいずれかに記載の不均一メモリアクセス機構を備えるコンピュータにおけるデータ移動方法を、コンピュータへ実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不均一メモリアクセス機構を備えるコンピュータに関する。
【背景技術】
【０００２】
ＮＵＭＡ（Ｎｏｎ−Ｕｎｉｆｏｒｍ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）は、分散して設置されるメインメモリに対して、不均一メモリアクセス機構を備えるコンピュータである。ＮＵＭＡは、分散して配置されたノードと呼ばれる処理単位毎に、一つ以上のプロセッサと、プロセッサからアクセス可能なメインメモリとの組を備える。各ノードのプロセッサは、自ノード内のローカルメモリへも、他ノードのリモートメモリへもアクセスして処理を行うことが可能である。そのため、各プロセッサは、あるプロセスにおけるデータを、ローカルメモリを用いて処理を行う場合と、リモートメモリを用いて処理を行う場合とでは、物理的要因によりメモリアクセス時間が異なる。ここで、メモリアクセス時間とは、プロセッサが、メモリモジュールに対して要求を出力してから、メモリモジュールから応答を入力するまでの時間である。各プロセッサは、プロセッサの処理を最適化するために、ローカルメモリ上に処理を行うデータを展開することが望ましい。オペレーティングシステムは、各プロセッサの処理を行うプロセスを管理しており、各プロセッサがリモートメモリ上でプロセスを実行している場合には、当該プロセスに係るデータをローカルメモリ上へ移動して、ローカルメモリ上でプロセスを実行可能となるように制御する。このような、メインメモリ間のデータ移動に関する技術が、以下の通り開示されている。
【０００３】
特許文献１は、メインメモリへのメモリアクセス時間を低減するために、ＮＵＭＡコンピュータシステムでデータを移動するシステムを開示している。
【０００４】
特許文献１のコンピュータシステムは、複数の処理ノードを備えたメモリコンピュータシステムであって、各処理ノードは、メインメモリのローカル部分と、記憶機構と、ページ移動コントローラとを備える。メインメモリのローカル部分は、複数のメモリページを有する。記憶機構は、コンピュータシステムの各領域のカウントをメインメモリのローカル部分におかれている各メモリページごとにストアしておく。記憶機構の各領域は、コンピュータシステムの１つまたは２つ以上の処理ノードを収容している。ページ移動コントローラは、メモリアクセス要求によってアドレスされたメモリページをメインメモリの該ローカル部分からリクエスタ処理ノードへ移動しておくべきかどうかを決定する。なお、メモリアクセス要求は、リクエスタ処理ノードから出力されたものである。
【０００５】
ページ移動コントローラは、取得手段と、インクリメンタと、ストア手段と、移動信号発行手段とを備える。取得手段は、前述した記憶機構にアクセスして、メモリアクセス要求によってアドレスされたメモリページと、該リクエスタ処理ノードに関連付けられた第１カウントと、該アドレスされたメモリページと前述のローカル処理ノードに関連付けられた第２カウントと、を取得する。インクリメンタは、リクエスタ処理ノードから発せられるメモリアクセス要求に応答して、第１カウントをインクリメントする。ストア手段は、インクリメントされた第１カウントを記憶機構にストアする。移動信号発行手段は、第２カウントとインクリメントされた第１カウントとの差が移動閾値より大きいとき移動信号を発行する。
【０００６】
特許文献１のコンピュータシステムよれば、データ項目を、当該データ項目に最も頻繁にアクセスするプロセッサが置かれている処理ノードへ、またはその近くへ移動する。移動信号を発行するための判定は、ハードウェアによって実現されている。そのため、メモリアクセス毎にカウントを更新してもシステムパフォーマンスが低下する恐れがない。従って、ＮＵＭＡコンピュータシステムにおけるメモリページの移動を効率的、かつ効果的に行うことができる。
【０００７】
また、特許文献２は、中央演算装置（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の処理能力を圧迫せず、共有メモリに対する系間データの書き込み又は読み出しを迅速に検出することが可能な通信システムを開示している。
【０００８】
特許文献２の通信システムは、二重化装置の系間データのデータ転送を、各系の装置で共通に使用される共有メモリを介して行う通信システムである。特許文献２の通信システムは、ダイレクトメモリアクセスコントローラ（ＤＭＡＣ：Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｅｒ）と、割込み分岐回路とを備える。ＤＭＡＣは、各系の装置のローカルメモリと共有メモリとの間のデータ転送を制御する。ＤＭＡＣは、各系毎に備えられる。割込み分岐回路は、ＤＭＡＣによるローカルメモリから共有メモリへのデータ転送の完了を、自系及び他系のＣＰＵに割り込み通知する。さらに、特許文献２の通信システムは、ローカルメモリのデータの共有メモリへの書き込み完了を、送信先である他系のＣＰＵに割り込み通知手段を備える。
【０００９】
特許文献２の通信システムによれば、送信側で行った共有メモリへのデータ書き込みの完了を、受信側の割込みによって通知するために、受信側では迅速に共有メモリからデータの読み出しを行うことができる。そのため、ＣＰＵに処理負担をかけることなく、共有メモリを介したデータ転送を高速に行うことができる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特許第３８８９０４４号
【特許文献２】特開２００４−０７０６４２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
本発明の目的は、分散して配置されたメインメモリ間のデータの移動を、当該データを使用するプロセスを停止することなく、かつ、同一性を確保しつつ実行することが可能な不均一メモリアクセス機構を備えるコンピュータを提供することである。
【課題を解決するための手段】
【００１２】
本発明の不均一メモリアクセス機構を備えるコンピュータは、複数のノードを備え、複数のノードの各々は、プロセスを実行する一つ以上のプロセッサと、プロセスで使用するメモリ空間を割り当てられる一つ以上のメモリモジュールと、一つ以上のプロセッサと一つ以上のメモリモジュールとに接続されたコントローラとを具備し、前記各ノードの前記コントローラは互いに接続されており、複数のノードのうち１つのノードの備える一つ以上のメモリモジュールへ、プロセスで使用するために割り当てられた移動元メモリ空間の記憶データを、１つのノードとは異なる他のノードの備える一つ以上のメモリモジュールの移動先メモリ空間へ移動するメモリ移動処理を行うメモリコピー部と、メモリコピー部がメモリ移動処理を開始すると、移動元メモリ空間に対する書き込み処理を監視して、書き込み処理を検知すると、書き込み処理で移動元メモリ空間に書き込まれるデータと同一の書き込みデータを、移動先メモリ空間へ書き込むメモリミラー処理を行うメモリミラー部とを備える。
【００１３】
本発明のコントローラは、上記の不均一メモリアクセス機構を備えるコンピュータで使用される。
【００１４】
本発明の不均一メモリアクセス機構を備えるコンピュータにおけるデータ移動方法は、複数のノードを備え、複数のノードの各々は、プロセスを実行する一つ以上のプロセッサと、プロセスで使用するメモリ空間を割り当てられる一つ以上のメモリモジュールと、一つ以上のプロセッサと一つ以上のメモリモジュールとに接続されたコントローラとを具備する不均一メモリアクセス機構を備えるコンピュータにおいて、前記各ノードの前記コントローラは互いに接続されており、複数のノードのうち１つのノードの備える一つ以上のメモリモジュールへ、プロセスで使用するために割り当てられた移動元メモリ空間の記憶データを、１つのノードとは異なる他のノードの備える一つ以上のメモリモジュールの移動先メモリ空間へ移動するメモリ移動処理を行うステップと、メモリコピー部がメモリ移動処理を開始すると、移動元メモリ空間に対する書き込み処理を監視して、書き込み処理を検知すると、書き込み処理で移動元メモリ空間に書き込まれるデータと同一の書き込みデータを、移動先メモリ空間へ書き込むメモリミラー処理を行うステップと、を備える。
【００１５】
本発明のコンピュータプログラムは、上記の不均一メモリアクセス機構を備えるコンピュータにおけるデータ移動方法をコンピュータに実行させる。
【発明の効果】
【００１６】
本発明によれば、分散して配置されたメインメモリ間のデータの移動を、当該データを使用するプロセスを停止することなく、かつ、同一性を確保しつつ実行することが可能な不均一メモリアクセス機構を備えるコンピュータを提供できる。
【図面の簡単な説明】
【００１７】
【図１】本実施形態における不均一メモリアクセス機構を備えるコンピュータの構成を示す機能ブロック図である。
【図２】本実施形態における不均一メモリアクセス機構を備えるコンピュータの動作フローである。
【図３】本実施形態におけるプロセッサが内部にメモリコントローラを備える場合のノード構成である。
【発明を実施するための形態】
【００１８】
添付図面を参照して、本発明の実施形態による不均一メモリアクセス機構を備えるコンピュータを以下に説明する。
【００１９】
［構成の説明］
はじめに、本実施形態における不均一メモリアクセス機構を備えるコンピュータの構成の説明を行う。図１は、本実施形態における不均一メモリアクセス機構を備えるコンピュータの構成を示す機能ブロック図である。
【００２０】
本実施形態の不均一メモリアクセス機構を備えるコンピュータ（以下、コンピュータと表記する。）は、ノード１とノード２とを備える。ノード１とノード２とは、システムバス４により電気的に接続されており、データの送受信を行うことが可能である。本実施形態において、コンピュータは、ノード１、２のみを備えるが、ノードの数はこれに限定せず、より多くのノードを備える場合がある。その場合、他のノードもシステムバス４を介して電気的に接続され、データの送受信が可能となっている。
【００２１】
ここで、本実施形態のコンピュータは、マルチプロセッサシステムを備えたコンピュータである。コンピュータは、いずれも図示されない記憶部と、処理部と、入出力部と、通信部を備える。記憶部は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）や、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）や、ハードディスクを備えて、コンピュータの機能を実現するための処理用プログラムやデータを記憶する。処理部は、ノード１、２を備えて、記憶部から処理用プログラムを読込んで実行する。入出力部は、キーボードや、マウスや、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）や、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ）ドライブを備えた、ユーザとの入出力インターフェイスである。通信部は、通信ポートを備え、外部装置とのデータ通信を行う。コンピュータは、記憶部に記憶された処理用プログラムを、処理部が読込んで実行することにより、機能を実現する。
【００２２】
ノード１は、プロセッサ１１、１２と、コントローラ１４と、メモリモジュール１６、１７とを備える。プロセッサ１１、１２と、コントローラ１４とは、プロセッサバス１３により電気的に接続されており、データの送受信を行うことが可能である。また、コントローラ１４と、メモリモジュール１６、１７とは、メモリバス１５により電気的に接続されており、データの送受信を行うことが可能である。つまり、プロセッサ１１、１２は、コントローラ１４を介して、メモリモジュール１６、１７とデータ送受信を行うことができる。また、コントローラ１４は、システムバス４と接続されており、他のノード（本実施形態ではノード２のみ）のコントローラ（本実施形態ではコントローラ２４のみ）とシステムバス４を介してデータの送受信が可能である。さらに、コントローラ１４は、メモリコピー部１４１と、メモリミラー部１４２とを備える。各部の詳細は、後述する。
【００２３】
ノード１とノード２（或いは、さらに多くのノードを備える場合はそれらを含む。）は、基本的に同じ構成である。ノード２は、プロセッサ２１、２２と、コントローラ２４と、メモリモジュール２６、２７とを備える。プロセッサ２１、２２とコントローラ２４とは、プロセッサバス２３により電気的に接続されており、データの送受信が可能である。また、コントローラ２４と、メモリモジュール２６、２７とは、メモリバス２５により電気的に接続されており、データの送受信が可能である。つまり、プロセッサ２１、２２は、コントローラ２４を介して、メモリモジュール２６、２７とデータ送受信を行うことができる。また、コントローラ２４は、システムバス４と接続されており、他のノード（本実施形態ではノード１のみ）のコントローラ（本実施形態ではコントローラ１４のみ）とシステムバス４を介してデータの送受信が可能である。さらに、コントローラ２４は、メモリコピー部２４１と、メモリミラー部２４２とを備える。なお、ノード２は、ノード１と同様の構成と機能を備えるため、以下における詳細な説明は省略する。
【００２４】
ここで、ノード１の説明に戻る。プロセッサ１１、１２は、プログラム（プロセス）を実行する。プロセッサ１１、１２は、プロセッサバス１３へメモリ読み込みトランザクションを出力し、メモリモジュール１６、１７からデータを読込んでプログラムを実行する。また、プロセッサ１１、１２は、プロセッサバスへ、メモリ書き込みトランザクションを出力して、メモリモジュール１６、１７へデータを書き込む。また、プロセッサ１１、１２は、自ノード（ノード１）のローカルメモリ（メモリモジュール１６、１７）だけでなく、他ノード（本実施形態ではノード２のみ）のリモートメモリ（本実施形態ではメモリモジュール２６、２７のみ）に対して、メモリ書き込み／メモリ読み込みトランザクションを出力して、メモリモジュール２６、２７に対するデータの読み出し／書き込みを行うことが可能である。また、プロセッサ１１、１２は、プロセッサバス１３に割り込みトランザクションが流れた場合、現在実行中のプログラムを中断して、予め定められたプログラムへ実行を切り替える機能を備える。
【００２５】
さらに、本実施形態のプロセッサ１１、１２は、後述するオペレーティングシステム（以下、ＯＳ）１２１からの命令により、プロセッサバス１３へ、メモリ移動処理命令を出力する。メモリ移動処理命令は、コピー元のメモリアドレスと、コピーするデータサイズと、コピー先のメモリアドレスとを含む。以下、コピー元のメモリアドレスと、コピーするデータサイズと、コピー先のメモリアドレスとを含めて、メモリ移動処理情報と呼ぶ。
【００２６】
メモリモジュール１６、１７は、プロセスで使用されるデータを記憶する。メモリモジュール１６、１７は、ノード１内のプロセッサ１１、１２上で動作するプロセスの処理するデータを記憶するだけでなく、ノード２内のプロセッサ２１、２２上で動作するプロセスからもデータを記憶される。
【００２７】
コントローラ１４は、各バスを介して、各メモリモジュールの読み書きを行う。コントローラ１４は、プロセッサバス１３、システムバス４から入力するトランザクションを監視する。コントローラ１４は、トランザクションで指定されるメモリモジュールのアドレスが、自ノード配下のローカルメモリに該当する場合、つまり、ノード１のメモリモジュール１６、１７に該当する場合、メモリバス１５へ同様のトランザクションを出力する。一方、コントローラ１４は、トランザクションで指定されるメモリモジュールのアドレスが、他ノード配下のリモートメモリに該当する場合、つまり、本実施形態におけるノード２のメモリモジュール２６、２７に該当する場合、システムバス４へ同様のトランザクションを出力する。
【００２８】
コントローラ１４は、メモリコピー部１４１と、メモリミラー部１４２とを備える。コントローラ１４は、プロセッサバス１３、或いはシステムバス４からメモリ移動処理命令を入力すると、メモリコピー部１４１と、メモリミラー部１４２へ通知する。
【００２９】
メモリコピー部１４１は、異なる２つのノード間において、当該ノードの備えるメモリモジュールに割り当てられたメモリ空間のデータを移動する処理（以下メモリ移動処理）を行う。メモリコピー部１４１は、メモリ移動処理により、他ノードであるノード２のコントローラ２４配下のメモリモジュール２６（あるいはメモリモジュール２７）に記憶されたデータを、自ノードであるノード１のコントローラ１４配下のメモリモジュール１６（あるいはメモリモジュール１７）にコピーする。あるいは、メモリコピー部１４１は、メモリ移動処理により、自ノードであるノード１のコントローラ１４配下のメモリモジュール１６（あるいはメモリモジュール１７）に記憶されたデータを、自ノード１のコントローラ１４配下のメモリモジュール１６（あるいはメモリモジュール１７）にコピーする。なお、本実施形態において、メモリコピー部１４１は、自ノード配下のメモリモジュールのメモリ空間に記録されたデータを、他ノード配下のメモリモジュールのメモリ空間へ移動するメモリ移動処理を行うが、例えば、他ノード間でデータをコピーするメモリ移動処理を行ってもよい。メモリコピー部１４１は、コントローラ１４がプロセッサバス１３から、或いはシステムバス４から入力したメモリ移動処理命令を通知されると、メモリ移動処理を実行する。メモリコピー部１４１は、メモリ移動処理命令により通知されるメモリ移動処理情報（コピー元のメモリアドレスと、コピーするデータサイズと、コピー先のメモリアドレス）に基づいて、メモリ移動処理を行う。メモリコピー部１４１は、コピー元のメモリアドレスに記憶されたデータから、コピーするデータサイズ分を、コピー先メモリアドレスへコピーを行う。
【００３０】
メモリミラー部１４２は、メモリコピー部１４１がメモリ移動処理の実行を開始すると、コピー元（移動元）のメモリ空間に対するデータの書き込みトランザクションを検知して、同一のデータをコピー先（移動先）のメモリ空間に対して書き込む機能（メモリミラー処理）を備える。メモリミラー部１４２は、メモリ移動処理命令により通知されるメモリ移動情報（コピー元のメモリアドレスと、コピーするデータサイズと、コピー先のメモリアドレス）に基づいて、メモリミラー処理を行う。メモリミラー部１４２は、メモリコピー部１４１がメモリ移動処理を開始すると、メモリミラー処理を開始する。メモリミラー部１４２は、メモリミラー処理を開始すると、コントローラ１４の入力するトランザクションを監視する。メモリミラー部１４２は、コントローラ１４が入力するトランザクションにおいて、メモリ移動情報のコピー元のメモリ空間のメモリアドレスに対するメモリ書き込みトランザクションを検知すると、同様の書き込みデータを、コピー先のメモリ空間のメモリアドレスに対して書き込むトランザクションを出力する。
【００３１】
本実施形態においてメモリミラー部１４２は、メモリーコピー部１４１がメモリ移動処理の実行を開始すると、メモリミラー処理を実行することで、コピー先のデータに対するリアルタイムのメモリコピーを保証する。例えば、メモリコピー部１４１が、特定のメモリ範囲に対するメモリ移動処理を実行している状態において、当該メモリ範囲の前半部分のみのコピーを完了した状態にある場合を考えてみる。このときに、プロセッサ上で動作するプロセスが、コピー元のメモリ範囲の前半部分を書き換えるトランザクションを発行すると、メモリコピー部１４１がメモリ移動処理を完了したときにコピー元メモリアドレスとコピー先メモリアドレスとのメモリ内容に差が発生してしまう。メモリミラー部１４２は、このような状況を解決することが可能である。
【００３２】
以上が、本実施形態における不均一メモリアクセス機構を備えるコンピュータの構成の説明である。
【００３３】
［動作方法の説明］
次に、本実施形態における不均一メモリアクセス機構を備えるコンピュータの動作方法の説明を行う。図２は、本実施形態における不均一メモリアクセス機構を備えるコンピュータの動作フローである。なお、本説明において、図１に示すように、プロセッサ１１上でプロセス１１１が動作しており、プロセス１１１は、ノード２のメモリモジュール２６にメモリ空間（以下、コピー元メモリ空間２６１）を割り当てられているとする。このメモリ空間２６１に記録されたデータをノード１のメモリモジュール１６のメモリ空間（以下、コピー先メモリ空間１６１）へ移動する場合を例として説明を行う。また、プロセッサ１２上ではＯＳ１２１が動作しており、プロセッサ１１上で動作するプロセス１１１を管理しているものとする。
【００３４】
（ステップＳ１０）
ＯＳ１２１は、プロセス１１１に割り当てられているメモリ空間に対するメモリ移動処理を命令する。プロセス１１１は、この時点で、ノード２内のメモリモジュール２６上にメモリ空間（コピー元メモリ空間２６１）を割り当てられている。プロセッサ１２上で動作するＯＳ１２１は、プロセス１１１に割り当てられているコピー元メモリ空間２６１のデータを、ノード１内のメモリモジュール１６上のメモリ空間（コピー先メモリ空間１６１）へ移動するようメモリ移動処理を命令する。ＯＳ１２１は、メモリ移動処理を命令すると同時に、プロセス１１１を管理しているデータに、プロセス１１１のメモリ空間を移動中であることを記録する。また、ＯＳ１２１は、プロセス１１１を管理しているデータに、メモリ移動処理情報（コピー元メモリアドレスと、コピーするデータサイズと、コピー先メモリアドレス）を記録する。プロセス１１１によるメモリ移動処理が完了すると、ＯＳ１２１は、データのアドレス変換を行う必要があるためである。ＯＳ１２１は、メモリ移動情報を含めたメモリ移動処理命令をプロセッサバス１３へ出力する。なお、ＯＳ１２１は、メモリ移動処理命令を出力した時点で、メモリ移動処理の命令処理を終了して、プロセッサ１２を開放する。そのため、プロセッサ１２は、他のプロセスを実行するために用いることができる。
【００３５】
（ステップＳ２０）
コントローラ１４は、メモリ移動処理情報を、転送する。コントローラ１４は、プロセッサバス１３からメモリ移動処理命令を入力する。コントローラ１４は、メモリ移動処理情報に基づいて、メモリ移動処理の対象となるコピー元メモリ空間２６１が、いずれのノードのメモリモジュール上に存在するのかを判定する。コントローラ１４は、コピー元メモリアドレスに基づいて、コピー元メモリ空間２６１が、自ノード（ノード１）の備えるメモリモジュール１６、１７上のメモリ空間でないと判定する。コントローラ１４は、コピー元メモリ空間２６１の存在するノードのコントローラに対して、メモリ移動処理命令を転送する。本実施形態において、コントローラ１４は、コピー元メモリ空間２６１の存在するノード２のコントローラ２４に対して、メモリ移動処理命令を転送する。コントローラ１４は、メモリ移動処理命令をシステムバス４へ出力する。
【００３６】
（ステップＳ３０）
メモリコピー部２４１が、メモリ移動処理情報に基づいて、メモリ移動処理を開始する。コントローラ２４は、システムバス４から、メモリ移動処理命令を入力する。コントローラ２４は、メモリ移動処理情報に基づいて、メモリ移動処理の対象となるコピー元メモリ空間２６１が、いずれのノードのメモリモジュール上に存在するのかを判定する。コントローラ２４は、コピー元メモリアドレスに基づいて、コピー元メモリ空間２６１が、自ノード（ノード１）の備えるメモリモジュール２６のメモリ空間であると判定する。コントローラ２４は、コピー元メモリ空間２６１が自ノード配下のメモリ空間であると判定すると、メモリ移動処理命令を、メモリコピー部２４１へ通知する。メモリコピー部２４１は、メモリ移動処理命令を通知されると、メモリ移動処理命令に含まれるメモリ移動処理情報に基づいて、メモリ移動処理を開始する。メモリコピー部２４１は、メモリ移動処理を開始すると、コピー元メモリ空間２６１に対する読み出しトランザクションを、メモリバス２５へ出力する。メモリコピー部２４１は、読み出しトランザクションの結果を入力すると、コピー先メモリ空間１６１への書き込みトランザクションを、システムバス４へ出力する。ノード１のコントローラ１４は、コピー先メモリ空間１６１への書き込みトランザクションを、システムバス４から入力すると、コピー先メモリ空間１６１がコントローラ１４配下のメモリモジュール上のメモリ空間であるか否かを判定する。コントローラ１４は、コピー先メモリ空間１６１がコントローラ１４配下のメモリモジュール１６上のメモリ空間であると判定すると、当該書き込みトランザクションをメモリバス１５へ出力する。メモリコピー部２４１は、このような処理をメモリ移動処理情報に含まれるコピーするデータサイズに到達するまで繰り返して、コピー元メモリ空間２６１に記録されたデータをコピー先メモリ空間１６１へコピーする。
【００３７】
（ステップＳ４０）
メモリミラー部２４２は、メモリ移動処理情報に基づいて、トランザクションの監視を開始する。コントローラ２４は、システムバス４から入力したメモリ移動処理命令をメモリコピー部２４１へ通知するのと同時に、メモリミラー部２４２へも通知する。メモリミラー部２４２は、メモリコピー部２４１がメモリ移動処理を開始すると、メモリミラー処理を開始する。メモリミラー部２４２は、メモリミラー処理を開始すると、コントローラ２４の入力するトランザクションの監視を行う。
【００３８】
（ステップＳ５０）
メモリミラー部２４２は、コピー元メモリ空間２６１に対する書き込みトランザクションを検知するかを判定する。メモリミラー部２４２は、コントローラ２４の入力するトランザクションの監視を開始すると、コントローラ２４が入力するトランザクションに、メモリ移動情報のコピー元のメモリアドレス、つまり、コピー元メモリ空間２６１に対するメモリ書き込みトランザクションを検知するか否かを判定する。検知した場合は、ステップＳ６０へ進む。一方、検知しない場合は、ステップＳ７０へ進む。
【００３９】
（ステップＳ６０）
メモリミラー部２４２は、同一のデータ内容を、コピー先メモリ空間１６１へ書き込む。メモリミラー部２４２は、コントローラ２４の入力するトランザクションに、コピー元メモリ空間２６１に対するメモリ書き込みトランザクションを検知した場合、同一のデータを、コピー先のメモリアドレス（コピー先メモリ空間１６１）に対して書き込むトランザクションを、システムバス４へ出力する。ノード１のコントローラ１４は、コピー先メモリ空間１６１への書き込みトランザクションを、システムバス４から入力すると、コピー先メモリ空間１６１がコントローラ１４配下のメモリモジュール上のメモリ空間であるか否かを判定する。コントローラ１４は、コピー先メモリ空間１６１がコントローラ１４配下のメモリモジュール１６上のメモリ空間であると判定すると、当該書き込みトランザクションをメモリバス１５へ出力する。このようにして、メモリミラー部２４２は、メモリコピー部２４１のメモリ移動処理中に、コピー元メモリ空間２６１に対する書き込みを検知して、同一のデータをコピー先メモリ空間１６１へ書き込む。そのため、メモリコピー部２４１のメモリ移動処理の前後を通じて、コピー元メモリ空間２６１とコピー先メモリ空間１６１との記憶内容の同一性を確保することができる。
【００４０】
（ステップＳ７０）
メモリコピー部２４１は、メモリ移動処理を完了したか否かを判定する。メモリコピー部２４１は、ステップＳ３０で説明を行ったメモリ移動処理を、メモリ移動処理情報に含まれるコピーするデータサイズに到達するまで繰り返す。メモリコピー部２４１は、コピーするデータサイズに到達すると、メモリ移動処理を完了する。メモリ移動処理が完了していない場合、ステップＳ８０へ進む。一方、メモリ移動処理が完了した場合、ステップＳ９０へ進む。
【００４１】
（ステップＳ８０）
メモリミラー部２４２は、メモリ移動処理情報に基づいて、トランザクションの監視を継続する。メモリミラー部２４２は、メモリコピー部２４１によるメモリ移動処理が完了するまで、トランザクションの監視を継続する。この後、ステップＳ５０へ戻る。
【００４２】
（ステップＳ９０）
メモリコピー部２４１は、ＯＳ１２１に対してメモリ移動処理の完了を通知する。メモリコピー部２４１は、メモリ移動処理が完了すると、システムバス４へ、メモリ移動処理の完了を通知する割り込み通知を出力する。コントローラ１４は、システムバス４から割り込み通知を入力すると、プロセッサバス１３を介してプロセッサ１２へ転送する。プロセッサ１２上で動作するＯＳ１２１は、割り込み通知を入力すると、プロセッサ１１上で動作するプロセス１１１のメモリ移動処理が完了したことを検知する。ＯＳ１２１は、プロセス１１１を管理しているデータに、プロセス１１１のメモリ空間の移動が完了したことを記録する。
【００４３】
（ステップＳ１００）
メモリミラー部２４２は、トランザクションの監視を終了する。ＯＳ１２１は、プロセッサ１１上で動作するプロセス１１１を一時停止して、プロセッサ１１を他のプロセスに開放する時に、メモリミラー部２４２へメモリミラー処理の停止命令を発行する。メモリミラー処理の停止命令は、プロセッサバス１３、コントローラ１４、システムバス４を介して、コントローラ２４へ通知される。メモリミラー部２４２は、コントローラ２４からメモリミラー処理の停止命令を入力すると、メモリミラー処理を停止する。この後、ＯＳ１２１は、プロセッサ１１上でプロセス１１１を再開するときに、プロセス１１１を管理するデータを検査して、メモリ空間の移動を検知する。ＯＳ１２１は、メモリ空間の移動に応じて、仮想アドレス−物理アドレスの変換情報を、コピー元メモリアドレスから、コピー先メモリアドレスへ更新する。これにより、この後、プロセッサ１１は、プロセス１１１の処理において、コピー先メモリアドレス（コピー先メモリ空間１６１）を参照することになる。
【００４４】
以上が、本実施形態における不均一メモリアクセス機構を備えるコンピュータの動作方法の説明である。
【００４５】
ここまで、本実施形態における不均一メモリアクセス機構を備えるコンピュータ説明をしてきた、本発明によれば、ＯＳ１２１から命令を受けた、メモリコピー部１４１（２４１）と、メモリミラー部１４２（２４２）とにより、プロセス１１１に割り当てられたメモリ空間のデータを移動する。そのため、メモリ移動処理中において、プロセス１１１を停止することがない。平行して動作を行うプロセス１１１は、メモリ移動処理中においても、コピー元のメモリ空間に対する読み込み／書き込み処理を行うことが可能である。
【００４６】
また、メモリミラー部１４２（２４２）は、メモリコピー部１４１（２４１）によるメモリ移動処理中に、コピー元メモリアドレスに対する書き込みを検知すると、コピー先メモリアドレスへ同一のデータの書き込みを行う。そのため、メモリ移動処理中にコピー元のメモリ空間に対して書き込み処理が行われたとしても、同一のデータがコピー先のメモリ空間へも書き込みされるため、メモリ移動処理の前後でのデータの同一性が確保される。加えて、メモリコピー部１４１（２４１）と、メモリミラー部１４２（２４２）とが発行する書き込みトランザクションにより、メモリ移動処理、およびメモリミラー処理を行うため、不必要にデータキャッシュを行う必要が無く効率的である。さらに、本発明は、コントローラ１４（２４）に、メモリコピー部１４１（２４１）と、メモリミラー部１４２（２４２）とを備えることで実現が可能であり、ノード１（２）のハードウェア構成が複雑となることが無い。
【００４７】
以上が、本実施形態における不均一メモリアクセス機構を備えるコンピュータの説明であるが、上記実施形態は、以下のように変更することが可能である。
【００４８】
本実施形態では、各ノード１（２）は、２つのプロセッサと２つのメモリモジュールを備えている。しかし、各ノード１（２）のプロセッサとメモリモジュールの数は、これには限定せず、より多くのプロセッサとメモリモジュールを備えることが可能である。また、前述したが、ノード１（２）の数も２つには限定せず、より多くのノード１（２）がシステムバス４を介して接続可能である。
【００４９】
また、各ノード１（２）のコントローラ１４（２４）は、それぞれ、メモリコピー部１４１（２４１）とメモリミラー部１４２（２４２）を一つずつ備えるが、これも、複数備えることで複数のメモリ移動処理と、複数のメモリミラー処理を実行させることが可能である。
【００５０】
さらに、各ノード間を接続するシステムバス４は、クロスバースイッチを用いたクロスバー構成とすることも可能である。バス構成の場合、バス上に流すことが可能なトランザクションは、一つであるが、クロスバー構成によって、複数のノード間で同時に複数のトランザクションの送受信を行うことが可能となる。
【００５１】
また、メモリ移動処理中にプロセス１１１が終了することが想定される。このとき、メモリ移動処理が完了していない場合には、メモリ移動処理の完了を確認するのを待ってからプロセス１１１を終了するか、或いは、メモリ移動処理の対象となるメモリ空間に他のプロセスが使用することがないように、メモリ移動処理を別途管理する必要が発生する。いずれにしても、メモリ空間とプロセッサが無駄に使用された状態となる。このような場合を考えて、プロセス１１１が終了した場合に、ＯＳ１２１等がメモリ移動処理、及びメモリミラー処理の停止を命令して、これに応じて、メモリコピー部１４１（２４１）とメモリミラー部（２４１）（２４２）が、メモリ移動処理の途中であっても、メモリ移動処理及びメモリミラー処理を停止する動作としても良い。これにより、プロセッサやメモリ空間の無駄な占有を防ぐことができる。
【００５２】
さらに、本実施形態では、プロセッサ１１、１２（２１，２２）とメモリコントローラ１４（２４）は、別構成としているが、プロセッサ１１、１２（２１，２２）が、メモリコントローラ１４（２４）を備えた構成としても良い。図３は、本実施形態におけるプロセッサが内部にメモリコントローラを備える場合のノード構成である。図３において、ノード３は、プロセッサ３１と、メモリモジュール３３、３４を備え、プロセッサ３１とメモリモジュール３３とは、メモリバスで接続されている。プロセッサ３１は、メモリコントローラ３１１を備え、さらにメモリコントローラ３１１は、メモリコピー部３１１１と、メモリミラー部３１１２とを備える。また、図３の場合、プロセッサ３１は、プロセッサバス３５を介してセルコントローラ３６を備えている。セルコントローラ３６は、システムバス３７から入力するトランザクションが当該ノード３に対するトランザクションであるかを判定する。前述の通り、本実施形態で説明を行ったコントローラ１４（２４）は、セルコントローラ３６の機能も備えている。各部は、前述の通りであるため説明を省略するが、各ノードは、このような構成とすることも可能である。
【００５３】
以上、実施形態を参照して本願発明を説明したが、本願発明は、上記実施形態に限定されるものではない。本願発明の構成や詳細には、上述したものを含め、本願発明の範囲内で当業者が理解しえる様々な変更を行うことが可能である。
【符号の説明】
【００５４】
１  ノード
２  ノード
３  ノード
４  システムバス
１１  プロセッサ
１２  プロセッサ
１３  プロセッサバス
１４  コントローラ
１５  メモリバス
１６  メモリモジュール
１７  メモリモジュール
２１  プロセッサ
２２  プロセッサ
２３  プロセッサバス
２４  コントローラ
２５  メモリバス
２６  メモリモジュール
２７  メモリモジュール
３１  プロセッサ
３２  メモリバス
３３  メモリモジュール
３４  メモリモジュール
３５  プロセッサバス
３６  セルコントローラ
３７  システムバス
１１１  プロセス
１２１  オペレーティングシステム
１４１  メモリコピー部
１４２  メモリミラー部
１６１  コピー先メモリ空間
２４１  メモリコピー部
２４２  メモリミラー部
２６１  コピー元メモリ空間
３１１  メモリコントローラ
３１１１  メモリコピー部
３１１２  メモリミラー部
【図１】
2010211506.tif 000003
【図２】
2010211506.tif 000004
【図３】
2010211506.tif 000005