(57)【要約】【課題】メモリアクセスを最適化をし、システムの性能低下が生じないマルチプロセッサシステムのメモリアクセス負荷分散装置および方法を実現する。【解決手段】  各プロセッサから発行されるメモリアクセスの偏り/競合が判別できるようアクセスの統計を採取するトレース機能を備えたアドレストレース機構によりメモリの負荷状態を検出し、メモリアクセスのレイテンシを改善するようメモリ空間を交換（スワップ）する。【選択図】図２
2007257028.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサおよびメモリが搭載されたマルチチップパッケージを複数使用するマルチプロセッサシステムのメモリアクセス負荷分散装置であって、
前記プロセッサが認識しているメモリ絶対アドレスを保持するメモリ絶対アドレスレジスタと、
前記メモリ絶対アドレスの上位ビットをプラットフォーム上の実際のメモリの物理アドレスであるメモリ実物理アドレスの上位ビットに変換して格納するアドレス変換テーブルと、
前記プロセッサ毎に用意され、スワップ可能なメモリ実物理アドレス毎にその上位ビットであるエントリと、対応するプロセッサから各エントリに対応するメモリアドレスへのアクセスがある度に１つずつインクリメントされるカウンタとを備えるトレース採取テーブルと、
前記トレース参照テーブルの格納内容を参照し、前記プロセッサがアクセスするメモリアドレスに応じてスワップを行うメモリを決定して前記アドレス変換テーブルにおけるメモリ実物理アドレスのスワップを実行するとともに前記トレース採取テーブルにおける前記スワップを行ったメモリ実物理アドレスに対応するエントリのステータスを完了とする負荷状態判別機構と、
前記アドレス変換テーブルに格納されているメモリ実物理アドレスの上位ビットと前記メモリ絶対アドレスレジスタに保持されているメモリ絶対アドレスの下位ビットとを組合わせてメモリ実物理アドレスとして出力するメモリ実物理アドレス合成器とを備え、
前記負荷状態判別機構は、
前記トレース採取テーブルのカウンタのうちの最大値のものをサーチし、対応するプロセッサと前記エントリに示されるメモリの位置とを確認し、これらが同じマルチチップパッケージに搭載されていない場合には、前記トレース採取テーブルを参照して、対応するプロセッサが搭載されているマルチチップパッケージに搭載され、かつ、そのエントリが完了のステータスにないメモリのうち、メモリアクセス頻度が一番小さいエントリであるかを条件として存在するかを確認し、前記条件のものがあればスワップを行うメモリとして決定することを特長とするマルチプロセッサシステムのメモリアクセス負荷分散装置。
【請求項２】
請求項１記載のマルチプロセッサシステムのメモリアクセス負荷分散装置において、
前記負荷状態判別機構は、前記複数のトレース採取テーブルのカウンタのうちの最大値のものをサーチし、対応するプロセッサと前記エントリに示されるメモリの位置とを確認し、これらが同じマルチチップパッケージに搭載されている場合にはスワップを行わずに前記エントリのステータスを完了とするプロセッサシステムのメモリアクセス負荷分散装置。
【請求項３】
請求項１または請求項２記載のマルチプロセッサシステムのメモリアクセス負荷分散装置において、
タイマーを備え、
前記負荷状態判別機構は、前記タイマーのカウントによる一定周期ごとに前記トレース採取テーブルのカウンタのうちの最大値のものをサーチを行うマルチプロセッサシステムのメモリアクセス負荷分散装置。
【請求項４】
プロセッサおよびメモリが搭載されたマルチチップパッケージを複数使用するマルチプロセッサシステムのメモリアクセス負荷分散装置であって、
前記マルチチップパッケージが認識しているメモリ絶対アドレスを保持するメモリ絶対アドレスレジスタと、
前記メモリ絶対アドレスの上位ビットをプラットフォーム上の実際のメモリの物理アドレスであるメモリ実物理アドレスの上位ビットに変換して格納するアドレス変換テーブルと、
前記マルチチップパッケージ毎に用意され、スワップ可能なメモリ実物理アドレス毎にその上位ビットであるエントリと、対応するマルチチップパッケージから各エントリに対応するメモリアドレスへのアクセスがある度に１つずつインクリメントされるカウンタとを備えるトレース採取テーブルと、
前記トレース参照テーブルの格納内容を参照し、前記マルチチップパッケージがアクセスするメモリアドレスに応じてスワップを行うメモリを決定して前記アドレス変換テーブルにおけるメモリ実物理アドレスのスワップを実行するとともに前記トレース採取テーブルにおける前記スワップを行ったメモリ実物理アドレスに対応するエントリのステータスを完了とする負荷状態判別機構と、
前記アドレス変換テーブルに格納されているメモリ実物理アドレスの上位ビットと前記メモリ絶対アドレスレジスタに保持されているメモリ絶対アドレスの下位ビットとを組合わせてメモリ実物理アドレスとして出力するメモリ実物理アドレス合成器とを備え、
前記負荷状態判別機構は、
前記トレース採取テーブルのカウンタのうちの最大値のものをサーチし、対応するマルチチップパッケージと前記エントリに示されるメモリの位置とを確認し、該メモリが対応するマルチチップパッケージに搭載されていない場合には、前記トレース採取テーブルを参照して、対応するマルチチップパッケージに搭載され、かつ、そのエントリが完了のステータスにないメモリのうち、メモリアクセス頻度が一番小さいエントリであるかを条件として存在するかを確認し、前記条件のものがあればスワップを行うメモリとして決定することを特長とするマルチプロセッサシステムのメモリアクセス負荷分散装置。
【請求項５】
請求項４記載のマルチプロセッサシステムのメモリアクセス負荷分散装置において、
前記負荷状態判別機構は、前記複数のトレース採取テーブルのカウンタのうちの最大値のものをサーチし、前記エントリに示されるメモリの位置とを確認し、該メモリが対応するマルチチップパッケージに搭載されている場合にはスワップを行わずに前記エントリのステータスを完了とするマルチプロセッサシステムのメモリアクセス負荷分散装置。
【請求項６】
請求項４または請求項５記載のマルチプロセッサシステムのメモリアクセス負荷分散装置において、
タイマーを備え、
前記負荷状態判別機構は、前記タイマーのカウントによる一定周期ごとに前記トレース採取テーブルのカウンタのうちの最大値のものをサーチを行うマルチプロセッサシステムのメモリアクセス負荷分散装置。
【請求項７】
プロセッサおよびメモリが搭載されたマルチチップパッケージを複数使用するマルチプロセッサシステムで行われるメモリアクセス負荷分散方法であって、
前記プロセッサが認識しているメモリ絶対アドレスの上位ビットをプラットフォーム上の実際のメモリの物理アドレスであるメモリ実物理アドレスの上位ビットに変換し、
前記プロセッサ毎に、スワップ可能なメモリ実物理アドレス毎にその上位ビットをエントリとして、対応するプロセッサから各エントリに対応するメモリアドレスへのアクセスをカウントし、
前記カウントしたアクセス値のうちの最大値のものをサーチし、対応するプロセッサと前記エントリに示されるメモリの位置とを確認し、これらが同じマルチチップパッケージに搭載されていない場合には、対応するプロセッサが搭載されているマルチチップパッケージに搭載され、かつ、そのエントリが完了のステータスにないメモリのうち、メモリアクセス頻度が一番小さいエントリであるかを条件として存在するかを確認し、前記条件のものがあればスワップを行うメモリとして決定し、メモリ実物理アドレスのスワップを実行するとともにスワップを行ったメモリ実物理アドレスに対応するエントリのステータスを完了とし、
前記スワップが行われた後のメモリ実物理アドレスの上位ビットと前記メモリ絶対アドレスの下位ビットとを組合わせてメモリ実物理アドレスとすることを特長とするマルチプロセッサシステムのメモリアクセス負荷分散方法。
【請求項８】
請求項７記載のマルチプロセッサシステムのメモリアクセス負荷分散方法において、
前記カウントしたアクセス値のうちの最大値のものをサーチし、対応するプロセッサと前記エントリに示されるメモリの位置とを確認したときに、これらが同じマルチチップパッケージに搭載されている場合にはスワップを行わずに前記エントリのステータスを完了とするマルチプロセッサシステムのメモリアクセス負荷分散方法。
【請求項９】
請求項７または請求項８記載のマルチプロセッサシステムのメモリアクセス負荷分散方法において、
前記カウントしたアクセス値のうちの最大値のもののサーチを一定周期毎に行うプロセッサシステムのメモリアクセス負荷分散方法。
【請求項１０】
プロセッサおよびメモリが搭載されたマルチチップパッケージを複数使用するマルチプロセッサシステムで行われるメモリアクセス負荷分散方法であって、
前記マルチプロセッサシステムが認識しているメモリ絶対アドレスの上位ビットをプラットフォーム上の実際のメモリの物理アドレスであるメモリ実物理アドレスの上位ビットに変換し、
前記マルチプロセッサシステム毎に、スワップ可能なメモリ実物理アドレス毎にその上位ビットをエントリとして、対応するマルチプロセッサシステムから各エントリに対応するメモリアドレスへのアクセスをカウントし、
前記カウントしたアクセス値のうちの最大値のものをサーチし、対応するマルチプロセッサシステムと前記エントリに示されるメモリの位置とを確認し、該メモリが対応するマルチチップパッケージに搭載されていない場合には、対応するマルチチップパッケージに搭載され、かつ、そのエントリが完了のステータスにないメモリのうち、メモリアクセス頻度が一番小さいエントリであるかを条件として存在するかを確認し、前記条件のものがあればスワップを行うメモリとして決定し、メモリ実物理アドレスのスワップを実行するとともにスワップを行ったメモリ実物理アドレスに対応するエントリのステータスを完了とし、
前記スワップが行われた後のメモリ実物理アドレスの上位ビットと前記メモリ絶対アドレスの下位ビットとを組合わせてメモリ実物理アドレスとすることを特長とするマルチプロセッサシステムのメモリアクセス負荷分散方法。
【請求項１１】
請求項１０記載のマルチプロセッサシステムのメモリアクセス負荷分散方法において、
前記カウントしたアクセス値のうちの最大値のものをサーチし、対応するマルチチップパッケージと前記エントリに示されるメモリの位置とを確認したときに、該メモリが対応するマルチチップパッケージに搭載されている場合にはスワップを行わずに前記エントリのステータスを完了とするマルチプロセッサシステムのメモリアクセス負荷分散方法。
【請求項１２】
請求項１０または請求項１１記載のマルチプロセッサシステムのメモリアクセス負荷分散方法において、
前記カウントしたアクセス値のうちの最大値のもののサーチを一定周期毎に行うプロセッサシステムのメモリアクセス負荷分散方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステムに関し、特に、メモリアクセスの負荷状態を監視するハードウェア機構を有し、その監視結果を元に、マルチプロセッサシステム全体のスループットが向上するようにメモリアクセスの負荷分散を行うメモリアクセス負荷分散装置および方法に関する。
【背景技術】
【０００２】
近年、高性能なコンピュータシステムは、トータルスループット向上のため多数のプロセッサ（CPU）を搭載するマルチプロセッサシステムを採用するものが多くなっている。マルチプロセッサシステムでは、バス制御部のハード量やバス信号線の削除を目的として複数個のプロセッサ、および、メモリが搭載されたマルチチップパッケージ(MCP)を複数使用する方式を採用していることが多い。マルチチップパッケージではその構造上、メモリアクセスレイテンシの違いが発生している。
【０００３】
これは、マルチプロセッサシステムでは、たとえば、NUMA（Non-Uniform Memory Access、Non-Uniform Memory Architecture）に代表される、或るひとつのCPUからの或るアドレス空間へのアクセスレイテンシと、同CPUからの別のアドレス空間へのアクセスレイテンシが異なることによる。すなわち、当該マルチプロセッサシステムにおいて、ひとつのCPUに着目した場合、レイテンシの短いアドレス空間とレイテンシの長いアドレス空間が存在することになる。
【０００４】
一般的に、NUMAアーキテクチャにおいても、これらの２つのレイテンシには３倍から５倍程度の性能差が存在する。メモリが２つ以上のシステムにおいて、メモリの使用状況を考慮してメモリの再配置アドレス変換を行うことが特許文献１（特開２００５−２１６０５３号公報）に開示されているが、通常、オペレーティングシステム（OS）は、CPUとメモリの位置関係に着目した制御は行っておらず、メモリアクセスレイテンシを考慮したCPU割付とメモリ割付は難しい。
【特許文献１】特開２００５−２１６０５３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
マルチプロセッサシステムでは、ひとつのCPUに着目した場合、レイテンシの短いアドレス空間とレイテンシの長いアドレス空間が存在することになる。通常、オペレーティングシステム（OS）は、CPUとメモリの位置関係に着目した制御は行っておらず、よって、そのリソース割付によっては、プロセッサからのメモリアクセスが、レイテンシの長いアドレス空間へ集中してしまう場合があり、システム全体の性能を落としていることがあるという問題点がある。
【０００６】
本発明は上述したような従来の技術が有する問題点に鑑みてなされたものであって、メモリアクセスレイテンシを考慮し、CPU割付処理、メモリ割付処理を最適化することによりメモリアクセスを最適化をし、システムの性能低下が生じないマルチプロセッサシステムのメモリアクセス負荷分散装置および方法を実現することを目的とする。
【課題を解決するための手段】
【０００７】
本発明のマルチプロセッサシステムのメモリアクセス負荷分散装置は、プロセッサおよびメモリが搭載されたマルチチップパッケージを複数使用するマルチプロセッサシステムのメモリアクセス負荷分散装置であって、
前記プロセッサが認識しているメモリ絶対アドレスを保持するメモリ絶対アドレスレジスタと、
前記メモリ絶対アドレスの上位ビットをプラットフォーム上の実際のメモリの物理アドレスであるメモリ実物理アドレスの上位ビットに変換して格納するアドレス変換テーブルと、
前記プロセッサ毎に用意され、スワップ可能なメモリ実物理アドレス毎にその上位ビットであるエントリと、対応するプロセッサから各エントリに対応するメモリアドレスへのアクセスがある度に１つずつインクリメントされるカウンタとを備えるトレース採取テーブルと、
前記トレース参照テーブルの格納内容を参照し、前記プロセッサがアクセスするメモリアドレスに応じてスワップを行うメモリを決定して前記アドレス変換テーブルにおけるメモリ実物理アドレスのスワップを実行するとともに前記トレース採取テーブルにおける前記スワップを行ったメモリ実物理アドレスに対応するエントリのステータスを完了とする負荷状態判別機構と、
前記アドレス変換テーブルに格納されているメモリ実物理アドレスの上位ビットと前記メモリ絶対アドレスレジスタに保持されているメモリ絶対アドレスの下位ビットとを組合わせてメモリ実物理アドレスとして出力するメモリ実物理アドレス合成器とを備え、
前記負荷状態判別機構は、
前記トレース採取テーブルのカウンタのうちの最大値のものをサーチし、対応するプロセッサと前記エントリに示されるメモリの位置とを確認し、これらが同じマルチチップパッケージに搭載されていない場合には、前記トレース採取テーブルを参照して、対応するプロセッサが搭載されているマルチチップパッケージに搭載され、かつ、そのエントリが完了のステータスにないメモリのうち、メモリアクセス頻度が一番小さいエントリであるかを条件として存在するかを確認し、前記条件のものがあればスワップを行うメモリとして決定することを特長とする。
【０００８】
この場合、前記負荷状態判別機構は、前記複数のトレース採取テーブルのカウンタのうちの最大値のものをサーチし、対応するプロセッサと前記エントリに示されるメモリの位置とを確認し、これらが同じマルチチップパッケージに搭載されている場合にはスワップを行わずに前記エントリのステータスを完了とすることとしてもよい。
【０００９】
また、タイマーを備え、
前記負荷状態判別機構は、前記タイマーのカウントによる一定周期ごとに前記トレース採取テーブルのカウンタのうちの最大値のものをサーチを行うこととしてもよい。
【００１０】
本発明のマルチプロセッサシステムのメモリアクセス負荷分散方法は、プロセッサおよびメモリが搭載されたマルチチップパッケージを複数使用するマルチプロセッサシステムで行われるメモリアクセス負荷分散方法であって、
前記プロセッサが認識しているメモリ絶対アドレスの上位ビットをプラットフォーム上の実際のメモリの物理アドレスであるメモリ実物理アドレスの上位ビットに変換し、
前記プロセッサ毎に、スワップ可能なメモリ実物理アドレス毎にその上位ビットをエントリとして、対応するプロセッサから各エントリに対応するメモリアドレスへのアクセスをカウントし、
前記カウントしたアクセス値のうちの最大値のものをサーチし、対応するプロセッサと前記エントリに示されるメモリの位置とを確認し、これらが同じマルチチップパッケージに搭載されていない場合には、対応するプロセッサが搭載されているマルチチップパッケージに搭載され、かつ、そのエントリが完了のステータスにないメモリのうち、メモリアクセス頻度が一番小さいエントリであるかを条件として存在するかを確認し、前記条件のものがあればスワップを行うメモリとして決定し、メモリ実物理アドレスのスワップを実行するとともにスワップを行ったメモリ実物理アドレスに対応するエントリのステータスを完了とし、
前記スワップが行われた後のメモリ実物理アドレスの上位ビットと前記メモリ絶対アドレスの下位ビットとを組合わせてメモリ実物理アドレスとすることを特長とする。
【００１１】
この場合、前記カウントしたアクセス値のうちの最大値のものをサーチし、対応するプロセッサと前記エントリに示されるメモリの位置とを確認したときに、これらが同じマルチチップパッケージに搭載されている場合にはスワップを行わずに前記エントリのステータスを完了とすることとしてもよい。
【００１２】
また、前記カウントしたアクセス値のうちの最大値のもののサーチを一定周期毎に行うこととしてもよい。
【００１３】
なお、複数のプロセッサを搭載したマルチチップパッケージは、マルチチップパッケージが一つのプロセッサとして動作することがあり、上記の装置および方法におけるプロセッサは、マルチチップパッケージとしてもよい。
【発明の効果】
【００１４】
上記の構成を備える本発明は、以下に記載するような効果を奏する。
【００１５】
メモリアクセスレイテンシを考慮したメモリアクセスの最適化が行われるためシステムのスループットを向上させることができる効果がある。
【００１６】
また、オペレーティングシステムが、アーキテクチャの構成（プロセッサ、メモリの実装形態/位置関係）を意識することなく、メモリアクセスレイテンシを考慮した最適な構成をハードウェアが提供し、性能を向上させることができる効果がある。
【発明を実施するための最良の形態】
【００１７】
次に、本発明の実施例について図面を参照して説明する。
【００１８】
図１は本発明によるマルチプロセッサシステムの構成を示すブロック図である。図１に示されるマルチチップパッケージＭＣＰ０（１），ＭＣＰ１（２）は、バス制御部のハード量やバス信号線の削除を目的としてマルチチップパッケージの方式が採用されている。
【００１９】
図１に示す例では、ＭＣＰ０（１）に、プロセッサＣＰＵ００（１０），ＣＰＵ０１（１１），ＣＰＵ０２（１２），ＣＰＵ０３（１３）とメインメモリユニットＭＭＵ００（１５），ＭＭＵ０１（１６），ＭＭＵ０２（１７），ＭＭＵ０３（１８）が搭載されている。同様にＭＣＰ１（２）に、プロセッサＣＰＵ１０（２０），ＣＰＵ１１（２１），ＣＰＵ１２（２２），ＣＰＵ１３（２３）とメインメモリユニットＭＭＵ１０（２５），ＭＭＵ１１（２６），ＭＭＵ１２（２７），ＭＭＵ１３（２８）が搭載されている。
【００２０】
そして、ＭＣＰ０（１）とＭＣＰ１（２）を接続する機構として、バス（３）が用いられ、ＭＣＰ０（１），ＭＣＰ１（２）とをつないだ構成としている。なお、図１では、２つのＭＣＰが示されているが、これは単なる構成例であって、３つ以上のＭＣＰで構成しても当然よい。
【００２１】
そして、本実施例においては、バス（３）に接続することによりメモリの負荷状態を監視するメモリアクセス負荷監視機構（４）が設けられている。
【００２２】
図２は、メモリアクセス負荷監視機構（４）の構成を示すブロック図である。
【００２３】
ＣＰＵ番号（４１０）は、メモリアクセスが、どのＣＰＵから発行されたかを判断するための識別子となる。通常マルチプロセッサシステムにおけるメモリアクセスのための信号には、各プロセッサ（ＣＰＵ）を判別するための識別子が含まれているので、それを利用してもよい。
【００２４】
メモリ絶対アドレスレジスタ（４１１）は、実際にＣＰＵから発行されたアドレスを保持する。
【００２５】
アドレス変換テーブル（４０２）は、ＣＰＵが認識しているメモリ絶対アドレスをプラットフォーム上の実際のメモリの物理アドレスであるメモリ実物理アドレスに変換するものである。本実施例では、メモリの内容をスワップするために、このメモリ絶対アドレスからメモリ実物理アドレスへの変換を行う。
【００２６】
メモリ実物理アドレス合成器（４３１）は、プラットフォーム上の物理的なメモリセルの位置を示す。
【００２７】
アドレストレース機構（４０５）は、ＣＰＵから発行されるメモリアクセス頻度のトレースデータを採取する機構であり、ＣＰＵ番号毎に用意されたトレース採取テーブルを持つ。各トレース採取テーブルは、スワップ可能なメモリアドレス空間毎にその上位ビットのエントリを持ち、同エントリは、当該アドレスへのアクセスがある度に、１つずつインクリメントされるカウンタを持っている。
【００２８】
ＭＵＸ（４３０）は、アドレストレース機構（４０５）のトレース採取テーブルを選択するためのマルチプレクサである。
【００２９】
負荷状態判別機構（４０４）は、一定時間ごとに、アドレストレース機構（４０５）を参照し、メモリのスワップ、および、ルーティング変更を行うか否かを判別する機能を有している。
【００３０】
この負荷状態判別機構（４０４）は、タイマ（４４１）を持っており、ルーティング監視／設定機構（４４０）は、タイマ（４４１）によって、一定時間毎に起動される。
【００３１】
ルーティング監視／設定機構（４４０）は、アドレストレース機構（４０５）を参照するパスを有し、アクセスレイテンシの優劣を判別する機能を備える。
【００３２】
メモリコピー命令機構（４４２）は、ルーティング監視／設定機構（４４０）でのレイテンシ判別において、メモリスワップの必要があると判断された場合、メモリコピー機構（４０７）にメモリスワップを実行するよう命令を発行する機能を持っている。
【００３３】
メモリコピー機構（４０７）は、或るＭＭＵと別のＭＭＵの内容をスワップさせる機能を持つ。
【００３４】
なお、メモリコピー機構（４０７）は、メモリ内容のスワップ動作をさせるため、テンポラリとなるＳＷＡＰ  Ｂｕｆｆｅｒ（４７０）を持っている。
【００３５】
図１に示したＭＭＵ００〜ＭＭＵ０３（１５〜１８），ＭＭＵ１０〜ＭＭＵ１３（２５〜２８）は、主記憶であり、各ＭＭＵは、動的に構成変更可能なメモリ内容をスワップできる単位になっている。
【００３６】
この構成変更可能なメモリ容量によって、アドレス変換テーブル（４０２）とアドレストレース機構（４０５）に格納される上位ビット数、および、ＳＷＡＰ  Ｂｕｆｆｅｒ（４７０）のサイズは決定する。
【００３７】
たとえば、１つのＭＭＵあたりのメモリ容量が１６ＭＢ（＝２の２４乗）のＭＭＵを２５６個持つシステムでは、アドレス変換テーブル（４０２）で扱う上位ビットは、最低でも８ｂｉｔとなり、同様にアドレストレース機構（４０５）で保持する上位ビット数も８ｂｉｔとなる。また、このとき、ＳＷＡＰ  Ｂｕｆｆｅｒ（４７０）も最低１６ＭＢの領域が必要である。
【００３８】
なお、メモリコピー機能（４０７）の実現手段については、本発明とは直接関係しないのでその詳細な構成は省略する。
【００３９】
次に、本実施例におけるアドレストレースの採取動作について図２を参照して説明する。
【００４０】
図１に示したＣＰＵからメモリに対して、ロード、もしくは、ストア命令が発行された場合、このアドレスは、発行元のＣＰＵ番号とともにメモリアクセス負荷監視機構（４）に送られ、それぞれ、ＣＰＵ番号（４１０）とメモリ絶対アドレスレジスタ（４１１）で保持される。
【００４１】
メモリ絶対アドレスレジスタ（４１１）に格納されたアドレスの上位ビットはアドレス変換テーブル（４０２）を参照して、メモリ実物理アドレスの上位ビットに変換される。
【００４２】
このメモリ実物理アドレスが実際のプラットフォームに対するメモリアドレスであり、ＣＰＵから発行されたロード、ストア命令に対しては、このアドレスを使用して、ＭＭＵにアクセスし、応答する。
【００４３】
このメモリ実物理アドレスは、ＣＰＵ番号とともにＭＵＸ（４３０）を経由して、アドレストレース機構（４０５）にも送られる。アドレストレース機構（４０５）は、各ＣＰＵに対して設けられたトレース採取テーブルによりＣＰＵ番号毎のメモリアクセスのトレースデータを採取する。
【００４４】
図３は、トレース採取テーブルによるＣＰＵから発行されるメモリアクセスのトレースデータ例を示す図であり、トレースデータの採取内容について図３を参照して以下に説明する。
【００４５】
まず、今、仮に、スワップ可能な最小単位を１６ＭＢ（２の２４乗）のＭＭＵを２５６個持つシステムを想定すると、トレースすべきメモリ実物理アドレス上位ビットは８ｂｉｔとなる。
【００４６】
よって、トレースデータは、この上位８ｂｉｔ単位で収集される。また、当該メモリ実物理アドレス空間に何回のアクセスがあったかを数えるカウンタにアクセス回数を格納し、さらに図２には示さなかったが、当該メモリ実物理アドレス空間がどのＭＣＰ上に存在するかの実装位置情報とがトレース採取テーブルに記述される。
【００４７】
なお、図３においては、説明簡略化のため、ＣＰＵ０２系のアドレストレース例とＣＰＵ１０系のアドレストレース例のみ記載しているが、実際のトレースは全ＣＰＵ数分存在する。
【００４８】
次に、負荷状態判別機構（４０４）にて行われる、レイテンシを改善するためのメモリスワップを行うか否かの判断処理について説明する。
【００４９】
アドレストレース機構（４０５）に蓄えられたトレースデータは、負荷状態判別機構（４０４）によって参照される。実際にトレースデータより、メモリコピー、および、アドレスルーティングを変更するか否かを決定するのは、負荷状態判別機構（４０４）内のルーティング監視／設定機構（４４０）であり、ルーティング監視／設定機構（４４０）は、一定時間毎に起動される。そのため、負荷状態判別機構は（４０４）起動時刻を確認するためのタイマ（４４１）も保持している。
【００５０】
一定時間経過したとき、ルーティング監視／設定機構（４４０）は起動され、トレースデータを参照する。以降の説明は、ルーティング監視／設定機構（４４０）が起動されたときのトレースデータが、図３に示した状態を例にして説明する。
【００５１】
図３（ａ）はＣＰＵ０２（１２）から発行されるメモリアクセスのトレースデータ例を示したものである。なお、ＣＰＵ０２（１２）は図１に示したようにＭＣＰ０（１）に所属している。
【００５２】
同様に図３（ｂ）はＣＰＵ１０（２０）から発行されるメモリアクセスのトレースデータ例を示したものである。なお、ＣＰＵ１０（２０）は図１に示したようにＭＣＰ１（２）に所属している。
【００５３】
図３（ａ）、（ｂ）において、アドレス上位ビット０００００００１０（２進数）のトレースデータに注目してみる。
【００５４】
本メモリ実物理アドレス空間は３２ＭＢ〜４８ＭＢ（０ｘ０２００００００〜０ｘ０２ＦＦＦＦＦＦ）が相当するが、このメモリ空間は、ＭＣＰ０（１）に存在している。しかし、このＭＣＰ０（１）上のメモリ空間に対して、同じＭＣＰ０（１）上のＣＰＵ０２（１２）からのアクセスは８００回なのに対し、異なるＭＣＰ１（２）上のＣＰＵ１０（２０）からのアクセスは２２００回になっており、異なるＭＣＰへのアクセスが多いことから、システム全体として、スループットが低下している状態であることがわかる。
【００５５】
端的には、ＭＣＰ０（１）上のプロセッサＣＰＵ０２（１２）がメインメモリユニットＭＭＵ０２（１７）に低頻度でアクセスし、ＭＣＰ１（２）上のプロセッサＣＰＵ１０（２０）はＭＣＰ０上のＭＭＵ０２に高頻度でアクセスしていることを示しており、ハードウェアの構成上、レイテンシの長いメモリが選択されるパターンが多用され、トータルスループットの低下の原因となっているといえる。
【００５６】
同様に、アドレス上位ビット００００００１００（２進数）のトレースデータに注目してみる。
【００５７】
本メモリ実物理アドレス空間は６４ＭＢ〜８０ＭＢ（０ｘ０４００００００〜０ｘ０４ＦＦＦＦＦＦ）が相当するが、このメモリ空間は、ＭＣＰ１（２）に存在している。しかし、このＭＣＰ１（２）上のメモリ空間に対して、同じＭＣＰ１（２）上のＣＰＵ１０（２０）からのアクセスは５００回なのに対し、異なるＭＣＰ０（１）上のＣＰＵ０２（１２）からのアクセスは２３００回になっており、こちらもスループットに関して、良い状態でないことがわかる。
【００５８】
そこで、ルーティング監視／設定機構（４４０）は、これらのトレースデータより、レイテンシを改善するため、メモリ実物理アドレスのアドレス上位ビット０００００００１０のメモリ内容と上位ビット００００００１００のメモリ内容をスワップさせることを決定する。
【００５９】
図４は上記の決定を行う動作を示すフローチャートであり、以下に、図４を参照して本実施例におけるメモリ内容のスワップ動作について説明する。
【００６０】
まず、最初に一定時間経過したところで負荷状態判別機構（４０４）が動作を開始し（ステップＳ１）、アドレストレース機構（４０５）に採取されたカウンタのうち、最大値を持つものを探す（ステップＳ２）。続いて、ステップＳ２にて探し出した最大値を持つカウンタのメモリアドレスに示されるメモリが搭載されるＭＣＰが、アクセスを行ったＣＰＵが搭載されるＭＣＰ上であるか否かを確認する（ステップＳ３）。
【００６１】
ステップＳ３において、アクセスを行ったＣＰＵの所属するＭＣＰ上に当該メモリが存在する場合には、このアクセスは、妥当であると判断し、ステップＳ４に進む。
【００６２】
ステップＳ３において、アクセスを行ったＣＰＵの所属するＭＣＰ上に当該メモリが存在しない場合には、メモリアクセスレイテンシの改善対象にあると判断し、ステップＳ５に進む。
【００６３】
ステップＳ４では、そのアドレスレンジのメモリアクセスレイテンシは最適であるため、該メモリアドレスエントリが今後の処理でスワップされることのないように該アドレスエントリを完了のステータスに変更しておく。すなわち、これは、このアドレス空間は最適化が完了していることと同等になる。
【００６４】
ステップＳ５では、アクセスを行ったＣＰＵのトレーステーブルを参照し、当該ＣＰＵの所属するＭＣＰ上に存在し、かつ、そのメモリアドレスエントリが完了のステータスにないメモリのうち、メモリアクセス頻度が一番小さいエントリのものが存在するかを確認する。
【００６５】
ステップＳ５において、上記の条件を満たすメモリアドレスエントリが存在することが確認された場合には、スワップできるメモリアドレスエントリが存在すると判断し、ステップＳ６に進む。
【００６６】
ステップＳ５において、上記の条件を満たすメモリアドレスエントリが存在することが確認されなかった場合には、スワップできるメモリアドレスエントリが存在しないと判断され、後処理のためステップＳ１０に進む。
【００６７】
ステップＳ６では、２つのエントリのスワップを実行し（ステップＳ６）、これに伴い、アドレス変換テーブルを更新する（ステップＳ７）。続いて、アドレストレース機構のカウンタ値も入れ替えたアドレスエントリ同士で入れ替えを行う（ステップＳ８）。これは、ステップＳ５で検出された被スワップ側エントリ（アクセス頻度が小さくスワップ対象となったエントリ）には、さらなる最適化の可能性が残されているので、カウンタの状態を適切にしておく必要があるためである。
【００６８】
ステップＳ６〜ステップＳ８によるメモリスワップを実行した後は、そのアドレスレンジは最適化が施された後のため、完了のステータスに変更する（ステップＳ９）。すなわち、ステップＳ４の終了状態と同じ状態になる。
【００６９】
ただし、ステップＳ５で検出された被スワップ側エントリは完了のステータスには遷移しない。これは、被スワップ側エントリには更なる最適化を施すことの可能性があるからである。
【００７０】
ステップＳ５にて、スワップできるエントリが存在しないと判断されたときに行われるステップＳ１０では、当該エントリにはレイテンシを改善できる可能性はないので、再びステップＳ２でのサーチ対象とならないよう当該カウンタはサーチ対象外にステータスに変更する。ここで、メモリアドレスエントリに対する完了ステータスは、アドレスにつけられるものであるが、カウンタに対するサーチ対象外ステータスはカウンタにつけられるものである。
【００７１】
各ステップＳ４，Ｓ９，Ｓ１０が終了後、最適化が完了したか否かの判断を行う（ステップＳ１１）。
【００７２】
最適化を施す余地がない場合、すなわち、すべてのメモリアドレスエントリが完了のステータスになった場合、もしくは、ステップＳ２でのサーチ対象のカウンタが存在しない場合には、ステップＳ１１に遷移し処理を終了する。
【００７３】
最適化を施す余地が残っている場合、再びステップＳ２に遷移し、最大値のカウンタのサーチから処理を繰り返す。
【００７４】
このとき、完了のステータスをもつメモリアドレスエントリと、ステップＳ１０でサーチ対象外のステータスとされているものはステップＳ２でのサーチ対象から外れることになる。以降、同様に処理は繰り返される。
【００７５】
なお、アドレストレース機構のカウンタ採取単位をＣＰＵごとではなく、ＭＣＰ毎にした場合でも、アルゴリズムは同じである。
【００７６】
上記のスワップ動作は、メモリコピー命令機構（４４２）より、メモリコピー機構（４０７）に対して、メモリコピーを行うよう指示を出すことにより、実行が開始される。
【００７７】
上位ビット０００００００１０のメモリ内容と上位ビット００００００１００のメモリ内容のスワップのために、メモリコピー機構（４０７）は、最初にどちらか一方のデータをＳＷＡＰ  Ｂｕｆｆｅｒ（４７０）にコピーする。
【００７８】
今、仮に上位ビット０００００００１０のメモリ内容をＳＷＡＰ  Ｂｕｆｆｅｒ（４７０）にコピーするものとする。次に、上位ビット００００００１００のメモリ内容を上位ビット０００００００１０の空間にコピーする。最後に、ＳＷＡＰ  Ｂｕｆｆｅｒ（４７０）に退避されている元の上位ビット０００００００１０のメモリ内容を上位ビット００００００１００の空間にコピーをし、両メモリ空間の内容がスワップされる。
【００７９】
スワップが完了した後には、オペレーティングシステムの知りえないところでメモリ実物理アドレスを変更させることが必要なため、アドレス変換テーブル（４０２）を更新する。
【００８０】
図５は、メモリスワップを行う前のアドレス変換テーブルの例を示しており、メモリ絶対アドレスとメモリ実物理アドレスが同値になっている。
【００８１】
次に、トレースデータの解析から、メモリスワップが有効と判断し、メモリ内容のスワップさせていることから、オペレーティングシステムが、元のメモリ内容に正しくアクセスできるようアドレス変換テーブルを変更する。変更したものが図６の状態である。
【００８２】
すなわち、メモリ絶対アドレス上位ビット０００００００１０（２進）がメモリ実物理アドレスの上位ビット０００００１００（２進）に対応付けられ、同様にメモリ絶対アドレス上位ビット０００００１００（２進）がメモリ実物理アドレスの上位ビット００００００１０（２進）に対応付けられている。
【００８３】
この対応付けの変更により、メモリ実物理アドレスが変わっているので、オペレーティングシステムから見たメモリ空間を矛盾させることなく、実際にアクセスする空間のレイテンシを改善している。
【００８４】
最後に、トレースデータのカウンタをクリアする。
【００８５】
以降は、この処理を繰り返すことにより、常にメモリアクセスレイテンシについて最適な状態が維持され、プラットフォームのパフォーマンスを向上させることができる。
【図面の簡単な説明】
【００８６】
【図１】図１は本発明によるマルチプロセッサシステムの構成を示すブロック図である。
【図２】図１中のメモリアクセス負荷監視機構（４）の構成を示すブロック図である。
【図３】（ａ）、（ｂ）のそれぞれはトレース採取テーブルによるＣＰＵから発行されるメモリアクセスのトレースデータ例を示す図である。
【図４】本発明の実施例の動作を示すフローチャートである。
【図５】本発明の実施例におけるアドレス変換テーブルの例を示す図である。
【図６】本発明の実施例におけるアドレス変換テーブルの例を示す図である。
【符号の説明】
【００８７】
１    ＭＣＰ０
２    ＭＣＰ１
３    バス
４    メモリアクセス負荷監視機構
１１〜１３    ＣＰＵ００〜ＣＰＵ０３
１５〜１８    ＭＭＵ００〜ＭＭＵ０３
２１〜２３    ＣＰＵ１０〜ＣＰＵ１３
２５〜２８    ＭＭＵ１０〜ＭＭＵ１３
４０２    アドレス変換テーブル
４０４    負荷状態判別機構
４０５    アドレストレース機構
４０７    メモリコピー機構
４１０    ＣＰＵ番号
４１１    メモリ絶対アドレスレジスタ
４３０    マルチプレクサ
４３１    メモリ実物理アドレス合成器
４４０    ルーティング監視／設定機構
４４１    タイマ
４４２    メモリコピー命令機構
４７０    ＳＷＡＰ  Ｂｕｆｆｅｒ
【図１】
2007257028.tif 000003
【図２】
2007257028.tif 000004
【図３】
2007257028.tif 000005
【図４】
2007257028.tif 000006
【図５】
2007257028.tif 000007
【図６】
2007257028.tif 000008