(57)【要約】【課題】システム全体として、メモリアクセスのレイテンシを小さくすることのできるマルチプロセッサシステムを提供する。【解決手段】あるプロセッサ８が別のノードのメインメモリ９にアクセスしたのをトリガとして、プロセッサ８がアクセスしたデータをそのメインメモリ９から取得して、アクセスしたプロセッサ８と対になったメインメモリ９に移動するアクセスデータ移動手段と、アクセスデータを格納するメインメモリ９から一部データを廃棄してアクセスデータを格納するための容量を確保する格納容量確保手段と、廃棄したデータを替わりに格納するためのメインメモリ９を複数のメインメモリ９の中から選択する格納メモリ選択手段と、選択したメインメモリに廃棄したデータを格納する廃棄データ格納手段を有するメモリ管理機構１０をプロセッサ８とメインメモリ９の間に設置する。【選択図】図１
2012088961.tif 000002
【特許請求の範囲】
【請求項１】
連携して処理を実行する複数のプロセッサと、
前記プロセッサそれぞれと対となるように配置された複数のメインメモリと、
前記メインメモリの間でデータの入れ替えを行うメモリ管理機構と、を有し、
前記メモリ管理機構は、
前記プロセッサの１つである第１のプロセッサが、前記プロセッサの１つである第２のプロセッサと対となった第２のメインメモリにアクセスしたのを契機として、前記第１のプロセッサがアクセスしたアクセスデータを前記第２のメインメモリから取得して、前記第１のプロセッサと対となった第１のメインメモリに格納するアクセスデータ移動手段と、
前記アクセスデータを前記第１のメインメモリに格納するために、前記第１のメインメモリから、前記第１のメインメモリに格納されているデータの一部である廃棄データを廃棄して、前記第１のメインメモリの空き容量を確保する格納容量確保手段と、
前記廃棄データを替わりに格納する第３のメインメモリを、前記第１のメインメモリ以外のメインメモリの中から選択する格納メモリ選択手段と、
前記廃棄データを、前記第３のメインメモリに格納する廃棄データ格納手段と、を有する、
ことを特徴とするマルチプロセッサシステム。
【請求項２】
前記格納メモリ選択手段は、
前記第１のメインメモリ以外のメインメモリの中に、前記廃棄データの仮想アドレスとの番号の差が一定数以内の仮想アドレスを持つデータが格納されているメインメモリがある場合には、そのメインメモリを前記第３のメインメモリとして選択する、
ことを特徴とする請求項１に記載のマルチプロセッサシステム。
【請求項３】
前記メモリ管理機構は、
前記メインメモリから廃棄するデータの仮想アドレスを、前記メインメモリごとに順次記憶する廃棄履歴記憶手段を有し、
前記格納メモリ選択手段は、
前記第１のメインメモリ以外のメインメモリの中に、前記廃棄データを以前格納したことのあるメインメモリがある場合には、そのメインメモリを前記第３のメインメモリとして選択する、
ことを特徴とする請求項１または２に記載のマルチプロセッサシステム。
【請求項４】
前記メモリ管理機構は、
前記メインメモリから廃棄するデータの仮想アドレスを、前記メインメモリごとに順次記憶する廃棄履歴記憶手段を有し、
前記格納メモリ選択手段は、
前記メインメモリの中に、前記廃棄データの前記仮想アドレスとの番号の差が一定数以内の前記仮想アドレスを持つデータが格納されている前記メインメモリ（空間局所メモリ）がある場合には、該空間局所メモリを前記第３のメインメモリとして選択し、
前記メインメモリの中に、前記廃棄データを以前格納したことのある前記メインメモリ（時間局所メモリ）がある場合には、該時間局所メモリを前記第３のメインメモリとして選択し、
前記メインメモリの中に、前記空間局所メモリと時間局所メモリ双方が別々に存在する場合には、前記空間局所メモリを前記第３のメインメモリとして選択する、
ことを特徴とする請求項１乃至３のいずれか１項に記載のマルチプロセッサシステム。
【請求項５】
前記マルチプロセッサシステムは、
前記メインメモリに割り当てられた物理アドレスを特定する物理アドレス割当テーブルと、
前記メインメモリに格納したデータの前記仮想アドレスと前記物理アドレスとを関連付けるアドレス変換テーブルと、を有し、
前記格納メモリ選択手段は、
前記アドレス変換テーブルおよび前記物理アドレス割当テーブルに基づいて、どのメインメモリに、どの仮想アドレスを持つデータが格納されているかを特定する、
ことを特徴とする請求項２乃至４のいずれか１項に記載のマルチプロセッサシステム。
【請求項６】
連携して処理を実行する複数のプロセッサのうちの１つである第１のプロセッサが、前記プロセッサの１つである第２のプロセッサと対となった第２のメインメモリにアクセスしたのを契機として、前記第１のプロセッサがアクセスしたアクセスデータを前記第２のメインメモリから取得して、前記第１のプロセッサと対となった第１のメインメモリに格納するアクセスデータ移動ステップと、
前記アクセスデータを前記第１のメインメモリに格納するために、前記第１のメインメモリから、前記第１のメインメモリに格納されているデータの一部である廃棄データを廃棄して、前記第１のメインメモリの空き容量を確保する格納容量確保ステップと、
前記廃棄データを替わりに格納する第３のメインメモリを、前記第１のメインメモリ以外のメインメモリの中から選択する格納メモリ選択ステップと、
前記廃棄データを、前記第３のメインメモリに格納する廃棄データ格納ステップと、を有する、
ことを特徴とするメモリ管理方法。
【請求項７】
連携して処理を実行する複数のプロセッサのうちの１つである第１のプロセッサが、前記プロセッサの１つである第２のプロセッサと対となった第２のメインメモリにアクセスしたのを契機として、前記第１のプロセッサがアクセスしたアクセスデータを前記第２のメインメモリから取得して、前記第１のプロセッサと対となった第１のメインメモリに格納するアクセスデータ移動ステップと、
前記アクセスデータを前記第１のメインメモリに格納するために、前記第１のメインメモリから、前記第１のメインメモリに格納されているデータの一部である廃棄データを廃棄して、前記第１のメインメモリの空き容量を確保する格納容量確保ステップと、
前記廃棄データを替わりに格納する第３のメインメモリを、前記第１のメインメモリ以外のメインメモリの中から選択する格納メモリ選択ステップと、
前記廃棄データを、前記第３のメインメモリに格納する廃棄データ格納ステップと、をコンピュータに実行させる、
ことを特徴とするメモリ管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサのメモリアクセスのレイテンシを小さくするマルチプロセッサシステム、メモリ管理方法、および、メモリ管理プログラムに関する。
【背景技術】
【０００２】
処理能力向上を目的として、複数のプロセッサと複数のメモリとを有するマルチプロセッサシステムが増えている。マルチプロセッサシステムでは、１つのプロセッサに着目した場合、レイテンシ（メモリにデータ送信要求を発してからデータがプロセッサに到達するまでにかかる時間）の小さいメモリと、レイテンシの大きいメモリが存在する。このレイテンシの違いは、システム全体の処理速度に大きな影響を及ぼしている。
【０００３】
こうした状況を踏まえ、特許文献１には、メモリが２つ以上のシステムにおいて、メモリの使用状況を考慮してメモリの再配置を行う方法が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−２１６０５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載のシステムは、プロセッサとメモリの位置関係を考慮した制御を行っていない。このため、場合によっては、プロセッサのメモリアクセスがレイテンシの大きいメモリに集中してしまい、システムの処理速度が低下するという問題があった。
【０００６】
本発明はこのような問題に鑑みてなされたものであり、システム全体として、メモリアクセスのレイテンシを小さくすることのできるマルチプロセッサシステム、メモリ管理方法、および、メモリ管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明の第１の観点に係るマルチプロセッサシステムは、
連携して処理を実行する複数のプロセッサと、
前記プロセッサそれぞれと対となるように配置された複数のメインメモリと、
前記メインメモリの間でデータの入れ替えを行うメモリ管理機構と、を有し、
前記メモリ管理機構は、
前記プロセッサの１つである第１のプロセッサが、前記プロセッサの１つである第２のプロセッサと対となった第２のメインメモリにアクセスしたのを契機として、前記第１のプロセッサがアクセスしたアクセスデータを前記第２のメインメモリから取得して、前記第１のプロセッサと対となった第１のメインメモリに格納するアクセスデータ移動手段と、
前記アクセスデータを前記第１のメインメモリに格納するために、前記第１のメインメモリから、前記第１のメインメモリに格納されているデータの一部である廃棄データを廃棄して、前記第１のメインメモリの空き容量を確保する格納容量確保手段と、
前記廃棄データを替わりに格納する第３のメインメモリを、前記第１のメインメモリ以外のメインメモリの中から選択する格納メモリ選択手段と、
前記廃棄データを、前記第３のメインメモリに格納する廃棄データ格納手段と、を有する、
ことを特徴とする。
【０００８】
上記目的を達成するため、本発明の第２の観点に係るメモリ管理方法は、
連携して処理を実行する複数のプロセッサのうちの１つである第１のプロセッサが、前記プロセッサの１つである第２のプロセッサと対となった第２のメインメモリにアクセスしたのを契機として、前記第１のプロセッサがアクセスしたアクセスデータを前記第２のメインメモリから取得して、前記第１のプロセッサと対となった第１のメインメモリに格納するアクセスデータ移動ステップと、
前記アクセスデータを前記第１のメインメモリに格納するために、前記第１のメインメモリから、前記第１のメインメモリに格納されているデータの一部である廃棄データを廃棄して、前記第１のメインメモリの空き容量を確保する格納容量確保ステップと、
前記廃棄データを替わりに格納する第３のメインメモリを、前記第１のメインメモリ以外のメインメモリの中から選択する格納メモリ選択ステップと、
前記廃棄データを、前記第３のメインメモリに格納する廃棄データ格納ステップと、を有する、
ことを特徴とする。
【０００９】
上記目的を達成するため、本発明の第３の観点に係るメモリ管理プログラムは、
連携して処理を実行する複数のプロセッサのうちの１つである第１のプロセッサが、前記プロセッサの１つである第２のプロセッサと対となった第２のメインメモリにアクセスしたのを契機として、前記第１のプロセッサがアクセスしたアクセスデータを前記第２のメインメモリから取得して、前記第１のプロセッサと対となった第１のメインメモリに格納するアクセスデータ移動ステップと、
前記アクセスデータを前記第１のメインメモリに格納するために、前記第１のメインメモリから、前記第１のメインメモリに格納されているデータの一部である廃棄データを廃棄して、前記第１のメインメモリの空き容量を確保する格納容量確保ステップと、
前記廃棄データを替わりに格納する第３のメインメモリを、前記第１のメインメモリ以外のメインメモリの中から選択する格納メモリ選択ステップと、
前記廃棄データを、前記第３のメインメモリに格納する廃棄データ格納ステップと、をコンピュータに実行させる、
ことを特徴とする。
【発明の効果】
【００１０】
本発明によれば、システム全体として、メモリアクセスのレイテンシを小さくすることのできるマルチプロセッサシステム、メモリ管理方法、および、メモリ管理プログラムを提供できる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施の形態に係るマルチプロセッサシステムのブロック図である。
【図２】物理アドレスと仮想アドレスの関係を示した図である。
【図３】廃棄履歴リストに仮想アドレスを格納する様子を示した図である。
【図４】共用メモリに物理アドレス割当テーブルとアドレス変換テーブルを格納した様子を示した図である。
【図５】データアクセス処理のフローチャートを示した図である。
【図６】アクセスデータ移動処理のフローチャートを示した図である。
【図７】アクセス元ノードのメインメモリに空き容量がない様子を示した図である。
【図８】アクセス元ノードのメインメモリからデータを廃棄して格納容量を確保した様子を示した図である。
【図９】アクセス元ノードのメインメモリにアクセスデータを移動した様子を示した図である。
【図１０】廃棄データ移動処理のフローチャートを示した図である。
【図１１】格納先ノードのメインメモリに空き容量がない様子を示した図である。
【図１２】格納先ノードのメインメモリからデータを廃棄して格納容量を確保した様子を示した図である。
【図１３】格納先ノードのメインメモリに廃棄データを移動した様子を示した図である。
【発明を実施するための形態】
【００１２】
（実施の形態）
本発明の実施の形態にかかるマルチプロセッサシステム１００は、例えば、複数のＣＰＵを持ったマルチＣＰＵコンピュータである。マルチプロセッサシステム１００は、図１に示すように、３つのノード（ノード１〜３）と、共用メモリ４と、ハードディスク５から構成される。ノード１〜３それぞれには、プロセッサ８と、メインメモリ９とが配置されており、また、プロセッサ８とメインメモリ９の間には、メモリ管理機構１０が配置されている。各ノード内のプロセッサ８、メインメモリ９、メモリ管理機構１０は、高速通信線７で接続されており、それぞれ高速アクセスが可能となっている。
【００１３】
各プロセッサ８は、自ノード（例えば、プロセッサ８１からみてノード１は自ノードである。）および他ノード（例えば、プロセッサ８１からみてノード２およびノード３は他ノードである。）のメインメモリ９にアクセスを繰り返しながら、また、他ノードのプロセッサ８と連携しながら各種プログラムを実行する。メモリ管理機構１０は、プロセッサ８からアクセスされる可能性の高いデータを、高速アクセス可能な自ノードのメインメモリ９にあらかじめ移動しておくことにより、システム全体としてメモリアクセスのレイテンシを小さくする。
【００１４】
プロセッサ８（プロセッサ８１〜８３）は、各種プログラムを、他ノードのプロセッサ８と連携して実行する演算装置である。各プロセッサ８は、高速通信線７およびメモリ管理機構１０を介して、自ノードのメインメモリ９からデータを取得し、また書き込むことができる。また、共通バス６および他ノードのプロセッサ８を介して、他ノードのメインメモリ９からデータを取得することができる。
【００１５】
メインメモリ９（メインメモリ９１〜９３）は、各種データを保存するためのメモリである。メインメモリ９１〜９３は、各ノード（ノード１〜３）内のメモリ管理機構１０を介して、それぞれ、プロセッサ８１〜８３と接続されている。
【００１６】
なお、本実施の形態では、あるプロセッサ８からみて自ノードのメインメモリ９をローカルメモリ、他ノードのメインメモリ９をリモートメモリと呼ぶことにする。例えば、プロセッサ８１からみて、メインメモリ９１はローカルメモリであり、メインメモリ９２〜９３はリモートメモリである。
【００１７】
メインメモリ９に格納されるデータは、２つの番号で識別される。１つは、物理アドレスであり、もう１つは仮想アドレスである。物理アドレスはデータの格納場所を識別するための番号であり、仮想アドレスはデータを一意に識別するためにデータに付された番号である。仮想アドレスはデータの格納場所が変わっても変化しない。なお、仮想アドレスはアドレス変換テーブルにより物理アドレスと関連付けられる。
【００１８】
なお、以下の説明では、理解を容易にするため、図２に示すように、メインメモリ９１〜９３にはそれぞれ１０〜１９番、２０〜２９番、３０〜３９番の物理アドレスが付されており、また、メインメモリ９１〜９３には仮想アドレス１〜１７番が付されたデータ１〜１７が格納されているものとする。
【００１９】
メモリ管理機構１０（メモリ管理機構１０１〜１０３）は、参照局所性を考慮して、メインメモリ９に格納されているデータの入れ替えをおこなうための装置である。ここで参照局所性とは、「プロセッサ８がある時点で参照したデータは近い将来再び参照される可能性が高いとする経験則（時間的局所性）」または「プロセッサ８があるデータを参照したとき、その近傍のデータは参照される可能性が高いとする経験則（空間的局所性）」のことである。つまり、メモリ管理機構１０は、プロセッサ８から参照される可能性の高いデータを、高速アクセス可能なローカルメモリにあらかじめ移動しておくことにより、システム全体のレイテンシを小さくしようとするものである。このメモリ管理機構１０１〜１０３は、それぞれ、制御機構１１１〜１１３と専用メモリ１２１〜１２３から構成される。
【００２０】
制御機構１１（制御機構１１１〜１１３）は、プロセッサ等から構成される。制御機構１１は、プロセッサ８から参照される可能性の高いデータを、例えば、共用メモリ４や専用メモリ１２に格納されているデータを基に判断し、メインメモリ９間でのデータの入れ換えをおこなう。
【００２１】
制御機構１１は、自ノードのプロセッサ８とメインメモリ９の間に位置しており、プロセッサ８とメインメモリ９の間で送受信されるデータを監視することで、他ノードのプロセッサ８からのアクセス（以下、リモートアクセスと呼ぶ）を検知する。リモートアクセスを検知したら、制御機構１１は、共通バス６を介して、アクセス元の制御機構１１に即座にその旨を通知する。また、制御機構１１は、高速バス７を介して、自ノードのメインメモリ９および専用メモリ４にデータをリードライトする。また、制御機構１１は、共通バス６を介して、共用メモリ４およびハードディスク５にデータをリードライトする。さらに、制御機構１１は、他ノードの制御機構１１の要求に応じて、自ノードのメインメモリ９および専用メモリ４からデータを取得して、他ノードの制御機構１１にそのデータを送信する。制御機構１１は、これらの機能を使用して連携して処理を実行する。
【００２２】
専用メモリ１２（専用メモリ１２１〜１２３）は、廃棄履歴リスト等を保存するためのメモリである。ここで廃棄履歴リストとは、メインメモリ９から廃棄されるデータ（以下、廃棄データという）の仮想アドレスを蓄積するためのリストである。例えば、図３に示すように、メインメモリ９１に格納されているデータ２をメインメモリ９２に移動し、メインメモリ９１から消去したとすれば、専用メモリ１２１の廃棄履歴リストには仮想アドレス０２番が記録される。
【００２３】
共用メモリ４は、プロセッサ９やメモリ管理機構１０が共通で使用するデータを格納するためのメモリである。具体的には、共用メモリ４には、図４に示すように、物理アドレス割当テーブと、アドレス変換テーブルが格納されている。ここで物理アドレス割当テーブルとは、メインメモリ９１〜９２それぞれに割り当てられている物理アドレスを特定するためのテーブルであり、アドレス変換テーブルとは、仮想アドレスから物理アドレスを特定するためのテーブルである。
【００２４】
ハードディスク５は、各種データ（プログラム等）を格納するための記憶装置である。ハードディスク５にはメインメモリ９より多くのデータを記憶できるが、データの読出・書込速度はメインメモリ９より遅い。メインメモリ９に格納されないデータはこのハードディスク５に格納される。
【００２５】
共通バス６は、各プロセッサ８および各制御機構１０の間でデータを送受信するためのバスである。
【００２６】
高速通信線７は、プロセッサ８、メインメモリ９、制御機構１０、専用メモリ１２の間で、データを高速に送受信するための通信線である。
【００２７】
次に、マルチプロセッサシステム１００の動作について説明する。マルチプロセッサシステム１００で実行される処理は、「データアクセス処理」、「アクセスデータ移動処理」、および、「廃棄データ移動処理」を含む。「データアクセス処理」はプロセッサ８で実行され、「アクセスデータ移動処理」および「廃棄データ移動処理」は制御機構１１で実行される。
【００２８】
最初に、図５のフローチャートを参照して「データアクセス処理」について説明する。プロセッサ８は、オペレーティングシステム等のプログラムの指示に従い、メインメモリ９へのアクセスを開始する。
【００２９】
プロセッサ８は、プログラムにより指定されたデータ（以下、アクセスデータと呼ぶ）へアクセスするため、アクセスデータが格納されているメインメモリ９を特定する（Ｓ０１）。
【００３０】
例えば、図４に示すように、各メインメモリ９に仮想アドレス１〜１７番のデータが格納されており、また、プロセッサ８１は仮想アドレス１０番のデータを取得しようとしているものとする。このとき、プロセッサ８１は、共用メモリ４に格納されているアドレス変換テーブルを参照して、仮想アドレス１０番に対応する物理アドレス（図４では２３番）を特定するとともに、共用メモリ４に格納されている物理アドレス割当テーブルを参照して、物理アドレス２３番が割り当てられているメインメモリ９（図４ではメインメモリ９２）を特定する。これにより、プロセッサ８１は、仮想アドレス１０番のデータを格納しているメインメモリ９がメインメモリ９２であると特定できる。
【００３１】
特定したメインメモリ９が、ローカルメモリであった場合（Ｓ０２：Ｙ）、プロセッサ８は自ノードのメインメモリ９からアクセスデータを取得し（Ｓ０３）、処理を終了する。一方、特定したメインメモリ９がリモートメモリであった場合（Ｓ０２：Ｎ）、次のステップＳ０４に処理を進める。なお、以下の説明では、理解を容易にするため、アクセスデータを取得する側のノード（先ほどの図４の例であればノード１）を「アクセス元ノード」と呼び、アクセスデータが格納されている側のノード（先ほどの図４の例であればノード２）を「アクセス先ノード」と呼ぶことにする。
【００３２】
アクセス元ノードのプロセッサ８は、アクセス先ノードのプロセッサ８およびアクセス先ノードの制御機構１１を介して、アクセス先ノードのメインメモリ９からアクセスデータを取得して処理を終了する（Ｓ０４）。処理終了後、このアクセスデータはオペレーティングシステムやアプリケーションプログラム等の処理に使用される。
【００３３】
なお、アクセスデータは、時間的局所性を考慮すれば、アクセス元ノードのプロセッサ８から再び参照される可能性が高いデータである。アクセスデータを高速アクセス可能なローカルメモリにあらかじめ移動しておくことができれば、システム全体としてメモリアクセスのレイテンシを小さくすることができる。
【００３４】
そこで、アクセス元ノードの制御機構１１は、そのアクセスデータをローカルメモリに移動するために「アクセスデータ移動処理」を実行する。この「アクセスデータ移動処理」は、アクセス先ノードの制御機構１１がアクセス元ノードの制御機構１１に対しリモートアクセスがあったことを通知し、アクセス元ノードの制御機構１１がその通知を受け取ることで開始される。以下、図６のフローチャートを参照して、「アクセスデータ移動処理」について説明する。
【００３５】
アクセス元ノードの制御機構１１は、自ノードのメインメモリ９に、アクセスデータを移動するための空き容量があるか判定する（Ｓ１１）。空き容量がある場合はＳ１３に処理を進め（Ｓ１１：Ｙ）、空き容量がない場合は次のステップＳ１２に処理を進める（Ｓ１１：Ｎ）。
【００３６】
自ノードのメインメモリ９に空き容量がない場合（Ｓ１１：Ｎ）、アクセス元ノードの制御機構１１は、アクセスデータの格納容量を確保するため、自ノードのメインメモリ９からデータを一部廃棄する（以下、廃棄したデータを第１の廃棄データと呼ぶ）。その際、アクセス元ノードの制御機構１１は、自ノードの専用メモリ１５に第１の廃棄データを保存するとともに、後述の処理のため、廃棄履歴リストにその仮想アドレスを記録する（Ｓ１２）。
【００３７】
例えば、メインメモリ９２に格納されているデータ１０をメインメモリ９１に移動させようとしている場合であって、図７に示すように、メインメモリ９１には空き容量がないとする。このとき、制御機構１１１は、図８に示すように、メインメモリ９１から選択した任意のデータ（例えばデータ１８）を専用メモリ１２１に保存するとともに、そのデータをメインメモリ９１から消去する。そして、制御機構１１１は、専用メモリ１２１の廃棄履歴リストに仮想アドレス１８番を記録する。
【００３８】
アクセス元ノードの制御機構１１は、アクセス先ノードの制御機構１１を介してアクセスデータを取得し、自ノードのメインメモリ９に格納する。その後、アクセス元ノードの制御機構１１は、物理アドレスと仮想アドレスの対応関係を一致させるため、アドレス変換テーブルを修正する（Ｓ１３）。
【００３９】
例えば、図９に示すように、メインメモリ９２の物理アドレス２３番からデータ１０を取得して、メインメモリ９１の物理アドレス１３番に格納したのであれば、共用メモリ４に格納されているアドレス変換テーブルの物理アドレス２３番の箇所から仮想アドレス１０番を消去し、同じくアドレス変換テーブルの物理アドレス１３番の箇所に仮想アドレス１０番を記録する。修正が完了したら処理を終了する。
【００４０】
上記処理により第１の廃棄データが発生した場合、アクセス元ノードの制御機構１１は、アクセスデータ移動処理終了後、続けて、第１の廃棄データを別のノードのメインメモリ９に移動するための「廃棄データ移動処理」を開始する。以下、図１０のフローチャートを参照して、廃棄データ移動処理について説明する。
【００４１】
アクセス元ノードの制御機構１１は、廃棄履歴リストまたはアドレス変換テーブルの情報を基に、第１の廃棄データを参照する可能性の高いプロセッサ８を特定する。アクセス元ノードの制御機構１１は、そのプロセッサ８が所属するノード（以下、格納先ノードと呼ぶ）の制御機構１１に第１の廃棄データを送信する旨を通知する（Ｓ２１）。
【００４２】
格納先ノードの制御機構１１は、アクセス元ノードの制御機構１１から通知を受けて、自ノードのメインメモリ９に、第１の廃棄データを格納するための空き容量があるか判定する（Ｓ２２）。空き容量がある場合はＳ２４に処理を進め（Ｓ２２：Ｙ）、空き容量がない場合は次のステップＳ２３に処理を進める（Ｓ２２：Ｎ）。
【００４３】
自ノードのメインメモリ９に空き容量がない場合（Ｓ２２：Ｎ）、格納先ノードの制御機構１１は、第１の廃棄データの格納容量を確保するため、自ノードのメインメモリ９からデータを一部廃棄する（以下、廃棄したデータを第２の廃棄データと呼ぶ）。その際、格納先ノードの制御機構１１は、共通バス６を介して、ハードディスク５に第２の廃棄データを保存するとともに、後述の処理のため、廃棄履歴リストにその仮想アドレスを記録する（Ｓ２３）。
【００４４】
例えば、専用メモリ１２１に保存したデータ１８をメインメモリ９３に移動させようとしている場合であって、図１１に示すように、メインメモリ９３には空き容量がないとする。このとき、制御機構１１３は、図１２に示すように、メインメモリ９３から選択した任意のデータ（例えばデータ２４）をハードディスク５に保存するとともに、そのデータをメインメモリ９３から消去する。そして、制御機構１１３は、専用メモリ１２３の廃棄履歴リストに仮想アドレス２４番を記録する。
【００４５】
格納先ノードの制御機構１１は、アクセス元ノードの制御機構１１を介して、第１のア廃棄データを取得し、自ノードのメインメモリ９に格納する。その後、格納先ノードの制御機構１１は、物理アドレスと仮想アドレスの対応関係を一致させるため、アドレス変換テーブルを修正する（Ｓ２４）。
【００４６】
例えば、図１３に示すように、専用メモリ１２１に保存したデータ１８を取得して、メインメモリ９２の物理アドレス３６番に格納したのであれば、共用メモリ４に格納されているアドレス変換テーブルの物理アドレス３６番の箇所に仮想アドレス１８番を記録する。修正が完了したら処理を終了する。
【００４７】
本実施の形態によれば、プロセッサ８から参照される可能性の高いデータを、あらかじめ、そのプロセッサ８から高速アクセス可能なメインメモリに格納することができるので、システム全体としてメモリアクセスのレイテンシを小さくすることができる。
【００４８】
また、本実施の形態によれば、メモリ管理機構１０によりメモリ管理を行っているので、オペレーティングシステム等のプログラムの内容を大きく変更することなく、ハードによりメモリアクセスのレイテンシを小さくすることができる。
【００４９】
なお、ステップＳ２１における第１の廃棄データの格納先ノードの決定方法は、時間的局所性を利用したものであってもよい。例えば、アクセス元ノードの制御機構１１が、他ノードの制御機構１１を介して各ノード（アクセス元ノードを除く）の廃棄履歴リストを取得する。そして、それらの廃棄履歴リストを参照して、第１の廃棄データの仮装アドレスが記録されているノードを特定する。アクセス元ノードの制御機構１１は、特定したノードを格納先ノードとする。いずれの廃棄履歴リストにも該当の仮装アドレスが記録されている場合には、より最近、廃棄データが廃棄されたノードを格納先ノードとする。
【００５０】
また、ステップＳ２１における廃棄データの格納先ノードの決定方法は、空間的局所性を利用したものであってもよい。例えば、アクセス元ノードの制御機構１１が、共通バス６を介して共用メモリ４のアドレス変換テーブルを取得する。そして、そのアドレス変換テーブルを参照して、仮想アドレスの近いデータ（例えば、廃棄データの仮想アドレスが１８番だとすれば、仮想アドレス１７番、１６番のデータ）を探す。アクセス元ノードの制御機構１１は、そのデータが格納されているメインメモリ９のあるノードを格納ノードとする。いずれのメインメモリ９にも該当データが格納されている場合には、より仮想アドレスの近いデータが格納されているメインメモリ９の所属するノードを格納ノードとする。例えば、図１１に示すように、廃棄データの仮想アドレスが１８番であり、メインメモリ９２、９３にそれぞれ仮想アドレス１６番、１７番のデータが格納されているとすれば、仮想アドレス１７番のデータが格納されているメインメモリ９２の所属するノード２を格納先ノードとして選択する。
【００５１】
また、ステップＳ２１における廃棄データの格納先ノードの決定方法は、時間的局所性および空間的局所性双方を利用したものであってもよい。このとき、時間的局所性を考慮することで選択されるノードと、空間的局所性を考慮することで選択されるノードとが、異なったノードである場合には、時間的局所性と空間的局所性のいずれかを優先させて格納先ノードを選択してもよい。例えば、ノード２の廃棄履歴リストに廃棄データの仮装アドレスが記録されており、ノード３のメインメモリ９に仮想アドレスの近いデータが格納されているとすれば、時間的局所性を優先して、ノード２を格納先ノードとして選択する。時間的局所性に加え空間的局所性をも利用することで、メモリアクセスのレイテンシをさらに小さくすることができる。
【００５２】
なお、上記の例の場合、空間的局所性を優先して、ノード３を格納先ノードとして選択してもよい。一般的に、プロセッサは、プログラムを実行する際、仮想アドレスを順番にアクセスすることが多いので、空間的局所性を優先することで、メモリアクセスのレイテンシをより高めることができる。
【００５３】
ステップＳ１４では、第２の廃棄データをハードディスク５に格納したが、第２の廃棄データは他ノードのメインメモリ９に格納してもよい。この際、ステップＳ２１と同様の処理を実行して、第２の廃棄データが参照される可能性の高いノードを探して格納してもよい。
【００５４】
さらに、上記処理により第３の廃棄データが発生した場合も、ステップＳ２１と同様の処理を実行して、第３の廃棄データが参照される可能性の高いノードを探して格納してもよい。以後、処理を繰り返して、第５、第６、第７・・・の廃棄データを他ノードのメインメモリ９に格納してもよい。
【００５５】
本実施の形態では、３つのノードを有するシステムを例に説明したが、２ノード以上のシステムであれば本発明を適用できる。
【００５６】
各ノードは、それぞれ別の基板に実装されていてもよいし、１つの基板に実装されていてもよい。
【００５７】
本発明は、オペレーティングシステム等がメインメモリ９にあるデータをハードディスク５に待避（スワップアウト）する際に適用してもよい。例えば、ハードディスク５に待避するはずのデータを、参照局所性を考慮して、そのデータを参照する可能性の高いノードのメインメモリ９に格納する。
【００５８】
本発明は、あるプロセッサからみてメモリアクセスのレイテンシが非均一なコンピュータシステム（ＮＵＭＡ（ｎｏｎ−ｕｎｉｆｏｒｍ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）コンピュータシステム）であれば適用可能である。
【００５９】
上記の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００６０】
（付記１）連携して処理を実行する複数のプロセッサと、
前記プロセッサそれぞれと対となるように配置された複数のメインメモリと、
前記メインメモリの間でデータの入れ替えを行うメモリ管理機構と、を有し、
前記メモリ管理機構は、
前記プロセッサの１つである第１のプロセッサが、前記プロセッサの１つである第２のプロセッサと対となった第２のメインメモリにアクセスしたのを契機として、前記第１のプロセッサがアクセスしたアクセスデータを前記第２のメインメモリから取得して、前記第１のプロセッサと対となった第１のメインメモリに格納するアクセスデータ移動手段と、
前記アクセスデータを前記第１のメインメモリに格納するために、前記第１のメインメモリから、前記第１のメインメモリに格納されているデータの一部である廃棄データを廃棄して、前記第１のメインメモリの空き容量を確保する格納容量確保手段と、
前記廃棄データを替わりに格納する第３のメインメモリを、前記第１のメインメモリ以外のメインメモリの中から選択する格納メモリ選択手段と、
前記廃棄データを、前記第３のメインメモリに格納する廃棄データ格納手段と、を有する、
ことを特徴とするマルチプロセッサシステム。
【００６１】
（付記２）前記格納メモリ選択手段は、
前記第１のメインメモリ以外のメインメモリの中に、前記廃棄データの仮想アドレスとの番号の差が一定数以内の仮想アドレスを持つデータが格納されているメインメモリがある場合には、そのメインメモリを前記第３のメインメモリとして選択する、
ことを特徴とする付記１に記載のマルチプロセッサシステム。
【００６２】
（付記３）前記メモリ管理機構は、
前記メインメモリから廃棄するデータの仮想アドレスを、前記メインメモリごとに順次記憶する廃棄履歴記憶手段を有し、
前記格納メモリ選択手段は、
前記第１のメインメモリ以外のメインメモリの中に、前記廃棄データを以前格納したことのあるメインメモリがある場合には、そのメインメモリを前記第３のメインメモリとして選択する、
ことを特徴とする付記１または２に記載のマルチプロセッサシステム。
【００６３】
（付記４）前記メモリ管理機構は、
前記メインメモリから廃棄するデータの仮想アドレスを、前記メインメモリごとに順次記憶する廃棄履歴記憶手段を有し、
前記格納メモリ選択手段は、
前記メインメモリの中に、前記廃棄データの前記仮想アドレスとの番号の差が一定数以内の前記仮想アドレスを持つデータが格納されている前記メインメモリ（空間局所メモリ）がある場合には、該空間局所メモリを前記第３のメインメモリとして選択し、
前記メインメモリの中に、前記廃棄データを以前格納したことのある前記メインメモリ（時間局所メモリ）がある場合には、該時間局所メモリを前記第３のメインメモリとして選択し、
前記メインメモリの中に、前記空間局所メモリと時間局所メモリ双方が別々に存在する場合には、前記空間局所メモリを前記第３のメインメモリとして選択する、
ことを特徴とする付記１乃至３のいずれかに記載のマルチプロセッサシステム。
【００６４】
（付記５）前記マルチプロセッサシステムは、
前記メインメモリに割り当てられた物理アドレスを特定する物理アドレス割当テーブルと、
前記メインメモリに格納したデータの前記仮想アドレスと前記物理アドレスとを関連付けるアドレス変換テーブルと、を有し、
前記格納メモリ選択手段は、
前記アドレス変換テーブルおよび前記物理アドレス割当テーブルに基づいて、どのメインメモリに、どの仮想アドレスを持つデータが格納されているかを特定する、
ことを特徴とする付記２乃至４のいずれかに記載のマルチプロセッサシステム。
【００６５】
（付記６）連携して処理を実行する複数のプロセッサのうちの１つである第１のプロセッサが、前記プロセッサの１つである第２のプロセッサと対となった第２のメインメモリにアクセスしたのを契機として、前記第１のプロセッサがアクセスしたアクセスデータを前記第２のメインメモリから取得して、前記第１のプロセッサと対となった第１のメインメモリに格納するアクセスデータ移動ステップと、
前記アクセスデータを前記第１のメインメモリに格納するために、前記第１のメインメモリから、前記第１のメインメモリに格納されているデータの一部である廃棄データを廃棄して、前記第１のメインメモリの空き容量を確保する格納容量確保ステップと、
前記廃棄データを替わりに格納する第３のメインメモリを、前記第１のメインメモリ以外のメインメモリの中から選択する格納メモリ選択ステップと、
前記廃棄データを、前記第３のメインメモリに格納する廃棄データ格納ステップと、を有する、
ことを特徴とするメモリ管理方法。
【００６６】
（付記７）連携して処理を実行する複数のプロセッサのうちの１つである第１のプロセッサが、前記プロセッサの１つである第２のプロセッサと対となった第２のメインメモリにアクセスしたのを契機として、前記第１のプロセッサがアクセスしたアクセスデータを前記第２のメインメモリから取得して、前記第１のプロセッサと対となった第１のメインメモリに格納するアクセスデータ移動ステップと、
前記アクセスデータを前記第１のメインメモリに格納するために、前記第１のメインメモリから、前記第１のメインメモリに格納されているデータの一部である廃棄データを廃棄して、前記第１のメインメモリの空き容量を確保する格納容量確保ステップと、
前記廃棄データを替わりに格納する第３のメインメモリを、前記第１のメインメモリ以外のメインメモリの中から選択する格納メモリ選択ステップと、
前記廃棄データを、前記第３のメインメモリに格納する廃棄データ格納ステップと、をコンピュータに実行させる、
ことを特徴とするメモリ管理プログラム。
【符号の説明】
【００６７】
１〜３  ノード
４      共用メモリ
５      ハードディスク
６      共通バス
７      高速通信線
８      プロセッサ
９      メインメモリ
１０    メモリ管理機構
１１    制御機構
１２    専用メモリ
１００  マルチプロセッサシステム
【図１】
2012088961.tif 000003
【図２】
2012088961.tif 000004
【図３】
2012088961.tif 000005
【図４】
2012088961.tif 000006
【図５】
2012088961.tif 000007
【図６】
2012088961.tif 000008
【図７】
2012088961.tif 000009
【図８】
2012088961.tif 000010
【図９】
2012088961.tif 000011
【図１０】
2012088961.tif 000012
【図１１】
2012088961.tif 000013
【図１２】
2012088961.tif 000014
【図１３】
2012088961.tif 000015