JP4872402B2 - マルチプロセッサシステムのメモリアクセス負荷分散装置および方法 - Google Patents

マルチプロセッサシステムのメモリアクセス負荷分散装置および方法 Download PDF

Info

Publication number
JP4872402B2
JP4872402B2 JP2006076982A JP2006076982A JP4872402B2 JP 4872402 B2 JP4872402 B2 JP 4872402B2 JP 2006076982 A JP2006076982 A JP 2006076982A JP 2006076982 A JP2006076982 A JP 2006076982A JP 4872402 B2 JP4872402 B2 JP 4872402B2
Authority
JP
Japan
Prior art keywords
memory
entry
address
physical address
multiprocessor system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006076982A
Other languages
English (en)
Other versions
JP2007257028A (ja
Inventor
英一郎 川口
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2006076982A priority Critical patent/JP4872402B2/ja
Priority to US11/723,141 priority patent/US7774564B2/en
Publication of JP2007257028A publication Critical patent/JP2007257028A/ja
Application granted granted Critical
Publication of JP4872402B2 publication Critical patent/JP4872402B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、マルチプロセッサシステムに関し、特に、メモリアクセスの負荷状態を監視するハードウェア機構を有し、その監視結果を元に、マルチプロセッサシステム全体のスループットが向上するようにメモリアクセスの負荷分散を行うメモリアクセス負荷分散装置および方法に関する。
近年、高性能なコンピュータシステムは、トータルスループット向上のため多数のプロセッサ(CPU)を搭載するマルチプロセッサシステムを採用するものが多くなっている。マルチプロセッサシステムでは、バス制御部のハード量やバス信号線の削除を目的として複数個のプロセッサ、および、メモリが搭載されたマルチチップパッケージ(MCP)を複数使用する方式を採用していることが多い。マルチチップパッケージではその構造上、メモリアクセスレイテンシの違いが発生している。
これは、マルチプロセッサシステムでは、たとえば、NUMA(Non-Uniform Memory Access、Non-Uniform Memory Architecture)に代表される、或るひとつのCPUからの或るアドレス空間へのアクセスレイテンシと、同CPUからの別のアドレス空間へのアクセスレイテンシが異なることによる。すなわち、当該マルチプロセッサシステムにおいて、ひとつのCPUに着目した場合、レイテンシの短いアドレス空間とレイテンシの長いアドレス空間が存在することになる。
一般的に、NUMAアーキテクチャにおいても、これらの2つのレイテンシには3倍から5倍程度の性能差が存在する。メモリが2つ以上のシステムにおいて、メモリの使用状況を考慮してメモリの再配置アドレス変換を行うことが特許文献1(特開2005−216053号公報)に開示されているが、通常、オペレーティングシステム(OS)は、CPUとメモリの位置関係に着目した制御は行っておらず、メモリアクセスレイテンシを考慮したCPU割付とメモリ割付は難しい。
特開2005−216053号公報
マルチプロセッサシステムでは、ひとつのCPUに着目した場合、レイテンシの短いアドレス空間とレイテンシの長いアドレス空間が存在することになる。通常、オペレーティングシステム(OS)は、CPUとメモリの位置関係に着目した制御は行っておらず、よって、そのリソース割付によっては、プロセッサからのメモリアクセスが、レイテンシの長いアドレス空間へ集中してしまう場合があり、システム全体の性能を落としていることがあるという問題点がある。
本発明は上述したような従来の技術が有する問題点に鑑みてなされたものであって、メモリアクセスレイテンシを考慮し、CPU割付処理、メモリ割付処理を最適化することによりメモリアクセスを最適化をし、システムの性能低下が生じないマルチプロセッサシステムのメモリアクセス負荷分散装置および方法を実現することを目的とする。
本発明のマルチプロセッサシステムのメモリアクセス負荷分散装置は、プロセッサおよびメモリが搭載されたマルチチップパッケージを複数使用するマルチプロセッサシステムのメモリアクセス負荷分散装置であって、
前記プロセッサが認識しているメモリ絶対アドレスを保持するメモリ絶対アドレスレジスタと、
前記メモリ絶対アドレスの上位ビットをプラットフォーム上の実際のメモリの物理アドレスであるメモリ実物理アドレスの上位ビットに変換して格納するアドレス変換テーブルと、
前記プロセッサ毎に用意され、スワップ可能なメモリ実物理アドレス毎にその上位ビットであるエントリと、対応するプロセッサから各エントリに対応するメモリアドレスへのアクセスがある度に1つずつインクリメントされるカウンタとを備えるトレース採取テーブルと、
前記トレース参照テーブルの格納内容を参照し、前記プロセッサがアクセスするメモリアドレスに応じてスワップを行うメモリを決定して前記アドレス変換テーブルにおけるメモリ実物理アドレスのスワップを実行するとともに前記トレース採取テーブルにおける前記スワップを行ったメモリ実物理アドレスに対応するエントリのステータスを完了とする負荷状態判別機構と、
前記アドレス変換テーブルに格納されているメモリ実物理アドレスの上位ビットと前記メモリ絶対アドレスレジスタに保持されているメモリ絶対アドレスの下位ビットとを組合わせてメモリ実物理アドレスとして出力するメモリ実物理アドレス合成器とを備え、
前記負荷状態判別機構は、
前記トレース採取テーブルのカウンタのうちの最大値のものをサーチし、対応するプロセッサと前記エントリに示されるメモリの位置とを確認し、これらが同じマルチチップパッケージに搭載されていない場合には、前記トレース採取テーブルを参照して、対応するプロセッサが搭載されているマルチチップパッケージに搭載され、かつ、そのエントリが完了のステータスにないメモリのうち、メモリアクセス頻度が一番小さいエントリであるかを条件として存在するかを確認し、前記条件のものがあればスワップを行うメモリとして決定することを特長とする。
この場合、前記負荷状態判別機構は、前記複数のトレース採取テーブルのカウンタのうちの最大値のものをサーチし、対応するプロセッサと前記エントリに示されるメモリの位置とを確認し、これらが同じマルチチップパッケージに搭載されている場合にはスワップを行わずに前記エントリのステータスを完了とすることとしてもよい。
また、タイマーを備え、
前記負荷状態判別機構は、前記タイマーのカウントによる一定周期ごとに前記トレース採取テーブルのカウンタのうちの最大値のものをサーチを行うこととしてもよい。
本発明のマルチプロセッサシステムのメモリアクセス負荷分散方法は、プロセッサおよびメモリが搭載されたマルチチップパッケージを複数使用するマルチプロセッサシステムで行われるメモリアクセス負荷分散方法であって、
前記プロセッサが認識しているメモリ絶対アドレスの上位ビットをプラットフォーム上の実際のメモリの物理アドレスであるメモリ実物理アドレスの上位ビットに変換し、
前記プロセッサ毎に、スワップ可能なメモリ実物理アドレス毎にその上位ビットをエントリとして、対応するプロセッサから各エントリに対応するメモリアドレスへのアクセスをカウントし、
前記カウントしたアクセス値のうちの最大値のものをサーチし、対応するプロセッサと前記エントリに示されるメモリの位置とを確認し、これらが同じマルチチップパッケージに搭載されていない場合には、対応するプロセッサが搭載されているマルチチップパッケージに搭載され、かつ、そのエントリが完了のステータスにないメモリのうち、メモリアクセス頻度が一番小さいエントリであるかを条件として存在するかを確認し、前記条件のものがあればスワップを行うメモリとして決定し、メモリ実物理アドレスのスワップを実行するとともにスワップを行ったメモリ実物理アドレスに対応するエントリのステータスを完了とし、
前記スワップが行われた後のメモリ実物理アドレスの上位ビットと前記メモリ絶対アドレスの下位ビットとを組合わせてメモリ実物理アドレスとすることを特長とする。
この場合、前記カウントしたアクセス値のうちの最大値のものをサーチし、対応するプロセッサと前記エントリに示されるメモリの位置とを確認したときに、これらが同じマルチチップパッケージに搭載されている場合にはスワップを行わずに前記エントリのステータスを完了とすることとしてもよい。
また、前記カウントしたアクセス値のうちの最大値のもののサーチを一定周期毎に行うこととしてもよい。
なお、複数のプロセッサを搭載したマルチチップパッケージは、マルチチップパッケージが一つのプロセッサとして動作することがあり、上記の装置および方法におけるプロセッサは、マルチチップパッケージとしてもよい。
上記の構成を備える本発明は、以下に記載するような効果を奏する。
メモリアクセスレイテンシを考慮したメモリアクセスの最適化が行われるためシステムのスループットを向上させることができる効果がある。
また、オペレーティングシステムが、アーキテクチャの構成(プロセッサ、メモリの実装形態/位置関係)を意識することなく、メモリアクセスレイテンシを考慮した最適な構成をハードウェアが提供し、性能を向上させることができる効果がある。
次に、本発明の実施例について図面を参照して説明する。
図1は本発明によるマルチプロセッサシステムの構成を示すブロック図である。図1に示されるマルチチップパッケージMCP0(1),MCP1(2)は、バス制御部のハード量やバス信号線の削除を目的としてマルチチップパッケージの方式が採用されている。
図1に示す例では、MCP0(1)に、プロセッサCPU00(10),CPU01(11),CPU02(12),CPU03(13)とメインメモリユニットMMU00(15),MMU01(16),MMU02(17),MMU03(18)が搭載されている。同様にMCP1(2)に、プロセッサCPU10(20),CPU11(21),CPU12(22),CPU13(23)とメインメモリユニットMMU10(25),MMU11(26),MMU12(27),MMU13(28)が搭載されている。
そして、MCP0(1)とMCP1(2)を接続する機構として、バス(3)が用いられ、MCP0(1),MCP1(2)とをつないだ構成としている。なお、図1では、2つのMCPが示されているが、これは単なる構成例であって、3つ以上のMCPで構成しても当然よい。
そして、本実施例においては、バス(3)に接続することによりメモリの負荷状態を監視するメモリアクセス負荷監視機構(4)が設けられている。
図2は、メモリアクセス負荷監視機構(4)の構成を示すブロック図である。
CPU番号(410)は、メモリアクセスが、どのCPUから発行されたかを判断するための識別子となる。通常マルチプロセッサシステムにおけるメモリアクセスのための信号には、各プロセッサ(CPU)を判別するための識別子が含まれているので、それを利用してもよい。
メモリ絶対アドレスレジスタ(411)は、実際にCPUから発行されたアドレスを保持する。
アドレス変換テーブル(402)は、CPUが認識しているメモリ絶対アドレスをプラットフォーム上の実際のメモリの物理アドレスであるメモリ実物理アドレスに変換するものである。本実施例では、メモリの内容をスワップするために、このメモリ絶対アドレスからメモリ実物理アドレスへの変換を行う。
メモリ実物理アドレス合成器(431)は、プラットフォーム上の物理的なメモリセルの位置を示す。
アドレストレース機構(405)は、CPUから発行されるメモリアクセス頻度のトレースデータを採取する機構であり、CPU番号毎に用意されたトレース採取テーブルを持つ。各トレース採取テーブルは、スワップ可能なメモリアドレス空間毎にその上位ビットのエントリを持ち、同エントリは、当該アドレスへのアクセスがある度に、1つずつインクリメントされるカウンタを持っている。
MUX(430)は、アドレストレース機構(405)のトレース採取テーブルを選択するためのマルチプレクサである。
負荷状態判別機構(404)は、一定時間ごとに、アドレストレース機構(405)を参照し、メモリのスワップ、および、ルーティング変更を行うか否かを判別する機能を有している。
この負荷状態判別機構(404)は、タイマ(441)を持っており、ルーティング監視/設定機構(440)は、タイマ(441)によって、一定時間毎に起動される。
ルーティング監視/設定機構(440)は、アドレストレース機構(405)を参照するパスを有し、アクセスレイテンシの優劣を判別する機能を備える。
メモリコピー命令機構(442)は、ルーティング監視/設定機構(440)でのレイテンシ判別において、メモリスワップの必要があると判断された場合、メモリコピー機構(407)にメモリスワップを実行するよう命令を発行する機能を持っている。
メモリコピー機構(407)は、或るMMUと別のMMUの内容をスワップさせる機能を持つ。
なお、メモリコピー機構(407)は、メモリ内容のスワップ動作をさせるため、テンポラリとなるSWAP Buffer(470)を持っている。
図1に示したMMU00〜MMU03(15〜18),MMU10〜MMU13(25〜28)は、主記憶であり、各MMUは、動的に構成変更可能なメモリ内容をスワップできる単位になっている。
この構成変更可能なメモリ容量によって、アドレス変換テーブル(402)とアドレストレース機構(405)に格納される上位ビット数、および、SWAP Buffer(470)のサイズは決定する。
たとえば、1つのMMUあたりのメモリ容量が16MB(=2の24乗)のMMUを256個持つシステムでは、アドレス変換テーブル(402)で扱う上位ビットは、最低でも8bitとなり、同様にアドレストレース機構(405)で保持する上位ビット数も8bitとなる。また、このとき、SWAP Buffer(470)も最低16MBの領域が必要である。
なお、メモリコピー機能(407)の実現手段については、本発明とは直接関係しないのでその詳細な構成は省略する。
次に、本実施例におけるアドレストレースの採取動作について図2を参照して説明する。
図1に示したCPUからメモリに対して、ロード、もしくは、ストア命令が発行された場合、このアドレスは、発行元のCPU番号とともにメモリアクセス負荷監視機構(4)に送られ、それぞれ、CPU番号(410)とメモリ絶対アドレスレジスタ(411)で保持される。
メモリ絶対アドレスレジスタ(411)に格納されたアドレスの上位ビットはアドレス変換テーブル(402)を参照して、メモリ実物理アドレスの上位ビットに変換される。
このメモリ実物理アドレスが実際のプラットフォームに対するメモリアドレスであり、CPUから発行されたロード、ストア命令に対しては、このアドレスを使用して、MMUにアクセスし、応答する。
このメモリ実物理アドレスは、CPU番号とともにMUX(430)を経由して、アドレストレース機構(405)にも送られる。アドレストレース機構(405)は、各CPUに対して設けられたトレース採取テーブルによりCPU番号毎のメモリアクセスのトレースデータを採取する。
図3は、トレース採取テーブルによるCPUから発行されるメモリアクセスのトレースデータ例を示す図であり、トレースデータの採取内容について図3を参照して以下に説明する。
まず、今、仮に、スワップ可能な最小単位を16MB(2の24乗)のMMUを256個持つシステムを想定すると、トレースすべきメモリ実物理アドレス上位ビットは8bitとなる。
よって、トレースデータは、この上位8bit単位で収集される。また、当該メモリ実物理アドレス空間に何回のアクセスがあったかを数えるカウンタにアクセス回数を格納し、さらに図2には示さなかったが、当該メモリ実物理アドレス空間がどのMCP上に存在するかの実装位置情報とがトレース採取テーブルに記述される。
なお、図3においては、説明簡略化のため、CPU02系のアドレストレース例とCPU10系のアドレストレース例のみ記載しているが、実際のトレースは全CPU数分存在する。
次に、負荷状態判別機構(404)にて行われる、レイテンシを改善するためのメモリスワップを行うか否かの判断処理について説明する。
アドレストレース機構(405)に蓄えられたトレースデータは、負荷状態判別機構(404)によって参照される。実際にトレースデータより、メモリコピー、および、アドレスルーティングを変更するか否かを決定するのは、負荷状態判別機構(404)内のルーティング監視/設定機構(440)であり、ルーティング監視/設定機構(440)は、一定時間毎に起動される。そのため、負荷状態判別機構は(404)起動時刻を確認するためのタイマ(441)も保持している。
一定時間経過したとき、ルーティング監視/設定機構(440)は起動され、トレースデータを参照する。以降の説明は、ルーティング監視/設定機構(440)が起動されたときのトレースデータが、図3に示した状態を例にして説明する。
図3(a)はCPU02(12)から発行されるメモリアクセスのトレースデータ例を示したものである。なお、CPU02(12)は図1に示したようにMCP0(1)に所属している。
同様に図3(b)はCPU10(20)から発行されるメモリアクセスのトレースデータ例を示したものである。なお、CPU10(20)は図1に示したようにMCP1(2)に所属している。
図3(a)、(b)において、アドレス上位ビット000000010(2進数)のトレースデータに注目してみる。
本メモリ実物理アドレス空間は32MB〜48MB(0x02000000〜0x02FFFFFF)が相当するが、このメモリ空間は、MCP0(1)に存在している。しかし、このMCP0(1)上のメモリ空間に対して、同じMCP0(1)上のCPU02(12)からのアクセスは800回なのに対し、異なるMCP1(2)上のCPU10(20)からのアクセスは2200回になっており、異なるMCPへのアクセスが多いことから、システム全体として、スループットが低下している状態であることがわかる。
端的には、MCP0(1)上のプロセッサCPU02(12)がメインメモリユニットMMU02(17)に低頻度でアクセスし、MCP1(2)上のプロセッサCPU10(20)はMCP0上のMMU02に高頻度でアクセスしていることを示しており、ハードウェアの構成上、レイテンシの長いメモリが選択されるパターンが多用され、トータルスループットの低下の原因となっているといえる。
同様に、アドレス上位ビット000000100(2進数)のトレースデータに注目してみる。
本メモリ実物理アドレス空間は64MB〜80MB(0x04000000〜0x04FFFFFF)が相当するが、このメモリ空間は、MCP1(2)に存在している。しかし、このMCP1(2)上のメモリ空間に対して、同じMCP1(2)上のCPU10(20)からのアクセスは500回なのに対し、異なるMCP0(1)上のCPU02(12)からのアクセスは2300回になっており、こちらもスループットに関して、良い状態でないことがわかる。
そこで、ルーティング監視/設定機構(440)は、これらのトレースデータより、レイテンシを改善するため、メモリ実物理アドレスのアドレス上位ビット000000010のメモリ内容と上位ビット000000100のメモリ内容をスワップさせることを決定する。
図4は上記の決定を行う動作を示すフローチャートであり、以下に、図4を参照して本実施例におけるメモリ内容のスワップ動作について説明する。
まず、最初に一定時間経過したところで負荷状態判別機構(404)が動作を開始し(ステップS1)、アドレストレース機構(405)に採取されたカウンタのうち、最大値を持つものを探す(ステップS2)。続いて、ステップS2にて探し出した最大値を持つカウンタのメモリアドレスに示されるメモリが搭載されるMCPが、アクセスを行ったCPUが搭載されるMCP上であるか否かを確認する(ステップS3)。
ステップS3において、アクセスを行ったCPUの所属するMCP上に当該メモリが存在する場合には、このアクセスは、妥当であると判断し、ステップS4に進む。
ステップS3において、アクセスを行ったCPUの所属するMCP上に当該メモリが存在しない場合には、メモリアクセスレイテンシの改善対象にあると判断し、ステップS5に進む。
ステップS4では、そのアドレスレンジのメモリアクセスレイテンシは最適であるため、該メモリアドレスエントリが今後の処理でスワップされることのないように該アドレスエントリを完了のステータスに変更しておく。すなわち、これは、このアドレス空間は最適化が完了していることと同等になる。
ステップS5では、アクセスを行ったCPUのトレーステーブルを参照し、当該CPUの所属するMCP上に存在し、かつ、そのメモリアドレスエントリが完了のステータスにないメモリのうち、メモリアクセス頻度が一番小さいエントリのものが存在するかを確認する。
ステップS5において、上記の条件を満たすメモリアドレスエントリが存在することが確認された場合には、スワップできるメモリアドレスエントリが存在すると判断し、ステップS6に進む。
ステップS5において、上記の条件を満たすメモリアドレスエントリが存在することが確認されなかった場合には、スワップできるメモリアドレスエントリが存在しないと判断され、後処理のためステップS10に進む。
ステップS6では、2つのエントリのスワップを実行し(ステップS6)、これに伴い、アドレス変換テーブルを更新する(ステップS7)。続いて、アドレストレース機構のカウンタ値も入れ替えたアドレスエントリ同士で入れ替えを行う(ステップS8)。これは、ステップS5で検出された被スワップ側エントリ(アクセス頻度が小さくスワップ対象となったエントリ)には、さらなる最適化の可能性が残されているので、カウンタの状態を適切にしておく必要があるためである。
ステップS6〜ステップS8によるメモリスワップを実行した後は、そのアドレスレンジは最適化が施された後のため、完了のステータスに変更する(ステップS9)。すなわち、ステップS4の終了状態と同じ状態になる。
ただし、ステップS5で検出された被スワップ側エントリは完了のステータスには遷移しない。これは、被スワップ側エントリには更なる最適化を施すことの可能性があるからである。
ステップS5にて、スワップできるエントリが存在しないと判断されたときに行われるステップS10では、当該エントリにはレイテンシを改善できる可能性はないので、再びステップS2でのサーチ対象とならないよう当該カウンタはサーチ対象外にステータスに変更する。ここで、メモリアドレスエントリに対する完了ステータスは、アドレスにつけられるものであるが、カウンタに対するサーチ対象外ステータスはカウンタにつけられるものである。
各ステップS4,S9,S10が終了後、最適化が完了したか否かの判断を行う(ステップS11)。
最適化を施す余地がない場合、すなわち、すべてのメモリアドレスエントリが完了のステータスになった場合、もしくは、ステップS2でのサーチ対象のカウンタが存在しない場合には、ステップS11に遷移し処理を終了する。
最適化を施す余地が残っている場合、再びステップS2に遷移し、最大値のカウンタのサーチから処理を繰り返す。
このとき、完了のステータスをもつメモリアドレスエントリと、ステップS10でサーチ対象外のステータスとされているものはステップS2でのサーチ対象から外れることになる。以降、同様に処理は繰り返される。
なお、アドレストレース機構のカウンタ採取単位をCPUごとではなく、MCP毎にした場合でも、アルゴリズムは同じである。
上記のスワップ動作は、メモリコピー命令機構(442)より、メモリコピー機構(407)に対して、メモリコピーを行うよう指示を出すことにより、実行が開始される。
上位ビット000000010のメモリ内容と上位ビット000000100のメモリ内容のスワップのために、メモリコピー機構(407)は、最初にどちらか一方のデータをSWAP Buffer(470)にコピーする。
今、仮に上位ビット000000010のメモリ内容をSWAP Buffer(470)にコピーするものとする。次に、上位ビット000000100のメモリ内容を上位ビット000000010の空間にコピーする。最後に、SWAP Buffer(470)に退避されている元の上位ビット000000010のメモリ内容を上位ビット000000100の空間にコピーをし、両メモリ空間の内容がスワップされる。
スワップが完了した後には、オペレーティングシステムの知りえないところでメモリ実物理アドレスを変更させることが必要なため、アドレス変換テーブル(402)を更新する。
図5は、メモリスワップを行う前のアドレス変換テーブルの例を示しており、メモリ絶対アドレスとメモリ実物理アドレスが同値になっている。
次に、トレースデータの解析から、メモリスワップが有効と判断し、メモリ内容のスワップさせていることから、オペレーティングシステムが、元のメモリ内容に正しくアクセスできるようアドレス変換テーブルを変更する。変更したものが図6の状態である。
すなわち、メモリ絶対アドレス上位ビット000000010(2進)がメモリ実物理アドレスの上位ビット00000100(2進)に対応付けられ、同様にメモリ絶対アドレス上位ビット00000100(2進)がメモリ実物理アドレスの上位ビット00000010(2進)に対応付けられている。
この対応付けの変更により、メモリ実物理アドレスが変わっているので、オペレーティングシステムから見たメモリ空間を矛盾させることなく、実際にアクセスする空間のレイテンシを改善している。
最後に、トレースデータのカウンタをクリアする。
以降は、この処理を繰り返すことにより、常にメモリアクセスレイテンシについて最適な状態が維持され、プラットフォームのパフォーマンスを向上させることができる。
図1は本発明によるマルチプロセッサシステムの構成を示すブロック図である。 図1中のメモリアクセス負荷監視機構(4)の構成を示すブロック図である。 (a)、(b)のそれぞれはトレース採取テーブルによるCPUから発行されるメモリアクセスのトレースデータ例を示す図である。 本発明の実施例の動作を示すフローチャートである。 本発明の実施例におけるアドレス変換テーブルの例を示す図である。 本発明の実施例におけるアドレス変換テーブルの例を示す図である。
符号の説明
1 MCP0
2 MCP1
3 バス
4 メモリアクセス負荷監視機構
11〜13 CPU00〜CPU03
15〜18 MMU00〜MMU03
21〜23 CPU10〜CPU13
25〜28 MMU10〜MMU13
402 アドレス変換テーブル
404 負荷状態判別機構
405 アドレストレース機構
407 メモリコピー機構
410 CPU番号
411 メモリ絶対アドレスレジスタ
430 マルチプレクサ
431 メモリ実物理アドレス合成器
440 ルーティング監視/設定機構
441 タイマ
442 メモリコピー命令機構
470 SWAP Buffer

Claims (12)

  1. プロセッサおよびメモリが搭載されたマルチチップパッケージを複数使用するマルチプロセッサシステムのメモリアクセス負荷分散装置であって、
    前記プロセッサが認識しているメモリ絶対アドレスを保持するメモリ絶対アドレスレジスタと、
    前記メモリ絶対アドレスの上位ビットをプラットフォーム上の実際のメモリの物理アドレスであるメモリ実物理アドレスの上位ビットに変換して格納するアドレス変換テーブルと、
    前記プロセッサ毎に用意され、スワップ可能なメモリ実物理アドレス毎にその上位ビットであるエントリと、対応するプロセッサから各エントリに対応するメモリアドレスへのアクセスがある度に1つずつインクリメントされるカウンタとを備えるトレース採取テーブルと、
    前記トレース参照テーブルの格納内容を参照し、前記プロセッサがアクセスするメモリアドレスに応じてスワップを行うメモリを決定して前記アドレス変換テーブルにおけるメモリ実物理アドレスのスワップを実行するとともに前記トレース採取テーブルにおける前記スワップを行ったメモリ実物理アドレスに対応するエントリのステータスを完了とする負荷状態判別機構と、
    前記アドレス変換テーブルに格納されているメモリ実物理アドレスの上位ビットと前記メモリ絶対アドレスレジスタに保持されているメモリ絶対アドレスの下位ビットとを組合わせてメモリ実物理アドレスとして出力するメモリ実物理アドレス合成器とを備え、
    前記負荷状態判別機構は、
    前記トレース採取テーブルのカウンタのうちの最大値のものをサーチし、対応するプロセッサと前記エントリに示されるメモリの位置とを確認し、これらが同じマルチチップパッケージに搭載されていない場合には、前記トレース採取テーブルを参照して、対応するプロセッサが搭載されているマルチチップパッケージに搭載され、かつ、そのエントリが完了のステータスにないメモリのうち、メモリアクセス頻度が一番小さいエントリであるかを条件として存在するかを確認し、前記条件のものがあればスワップを行うメモリとして決定することを特長とするマルチプロセッサシステムのメモリアクセス負荷分散装置。
  2. 請求項1記載のマルチプロセッサシステムのメモリアクセス負荷分散装置において、
    前記負荷状態判別機構は、前記複数のトレース採取テーブルのカウンタのうちの最大値のものをサーチし、対応するプロセッサと前記エントリに示されるメモリの位置とを確認し、これらが同じマルチチップパッケージに搭載されている場合にはスワップを行わずに前記エントリのステータスを完了とするプロセッサシステムのメモリアクセス負荷分散装置。
  3. 請求項1または請求項2記載のマルチプロセッサシステムのメモリアクセス負荷分散装置において、
    タイマーを備え、
    前記負荷状態判別機構は、前記タイマーのカウントによる一定周期ごとに前記トレース採取テーブルのカウンタのうちの最大値のものをサーチを行うマルチプロセッサシステムのメモリアクセス負荷分散装置。
  4. プロセッサおよびメモリが搭載されたマルチチップパッケージを複数使用するマルチプロセッサシステムのメモリアクセス負荷分散装置であって、
    前記マルチチップパッケージが認識しているメモリ絶対アドレスを保持するメモリ絶対アドレスレジスタと、
    前記メモリ絶対アドレスの上位ビットをプラットフォーム上の実際のメモリの物理アドレスであるメモリ実物理アドレスの上位ビットに変換して格納するアドレス変換テーブルと、
    前記マルチチップパッケージ毎に用意され、スワップ可能なメモリ実物理アドレス毎にその上位ビットであるエントリと、対応するマルチチップパッケージから各エントリに対応するメモリアドレスへのアクセスがある度に1つずつインクリメントされるカウンタとを備えるトレース採取テーブルと、
    前記トレース参照テーブルの格納内容を参照し、前記マルチチップパッケージがアクセスするメモリアドレスに応じてスワップを行うメモリを決定して前記アドレス変換テーブルにおけるメモリ実物理アドレスのスワップを実行するとともに前記トレース採取テーブルにおける前記スワップを行ったメモリ実物理アドレスに対応するエントリのステータスを完了とする負荷状態判別機構と、
    前記アドレス変換テーブルに格納されているメモリ実物理アドレスの上位ビットと前記メモリ絶対アドレスレジスタに保持されているメモリ絶対アドレスの下位ビットとを組合わせてメモリ実物理アドレスとして出力するメモリ実物理アドレス合成器とを備え、
    前記負荷状態判別機構は、
    前記トレース採取テーブルのカウンタのうちの最大値のものをサーチし、対応するマルチチップパッケージと前記エントリに示されるメモリの位置とを確認し、該メモリが対応するマルチチップパッケージに搭載されていない場合には、前記トレース採取テーブルを参照して、対応するマルチチップパッケージに搭載され、かつ、そのエントリが完了のステータスにないメモリのうち、メモリアクセス頻度が一番小さいエントリであるかを条件として存在するかを確認し、前記条件のものがあればスワップを行うメモリとして決定することを特長とするマルチプロセッサシステムのメモリアクセス負荷分散装置。
  5. 請求項4記載のマルチプロセッサシステムのメモリアクセス負荷分散装置において、
    前記負荷状態判別機構は、前記複数のトレース採取テーブルのカウンタのうちの最大値のものをサーチし、前記エントリに示されるメモリの位置とを確認し、該メモリが対応するマルチチップパッケージに搭載されている場合にはスワップを行わずに前記エントリのステータスを完了とするマルチプロセッサシステムのメモリアクセス負荷分散装置。
  6. 請求項4または請求項5記載のマルチプロセッサシステムのメモリアクセス負荷分散装置において、
    タイマーを備え、
    前記負荷状態判別機構は、前記タイマーのカウントによる一定周期ごとに前記トレース採取テーブルのカウンタのうちの最大値のものをサーチを行うマルチプロセッサシステムのメモリアクセス負荷分散装置。
  7. プロセッサおよびメモリが搭載されたマルチチップパッケージを複数使用するマルチプロセッサシステムで行われるメモリアクセス負荷分散方法であって、
    前記プロセッサが認識しているメモリ絶対アドレスの上位ビットをプラットフォーム上の実際のメモリの物理アドレスであるメモリ実物理アドレスの上位ビットに変換し、
    前記プロセッサ毎に、スワップ可能なメモリ実物理アドレス毎にその上位ビットをエントリとして、対応するプロセッサから各エントリに対応するメモリアドレスへのアクセスをカウントし、
    前記カウントしたアクセス値のうちの最大値のものをサーチし、対応するプロセッサと前記エントリに示されるメモリの位置とを確認し、これらが同じマルチチップパッケージに搭載されていない場合には、対応するプロセッサが搭載されているマルチチップパッケージに搭載され、かつ、そのエントリが完了のステータスにないメモリのうち、メモリアクセス頻度が一番小さいエントリであるかを条件として存在するかを確認し、前記条件のものがあればスワップを行うメモリとして決定し、メモリ実物理アドレスのスワップを実行するとともにスワップを行ったメモリ実物理アドレスに対応するエントリのステータスを完了とし、
    前記スワップが行われた後のメモリ実物理アドレスの上位ビットと前記メモリ絶対アドレスの下位ビットとを組合わせてメモリ実物理アドレスとすることを特長とするマルチプロセッサシステムのメモリアクセス負荷分散方法。
  8. 請求項7記載のマルチプロセッサシステムのメモリアクセス負荷分散方法において、
    前記カウントしたアクセス値のうちの最大値のものをサーチし、対応するプロセッサと前記エントリに示されるメモリの位置とを確認したときに、これらが同じマルチチップパッケージに搭載されている場合にはスワップを行わずに前記エントリのステータスを完了とするマルチプロセッサシステムのメモリアクセス負荷分散方法。
  9. 請求項7または請求項8記載のマルチプロセッサシステムのメモリアクセス負荷分散方法において、
    前記カウントしたアクセス値のうちの最大値のもののサーチを一定周期毎に行うプロセッサシステムのメモリアクセス負荷分散方法。
  10. プロセッサおよびメモリが搭載されたマルチチップパッケージを複数使用するマルチプロセッサシステムで行われるメモリアクセス負荷分散方法であって、
    前記マルチプロセッサシステムが認識しているメモリ絶対アドレスの上位ビットをプラットフォーム上の実際のメモリの物理アドレスであるメモリ実物理アドレスの上位ビットに変換し、
    前記マルチプロセッサシステム毎に、スワップ可能なメモリ実物理アドレス毎にその上位ビットをエントリとして、対応するマルチプロセッサシステムから各エントリに対応するメモリアドレスへのアクセスをカウントし、
    前記カウントしたアクセス値のうちの最大値のものをサーチし、対応するマルチプロセッサシステムと前記エントリに示されるメモリの位置とを確認し、該メモリが対応するマルチチップパッケージに搭載されていない場合には、対応するマルチチップパッケージに搭載され、かつ、そのエントリが完了のステータスにないメモリのうち、メモリアクセス頻度が一番小さいエントリであるかを条件として存在するかを確認し、前記条件のものがあればスワップを行うメモリとして決定し、メモリ実物理アドレスのスワップを実行するとともにスワップを行ったメモリ実物理アドレスに対応するエントリのステータスを完了とし、
    前記スワップが行われた後のメモリ実物理アドレスの上位ビットと前記メモリ絶対アドレスの下位ビットとを組合わせてメモリ実物理アドレスとすることを特長とするマルチプロセッサシステムのメモリアクセス負荷分散方法。
  11. 請求項10記載のマルチプロセッサシステムのメモリアクセス負荷分散方法において、
    前記カウントしたアクセス値のうちの最大値のものをサーチし、対応するマルチチップパッケージと前記エントリに示されるメモリの位置とを確認したときに、該メモリが対応するマルチチップパッケージに搭載されている場合にはスワップを行わずに前記エントリのステータスを完了とするマルチプロセッサシステムのメモリアクセス負荷分散方法。
  12. 請求項10または請求項11記載のマルチプロセッサシステムのメモリアクセス負荷分散方法において、
    前記カウントしたアクセス値のうちの最大値のもののサーチを一定周期毎に行うプロセッサシステムのメモリアクセス負荷分散方法。
JP2006076982A 2006-03-20 2006-03-20 マルチプロセッサシステムのメモリアクセス負荷分散装置および方法 Expired - Fee Related JP4872402B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006076982A JP4872402B2 (ja) 2006-03-20 2006-03-20 マルチプロセッサシステムのメモリアクセス負荷分散装置および方法
US11/723,141 US7774564B2 (en) 2006-03-20 2007-03-16 Multi-processor system, and method of distributing memory access load in multi-processor system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006076982A JP4872402B2 (ja) 2006-03-20 2006-03-20 マルチプロセッサシステムのメモリアクセス負荷分散装置および方法

Publications (2)

Publication Number Publication Date
JP2007257028A JP2007257028A (ja) 2007-10-04
JP4872402B2 true JP4872402B2 (ja) 2012-02-08

Family

ID=38519297

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006076982A Expired - Fee Related JP4872402B2 (ja) 2006-03-20 2006-03-20 マルチプロセッサシステムのメモリアクセス負荷分散装置および方法

Country Status (2)

Country Link
US (1) US7774564B2 (ja)
JP (1) JP4872402B2 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5076574B2 (ja) * 2007-03-19 2012-11-21 日本電気株式会社 メモリアクセス装置及び方法
US7962803B2 (en) * 2008-09-30 2011-06-14 International Business Machines Corporation Apparatus, system, and method for multi-address space tracing
JP5318223B2 (ja) 2009-04-06 2013-10-16 株式会社日立製作所 ストレージサブシステム、及びその制御方法
US8270194B2 (en) * 2009-04-07 2012-09-18 Marvell World Trade Ltd. Distributed flash memory storage manager systems
US8312186B2 (en) 2009-09-29 2012-11-13 Hitachi, Ltd. Storage subsystem
US9477636B2 (en) * 2009-10-21 2016-10-25 Micron Technology, Inc. Memory having internal processors and data communication methods in memory
US9684600B2 (en) * 2011-11-30 2017-06-20 International Business Machines Corporation Dynamic process/object scoped memory affinity adjuster
JP5223018B1 (ja) 2012-05-30 2013-06-26 楽天株式会社 情報処理装置、情報処理方法、情報処理プログラム及び記録媒体
US10255091B2 (en) 2014-09-21 2019-04-09 Vmware, Inc. Adaptive CPU NUMA scheduling
EP3299966A3 (en) 2016-08-29 2018-05-30 Rohm Co., Ltd. Semiconductor package
JP6816607B2 (ja) 2017-03-29 2021-01-20 富士通株式会社 ストレージ装置、情報処理装置及びドライバプログラム
US10922221B2 (en) * 2018-03-28 2021-02-16 Micron Technology, Inc. Memory management

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4035779A (en) * 1976-04-30 1977-07-12 International Business Machines Corporation Supervisor address key control system
US5860116A (en) * 1996-12-11 1999-01-12 Ncr Corporation Memory page location control for multiple memory-multiple processor system
JPH113324A (ja) * 1997-04-17 1999-01-06 Matsushita Electric Ind Co Ltd メモリ内蔵のデータ処理装置及び処理システム
JP2005216053A (ja) 2004-01-30 2005-08-11 Matsushita Electric Ind Co Ltd 最適メモリ配置演算装置及び最適メモリ配置方法
JP4535784B2 (ja) * 2004-06-15 2010-09-01 日本電気株式会社 プロセス配置装置、プロセス配置方法及びプロセス配置プログラム

Also Published As

Publication number Publication date
US20070220195A1 (en) 2007-09-20
US7774564B2 (en) 2010-08-10
JP2007257028A (ja) 2007-10-04

Similar Documents

Publication Publication Date Title
JP4872402B2 (ja) マルチプロセッサシステムのメモリアクセス負荷分散装置および方法
US8266396B2 (en) Memory system comprising blocks operable in parallel
US9772802B2 (en) Solid-state device management
US8412907B1 (en) System, method and computer program product for application-level cache-mapping awareness and reallocation
US10067872B2 (en) Memory speculation for multiple memories
US10789019B2 (en) Storage device capable of managing jobs without intervention of a processor
JP7340326B2 (ja) メンテナンス動作の実行
WO2014107148A1 (en) Adaptive data prefetching
US8868835B2 (en) Cache control apparatus, and cache control method
CN108664213B (zh) 基于分布式缓存的原子写命令处理方法与固态存储设备
US20170228164A1 (en) User-level instruction for memory locality determination
KR101893966B1 (ko) 메모리 관리 방법 및 장치, 및 메모리 컨트롤러
US20140372673A1 (en) Information processing apparatus, control circuit, and control method
WO2013101138A1 (en) Identifying and prioritizing critical instructions within processor circuitry
US7721047B2 (en) System, method and computer program product for application-level cache-mapping awareness and reallocation requests
JP6232936B2 (ja) 情報処理装置、記憶装置制御回路及び記憶装置の制御方法
CN109213425B (zh) 利用分布式缓存在固态存储设备中处理原子命令
JP2021522608A (ja) ストリーミングデータ転送のためのフロー圧縮を用いたデータ処理ネットワーク
CN108664212B (zh) 固态存储设备的分布式缓存
US20070266199A1 (en) Virtual Address Cache and Method for Sharing Data Stored in a Virtual Address Cache
CN108664214B (zh) 用于固态存储设备的分布式缓存的掉电处理方法与装置
JP5500272B2 (ja) 中継装置、中継履歴記録方法、及びデータ処理装置
JP4750889B2 (ja) キャッシュメモリ制御装置、およびパイプライン制御方法
US20100257319A1 (en) Cache system, method of controlling cache system, and information processing apparatus
JP2011141754A (ja) キャッシュメモリ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090212

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111017

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111025

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111107

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141202

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

LAPS Cancellation because of no payment of annual fees