JPH10503310A - 不均一メモリ・アクセス(numa)システムにおけるページ移動 - Google Patents

不均一メモリ・アクセス(numa)システムにおけるページ移動

Info

Publication number
JPH10503310A
JPH10503310A JP8533568A JP53356896A JPH10503310A JP H10503310 A JPH10503310 A JP H10503310A JP 8533568 A JP8533568 A JP 8533568A JP 53356896 A JP53356896 A JP 53356896A JP H10503310 A JPH10503310 A JP H10503310A
Authority
JP
Japan
Prior art keywords
page
count
processing node
memory
movement
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.)
Granted
Application number
JP8533568A
Other languages
English (en)
Other versions
JP3889044B2 (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.)
Graphics Properties Holdings Inc
Original Assignee
Silicon Graphics Inc
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 Silicon Graphics Inc filed Critical Silicon Graphics Inc
Publication of JPH10503310A publication Critical patent/JPH10503310A/ja
Application granted granted Critical
Publication of JP3889044B2 publication Critical patent/JP3889044B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/122Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)

Abstract

(57)【要約】 不均一メモリ・アクセス(NUMA)システムにおけるページ移動に関し、ページ移動コントローラが開示されている。ページ移動コントローラはメモリ・アクセス要求によってアドレスされたメモリ・ページをローカル処理ノードからリクエスタ(要求側)処理ノードへ移動しておくべきかどうかを決定する。ページ移動コントローラはアレイ(配列)をアクセスして、アドレスされたメモリ・ページとリクエスタ処理ノードに関連づけられた第1カウントと、アドレスされたメモリ・ページとローカル処理ノードに関連づけられた第2カウントとを取得する。第1カウントはインクリメントされ、その後、第2カウントはインクリメントされた第1カウントから減算され、第2カウントとインクリメントされた第1カウントとの差が得られる。コンパレータはその差が移動しきい値より大であるかどうかを決定する。差が移動しきい値より大であれば、移動割込みが出される。

Description

【発明の詳細な説明】 不均一メモリ・アクセス(NUMA)システム におけるページ移動 発明の背景 発明の分野 本発明は、一般的には、分散メモリを装備するコンピュータ・システムにおけ るデータの割振りに関し、具体的には、分散化された非一様ないし不均一メモリ ・アクセス(non-uniform memory access‐NUMA)コンピュータ・システム におけるメモリ・ページの移動に関する。 関連技術 分散メモリ・コンピュータ・システムは、各々に1つまたは2つ以上のプロセ ッサが置かれている、物理的に離散し分離されている複数の処理ノードと、これ らのプロセッサのどれからでもアクセスができるメインメモリとから構成されて いるのが代表的である。メインメモリは処理ノード間で物理的に分散化されてい る。言い換えれば、各処理ノードはメインメモリの一部を備えている。従って、 各プロセッサからは、「ローカル」メインメモリ(つまり、プロセッサと同じ処 理ノードに置かれているメインメモリの部分)と「リモート」メインメモリ(つ まり、他の処理ノードに置かれているメインメモリの部分)が存在するように見 える。 各プロセッサでは、ローカル・メインメモリをアクセスするときに起こるレイ テンシ(latency:待ち時間)は、リモート・メインメモリをアクセスするときに 起こるレイテンシよりも大幅に小さくなっている。従って、上述した分散メモリ ・コンピュータ・システムは不均一メモリ・アクセス(non-uniform memory access-NUMA)コンピュータ・システムとも呼ばれている。 NUMAコンピュータ・システムでは、最も頻繁にデータをアクセスするプロ セッサと同じ処理ノード(または最も頻繁にデータをアクセスするプロセッサに できる限り近くに置かれた処理ノード)に置かれているメインメモリ部分にデー タをストアしておくことが望ましい。言い換えれば、最も頻繁にデータをアクセ スするプロセッサが置かれている処理ノードにデータを移しておくことが望まし い。このようにすると、メモリ・アクセス・レイテンシは減少するのでシステム 全体のパフォーマンスが向上することになる。 この目標は、1つだけのプロセスによって使用される私有データ(private dat a)の場合には達成が容易である。この場合には、オペレーティング・システムは 、プロセスが実行されようとするプロセッサと同じ処理ノードに置かれているメ インメモリ部分にデータを移している。しかし、多数のプロセス(各プロセスは 異なる処理ノードで実行されている可能性がある)によってアクセスされる共有 データ(shared data)の場合には、オペレーティング・システムはどのプロセス が最も頻繁に共有データをアクセスするかについては知らないのが一般的である 。私有データの場合でも、あるプロセスが移動されたとき(つまり、ある処理ノ ードから別の処理ノードへ転送されたとき)、そのプロセスが最終的には元のノ ードに戻されることを予想して、最も頻繁に使用されるデータだけを新しいノー ドに移しておいた方が合理的な場合がある。 キャッシュオンリ・メモリ・アーキテクチャ(cache-only memory architectur e-COMA)は、メモリ・アクセス・レイテンシを低減化するためにNUMAコ ンピュータ・システムでデータを移動する1つのハードウェア方式として知られ ている。COMAは、データをアクセスしようとするプロセッサの近くにデータ を移しておく働きをする。COMAでは、メインメモリはキャッシュメモリとし て扱われている。COMAは、改良キャッシュ・コヒーレンシ・プロトコル(mod ified cache coherency protocol)を使用してこの機能性を達成している。従来 のキャッシュ・コヒーレンシ・プロトコルと異なり、COMAキャッシュ・コヒ ーレンシ・プロトコルはメモリ・ブロック置換(memory block replacement)およ びマルチレベル・キャッシュ包含(multi-level cache inclusion)の実施という問題を取り扱わなければならない。以上のように、CO MAはキャッシュ・コヒーレンシ・プロトコルを複雑化するので、望ましいソリ ューションではない。 COMAでは、キャッシュ・ミス(cache miss)を処理するとき、ローカル・メ インメモリとリモート・メインメモリ(これがダーティである)を順次にアクセ スして、ローカル・メインメモリに見つからなかったメモリ・ロケーションをア クセスするようにしている。COMAでは、これらのメモリ・ルックアップ(me mory look-up:メモリ参照)を行うためにも、キャッシュ・ミスが満足されたと きローカル・メモリの最終的割振りを行うためにも、相対的に大きなメモリ・バ ンド幅が必要である。従って、COMAアーキテクチャは、一般的に、他のアー キテクチャよりもパフォーマンスが低く、他のアーキテクチャよりもメモリ・レ イテンシが高くなっている。 COMAでは、すべてのメモリ・ブロック(32バイトから128バイトのメ モリであるのが代表的)にキャッシュ・タグ(cache tag)を付けている。これら のキャッシュ・タグは高価なスタチック・ランダムアクセスメモリ(static ran dom access memory-SRAM)に保存されていることが多い(安価なダイナミッ クRAMにではなく)。従って、COMAに関連するメモリ・オーバヘッドが大 になる潜在性をもっている。 メモリ・アクセス・レイテンシを低減化するためにNUMAコンピュータ・シ ステムでデータを移動するソフトウェア方式も提案されている。1つの方式では 、ソフトウェアは処理ノードごとにメモリ・ページごとのカウンタを維持してい る。ソフトウェアがキャッシュ・ミスのたびにカウンタを更新していないのは、 ソフトウェアをそのように動作させると、重大なシステム・パフォーマンス低下 が起こるためである。その代わりに、ソフトウェアはTLB(translation look- aside buffer:変換索引バッファ)ミスが起こるたびに、ノードのカウンタをイ ンクリメントしている。代表例として、カウンタはTLB例外ハンドラ(TLB exc eption handler)によって更新されている。 この公知ソフトウェア方式によると、(キャッシュ・ミスが起こるたびにカウ ンタを更新する場合に比べて)パフォーマンスに対する影響が低減されるが、そ れでもなお、オペレーティング・システムの中でパフォーマンス上非常に重要な 部分にソフトウェア命令が追加されている。さらに、TLBミスの数は必ずしも あるページに起こるキャッシュ・ミスの数と相関関係がない。従って、TLBミ スが起こったときページ移動を行うようにすると、該当ノードへのページ移動が 著しく遅延したり、ページが誤ってあるノードから別のノードへ移動されるおそ れがある。 以上の理由により、メモリ・アクセス・レイテンシを低減化するためにNUM Aコンピュータ・システムでデータを移動する改良システムと方法が要望されて いる。 発明の概要 本発明は、メインメモリのローカル部分を含んでいるローカル処理ノードにお ける装置を提供することを目的としている。ローカル処理ノードは1つまたは2 つ以上の追加処理ノードからなるコンピュータ・システムに置かれており、そこ では、各々の追加処理ノードはメインメモリのリモート部分を含んでいる。本装 置は、コンピュータ・システムにおけるメモリ・ページの移動(migration of me mory pages)を制御するものである。 本装置はコンピュータ・システムの各領域(region)のカウントを、メインメモ リのローカル部分に置かれている各メモリ・ページごとにストアしておくアレイ (array:配列)を含んでいる。各領域には、コンピュータ・システムの1つまた は2つ以上の処理ノードが収容されている。また、本装置は、メモリ要求によっ てアドレスされたメモリ・ページをメインメモリのローカル部分からリクエスタ (要求側)処理ノード(そのメモリ要求がリクエスタ処理ノードから出された場 所)へ移動しておくべきかどうかを決定するページ移動コントローラ(pagemigra tion controller)も含んでいる。 ページ移動コントローラはアレイをアクセスし、アドレスされたメモリ・ペー ジとリクエスタ処理ノードに関連づけられた第1カウント(first count)と、ア ドレスされたメモリ・ページとローカル処理ノードに関連づけられた第2カウン ト(second count)を取得する。第1カウントはインクリメントされ、そのあと第 2カウントはインクリメントされた第1カウントから減算されて、第2カウント とインクリメントされた第1カウントとの差が得られる。コンパレータ(比較器 )は、その差が移動のしきい値(migration threshold value)より大であるかど うかを決定する。差が移動しきい値より大であれば、移動割込み(migration int errupt)が出される。ソフトウェアはこの移動割込みを受け取り、メモリ・ペー ジを移動すべきかどうかを決定する。 本発明のその他の特徴と利点は、本発明の種々実施例の構造およびオペレーシ ョンと共に、添付図面を参照して以下で詳しく説明する。図面において、同一ま たは機能的に類似のエレメントは類似の参照符号を付けて示されている。 図面の簡単な説明 以下、添付図面を参照して本発明について説明する。添付図面において、 図1は、不均一メモリ・アクセス(NUMA)コンピュータ・システムを示す ブロック図である。 図2Aは、メインメモリの部分を示すブロック図である。 図2Bは、図2Aのメインメモリ部分に関連するアレイを示すブロック図であ る。 図3は、図2Bのアレイのエントリを示すブロック図である。 図4は、本発明の好適実施例によるページ移動コントローラを示す機能ブロッ ク図である。 図5は、図4のページ移動コントローラのオペレーションを示すフローチャー トである。 好適実施例の詳細な説明 本発明は、メモリ・アクセス・レイテンシを低減するためにNUMA(不均一 メモリ・アクセス)コンピュータ・システムでデータを移動する改良システムお よび方法を提供することを目的としている。本発明は、データ・アイテム(項目 )を最も頻繁にアクセスするプロセッサが置かれている処理ノードへ、またはそ の近くにそのデータ・アイテムを移動する(migrateないしtransfer)ように動作 する。 このようなデータ移動はハードウェアとソフトウェアの組合せを通して達成さ れている。本発明によれば、処理ノード(参照の便宜上ローカル・ノードと呼ぶ ことにする)内のハードウェアは、NUMAコンピュータ・システムの各処理ノ ードのカウントをローカル・メインメモリ(つまり、ローカル・ノードに置かれ ているメインメモリ部分)の各ページごとに維持している(代替実施例では、カ ウントは後述するように、処理ノード群と関連づけられている)。メモリ・アク セス要求(memory access request)があるたびに、ハードウェアはリクエスタ・ ノード(つまり、メモリ・アクセス要求を出したプロセッサが置かれている処理 ノード)に関連するカウントをインクリメントする。一実施例では、メモリ・ア クセス要求の目的はキャッシュ・ミスを埋め合わせる(fill)ことである。その場 合には、リクエスタ・ノードはキャッシュ・ミスが起こったプロセッサが置かれ ている処理ノードである。 ハードウェアはリクエスタ・ノードのカウントをローカル・ノードに関連する カウントと比較する。リクエスタ・ノードのカウントがローカル・ノードのカウ ントより十分に高ければ、ソフトウェア・プロセスにそのことが通知される(例 えば、割込みまたはポーリングを通して)。ソフトウェア・プロセスは特定のメ モリ・ページをリクエスタ・ノードに移動させる場合もあれば、そのリクエスタ ・ノードの近くに移動させる場合もある。 以下、本発明について詳しく説明する。図1は分散メモリ・コンピュータ・シ ステム102、好ましくは、分散化された不均一メモリ・アクセス(NUMA) コンピュータ・システム102を示すブロック図である。コンピュータ・システ ム102は複数の処理ノード104を含んでおり、これらは物理的に区別され、 相互に物理的に分離されている。処理ノード104は通信ネットワーク120を 通して相互に通信している。通信ネットワークとしては、バス、多段相互接続ネ ットワーク(multistage interconnection network)、ローカルエリア・ネット ワーク、広域ネットワークなどの公知のデータ通信手段、またはこれらを任意に 組み合わせたものにすることができる。 各処理ノード104には、1つまたは2つ以上のコンピューティング・ノード (computing node)106が置かれている(好ましくは、処理ノード104には2 つのコンピューティング・ノード106が置かれているが、各処理ノード104 に置くことができるコンピューティング・ノード106の数は2つ以外にするこ とも可能である)。各コンピューティング・ノード106にはプロセッサ108 とキャッシュ110が置かれている。また、各コンピューティング・ノード10 6には、メモリ・コントローラとネットワーク間インタフェース(memorycontrol ler and network interface)112も置かれている。任意の特定処理ノード10 4内のプロセッサ108は、その処理ノード104に置かれたメモリ・コントロ ーラとネットワーク間インタフェース112を通して通信ネットワーク120に 接続された他のデバイスと通信する。 各処理ノード104には、メインメモリ114の部分も置かれている。処理ノ ード104のすべてに置かれているメインメモリ114の各部分が集合したもの がコンピュータ・システム104のメインメモリである。任意の処理ノード10 4内の任意のプロセッサ108は、任意の他の処理ノード104に置かれている メインメモリ114の部分に入っているデータをアクセスすることができる。任 意の特定処理ノード104のメインメモリ114の部分に入っているデータへの アクセスは、その同一処理ノード104に置かれているメモリ・コントローラと ネットワーク間インタフェース112によって制御される。 図2Aはメインメモリの部分を示す詳細ブロック図である。メインメモリ11 4の各部分には、N個のメモリ・ページ202(各ページには、ページ0,ペー ジ1,... ,ページNのラベルが付いている)が収容されている。好ましくは、 各メモリ・ページは4Kバイトのサイズになっているが、本発明によれば、他の メモリ・ページ・サイズにしても動作効果は同じである。Nの値はどのようにイ ンプリメントするかによって決まる。 図2Bは本発明の好適実施例に従って各処理ノード104に維持されているア レイ204を示すブロック図である。アレイ204はメインメモリ114の部分 に置かれている各メモリ・ページ202のエントリ206を含んでいる。従って 、アレイ204はN個のエントリ206を含んでおり、各エントリにエントリ0 ,エントリ1,... ,エントリNのラベルが付けられている。エントリ0はメモ リ・ページ0に対応し、エントリ1はメモリ・ページ1に対応し、以下同様であ る。アレイ204は好ましくはダイナミック・ランダムアクセスメモリ(DRA M)にストアされている。一実施例では、アレイ204はメインメモリ114用 のキャッシュ・コヒーレント・ディレクトリ部分にストアされている。本発明に よれば、アドレスされたページ202と、そのアドレスされたページ202に関 連するアレイ204内のエントリ206とを同時にアクセスして、取り出すこと によってシステム・パフォーマンスを向上させている。 図3はアレイ204内のエントリ206を示すブロック図である。各エントリ 206には、N個のカウント304(個々にカウント0,カウント1,... ,カ ウント Mのラベルが付いている)がコンピュータ・システム102の各領域ごと に1つあて収められている。(従って、アレイ204はカウント304のバンク を表している。当然に理解されるように、レジスタなどの他の記憶機構を使用し てカウント304をストアすることも可能である。)コンピュータ・システム1 02にM個またはそれ以下の処理ノード104がある場合は、領域に単一の処理 ノード104を置いておくことが好ましく、そうすれば、カウント304を単一 の処理ノード104に対応させることができる。逆に、コンピュータ・システム 102にP個の処理ノード104がある場合には(ただし、PはMより大である )、各領域には複数の処理ノード104が置かれることになる。この場合には、 各領域にはQ個の処理ノード104を置いておくことが好ましい。ただし、P/ QはMより小か等しい。(当然に理解されるように、どの処理ノード104のグ ループも、領域を表すように設定することができる。)Qは8に等しいことが好 ましいが、本発明によれば、Qが他の値であっても同じ動作効果が得られる。 上述の説明から理解されるように、各カウント304は特定の処理ノード10 2に置かれている特定のメモリ・ページ202と関連づけられており、コンピュ ータ・システム102の特定の領域とも関連づけられている。カウント 304は、その領域に置かれているプロセッサ(1つまたは複数)108がその 特定処理ノード102に置かれている、その特定メモリ・ページを何回アクセス したかを示している。カウント304は、本発明によれば、その特定メモリ・ペ ージ202をカウント304に関連する領域内の処理ノード204へ移しておく べきかどうかを判断するために使用される。 図4はページ移動コントローラ402を示すブロック図である。ページ移動コ ントローラ402は、好ましくは、メモリ・コントローラとネットワーク間イン タフェース112の一部として処理ノード104に実装されているハードウェア ・デバイスになっている。以下では、説明の便宜上、処理ノード104Aのメモ リ・コントローラとネットワーク間インタフェース112Aに置かれているペー ジ移動コントローラ402について説明することにする(なお、以下の説明はす べてのノード104に置かれているページ移動コントローラ402にも適用され る)。この処理ノード104Aは参照の便宜上ローカル・ノード104Aと呼ぶ ことにする。ページ移動コントローラ402は、ローカル・ノード104A側の メモリ・ページをコンピュータ・システム102内の他の処理ノード104B, 104C(参照の便宜上リモート・ノード104B,104Cと呼ぶことにする )へ移しておくべきかどうかを決定する。 ページ移動コントローラ402内に置かれているコンポーネントはページ移動 コントローラ402によって実行されるオペレーション(演算、操作など)や機 能(function)を表している。ページ移動コントローラ402が図4に示され、こ こで説明されているオペレーションや機能を実行するようにページ移動コントロ ーラ402をどのようにインプリメント(実装)するかは、当該分野の当業者に は自明のことである。 以下では、図4を参照して、さらに図5に示す機能フローチャートを参照して ページ移動コントローラ402のオペレーションについて説明する。なお、理解 を容易にするために、以下では、各カウント304が単一の処理ノード104に 対応しているものとして(つまり、各領域には1つの処理ノード104が置かれ ているとして)説明する。しかし、当然に理解されるように、以下の説明は各領 域に複数の処理ノード104が置かれている場合にも適用される。 ステップ506で、ページ移動コントローラ402はプロセッサ108から出 されたメモリ・アクセス要求450を受け取る。このプロセッサ108が置かれて いる処理ノード104は参照の便宜上リクエスタ(要求側)ノード104と呼ぶ ことにする。メモリ・アクセス要求450はローカル・ノード104Aに置かれ ているプロセッサ108から出されることもあるが、その場合には、ローカル・ ノード104Aはリクエスタ・ノード104Aと同じになっている。また、メモ リ・アクセス要求450はリモート・ノード104Bまたは104Cに置かれて いるプロセッサ108から出されることもあるが、その場合には、ローカル・ノ ード104Aはリクエスタ・ノード104Bまたは104Cと同じになっていな い。説明の便宜上、処理ノード104C内のプロセッサ108Eまたは108F がメモリ・アクセス要求を出し、その処理ノード104Cがリクエスタ・ノード 104Cとなる場合を想定して説明する。 メモリ・アクセス要求450には、アクセスしようとするメモリ・ページ20 2を識別する情報が収められている。理解を容易にするために、メモリ・ページ 1をアクセスするものとして説明する。また、メモリ・アクセス要求450には 、リクエスタ・ノード104Cを指定している情報も収められている。ステップ 508で、ページ移動コントローラないしカウンタ402はメモリ・アクセス要 求450に入っているこの情報を使用してアレイ204をアクセスし、メモリ・ ページ1およびリクエスタ・ノード104C(つまり、メモリ・アクセス要求4 50で指定されたメモリ・ページとノード)に関連するカウント304を取り出 す。 ステップ510で、インクリメンタ(増分器)404はリクエスタ・ノード1 04Cのカウント304を1だけインクリメントし、このカウント304の新し い値をアレイ204にストアする。別の実施例では、統計的インクリメント(sta tistical increment)が行われるが、このインクリメントでは、リクエスタ・ノ ードのカウントをインクリメントする確率は1以下になっている。好ましくは、 この確率は、N回のローカル・クロック・サイクルのあと、あるいはN個の要求 またはDRAMのリフレッシュ・サイクルのあと各要求をインクリメントすると いったように、いくつかの擬似乱数メカニズム(pseudo-random mechanism)の1つによってセットされる。 ステップ512から始まるステップのシーケンスおよびステップ520から始 まるステップのシーケンスはステップ510のあとで実行される。具体的には、 ステップ512から始まるステップのシーケンスはステップ520から始まるス テップのシーケンスと同時に実行される。まず、ステップ512から始まるステ ップのシーケンスについて説明することにする。 ステップ512で、ページ移動コントローラ402はアレイ204をアクセス し、メモリ・ページ1(つまり、メモリ・アクセス要求450で指定された同じ メモリ・ページ202)とローカル・ノード104Aに関連するカウント304 を取り出す。 ステップ514で、ローカル・ノード104Aのカウント304とリクエスタ ・ノード104Cのカウント304(インクリメンタ404によってインクリメ ントされている)は減算器(subtractor)408に渡される。減算器408はロー カル・ノード104Aのカウント304をリクエスタ・ノード104Cのカウン ト304から減算し、その差をコンパレータ(比較器)412へ送る。減算器4 08とコンパレータ412は例えば、演算論理ユニット(arithmetic logic uni t-ALU)に相当するものとすることも可能である。 ステップ516で、コンパレータ412は前記の差を移動しきい値レジスタ4 10に格納されている移動しきい値と比較し、差が移動しきい値より大であるか どうかを決定する。この機能の目的は以下で説明する。 メモリ・ページ1をローカル・ノード104Aからリクエスタ・ノード104 Cへ移動するとき若干のシステム・コストが発生する。従って、メモリ・ページ 1をリクエスタ・ノード104Cへ移動するのは、リクエスタ・ノード104C によって行われるメモリ・ページ1へのアクセス回数がローカル・ノード104 Aによって行われるアクセス回数より十分に大である場合に限るべきである。移 動しきい値によって、この移動システム・コストが決まる。差が移動しきい値よ り大であれば、メモリ・ページ1を移動することが必要である。逆に、差が移動 しきい値より小か等しければ、メモリ・ページ1はリクエスタ・ノード104C へ移動されない。 移動しきい値はどのようにインプリメントするかによって決まり、コンピュー タ・システム102のパフォーマンス・パラメータによって決まる。好ましくは 、移動しきい値レジスタ410に格納される移動しきい値はコンピュータ・シス テム102のすべての領域で同じになっている。別の実施例では、移動しきい値 レジスタ410はコンピュータ・システム102の各領域ごとに移動しきい値を 格納している。この別実施例では、移動しきい値は、領域がローカル・ノード1 04Aからどれだけ離れているか、ページをローカル・ノード104Aから領域 へ移動するとき生じる通信コスト、システム負荷量、メモリ・ページの移動ヒス トリ(活動記録)などの、いくつかの要因に応じて各領域ごとに指定されている 。 移動しきい値はソフトウェアで調整可能であるが、好ましい実施例では、動的 に調整されないようになっている。別の実施例では、移動しきい値は各領域ごと に動的に調整されるようになっている。このことは、移動しきい値が1つだけで すべての領域に共通している実施例の場合も同じである。このような動的調整は システム負荷量、実行されるアプリケーションの数とタイプ、ユーザ特性などの いくつかの要因によって決まる。 差が移動しきい値より大でないとステップ516において判定されると、ステ ップ512から始まるステップのシーケンスはステップ518で示すように完了 する。そうでなければ、ステップ517が実行される。 ステップ517を説明する前に、アレイ204のもう1つの特徴を説明してお くことにする。図3に戻って説明すると、すでに説明したように、各エントリ2 06はM個のカウント304(個別にカウント0,カウント1,...,カウントM のラベルが付いている)を収めている。本発明の実施例によれば、各エントリ2 06はメモリ・ページ/処理ノード(または領域)別にモードを示しているモー ド情報も収めている。このモード情報は、好ましくは、オペレーティング・シス テムによってセットされるが、ユーザ調整可能にすることもできる。本発明によ れば、好ましくは、「移動」、「複写」、「移動と複写」、「無視(don't care) 」の4つのモードがサポートされている。これらのモードの意味については、以 下の説明の中で明らかにする。好ましくは、モード情報は2個のバイナ リ・コード化ビットで実現されている。 好ましくは、本発明はページのエントリ206で指定されたモードに従って動 作する(別の実施例では、本発明はローカル・ノード104A全体に対してセッ トされたモードで動作させることも、あるいはリクエスタ・ノード104Cのモ ードで決まるモードで動作させることも可能である)。従って、ステップ512 (上述した)では、メモリ・ページ1とローカル・ノード104Aに関連するカ ウント304を取り出すほかに、ページ移動コントローラ402はアレイ204 もアクセスして、メモリ・ページ1(つまり、要求されたメモリ・ページ)とロ ーカル・ノード104Aに関連するモード情報を取り出す。 図5に戻って説明すると、ステップ517で、ページ移動コントローラ402 はメモリ・ページ1とローカル・ノード104Aのモードが「移動」または「移 動と複写」に等しいかかどうかを決定する。メモリ・ページ1とローカル・ノー ド104Aのモードが「移動」または「移動と複写」に等しければ、ステップ5 22が実行される。そうでなければ、ステップ512から始まるステップのシー ケンスはステップ518で示すように完了する。 ステップ522で、ページ移動コントローラ402はメモリ・アクセス要求4 50に入っている情報を、移動/複写候補ページ/ノード・レジスタ414に格 納する。この情報はアクセスされたページ(つまり、ページ1)とそのページを アクセスしたノード(つまり、リクエスタ・ノード104C)を示している。次 に、ページ移動コントローラ402は移動割込み418を出す(後述するように 、ソフトウェア・プロセッサが移動信号を得るためにポーリングする場合には、 移動信号を出すことになる)。(別の実施例では、ページ移動コントローラ40 2はステップ522でメモリ・ページ1をリクエスタ・ノード104Cへ移動さ せる。) ソフトウェア・プロセス(図示せず)は移動割込み/信号418を受信すると 、移動/複写候補ページ/ノード・レジスタ414にもアクセスして移動ページ /ノード420(つまり、メモリ・ページ1とリクエスタ・ノード104Cを指 定している情報)を取得する。ソフトウェア・プロセスは、好ましくは、オペレ ーティング・システムの一部になっている。ソフトウェア・プロセスはページ 1をリクエスタ・ノード104Cに移動すべきかどうかを決定する。ソフトウェ ア・プロセスはシステム負荷量、メモリ・ページの移動ヒストリ、ノード・バン ド幅アンバランス(imbalance)などの、いくつかの要因を考慮してこの決定を行 う。この決定の結果に応じて、ソフトウェア・プロセスはメモリ・ページ1をリ クエスタ・ノード104Cへ移動させることになる。 以下では、ステップ520から始まるステップのシーケンスについて説明する 。 ステップ520で、コンパレータ451はリクエスタ・ノード104Cのカウ ント304を、複写しきい値レジスタ452に格納されている複写しきい値と比 較する(別の実施例では、リクエスタ・ノード104Cが置かれている領域に関 連するカウントが複写しきい値と比較される)。リクエスタ・ノード104Cの カウント304が複写しきい値より大であれば、メモリ・ページ1をリクエスタ ・ノード104Cに複写することが必要である。従って、ステップ521が実行さ れるが、これについては後述する。逆に、リクエスタ・ノード104Cのカウン トが複写しきい値より小か等しければ、メモリ・ページ1はリクエスタ・ノード 104Cに複写されず、処理はステップ518で示すように完了する。 ステップ521で、ページ移動コントローラ402はメモリ・ページ1とロー カル・ノード104Aのモードが「複写」または「移動と複写」に等しいかどう かを判断する。メモリ・ページ1とローカル・ノード104Aのモードが「複写 」または「移動と複写」に等しければ、ステップ522が実行される。そうでな ければ、ステップ520から始まるステップのシーケンスはステップ518で示 すように完了する。 ステップ522で、ページ移動コントローラ402はメモリ・アクセス要求4 50に入っている情報を移動/複写候補ページ/ノード・レジスタ414に格納 する。この情報はアクセスされたページ(つまり、ページ1)とそのページをア クセスしたノード(つまり、リクエスタ・ノード104C)を示している。その あと、ページ移動コントローラ402は複写割込み456を出す(ソフトウェア ・プロセスが後述するように複写信号を得るためにポーリングする場合は、複写 信号を出す)。(別の実施例では、ページ移動コントローラ402はステップ 522でメモリ・ページ1をリクエスタ・ノード104Cに複写させる。) ソフトウェア・プロセス(図示せず)は上述したものと同じソフトウェア・プ ロセスにすることができるが、複写割込み/信号456を受信すると、移動/複 写候補ページ/ノード・レジスタ414にもアクセスして、複写ページ/ノード 420(つまり、メモリ・ページ1とリクエスタ・ノード104Cを指定してい る情報)を取得する。このソフトウェア・プロセスは好ましくはオペレーティン グ・システムの一部になっている。ソフトウェア・プロセスはページ1をリクエ スタ・ノード104Cに移動すべきかどうかを判断する。ソフトウェア・プロセ スはシステム負荷量、メモリ・ページの移動ヒストリ、ノード・バンド幅アンバ ランスなどの、いくつかの要因を考慮してこの決定を行う。この決定の結果に応 じて、ソフトウェア・プロセスはページ1をリクエスタ・ノード104Cに複写 させる。 複写しきい値レジスタ452に格納された複写しきい値はノードがメモリ・ペ ージを何回アクセスしたら、メモリ・ページをノードに複写することが有利にな るかを示している。移動しきい値に関する考慮事項(上述した)は一般的に複写 しきい値にも適用される。 上述したように、ソフトウェア・プロセスは移動割込み418(移動割込み4 18が出された場合)および複写割込み456(複写割込み456が出された場 合)を受け取る。また、上述したように、ソフトウェア・プロセスはメモリ・ペ ージをリクエスタ・ノードに移動または複写すべきかどうかを判断するとき、い くつかの要因を考慮する。上述した要因以外にも、考慮される要因がもう1つあ る。それは、ソフトウェア・プロセスが移動割込み418と複写割込み456の 両方を受け取ったかどうかである。 当然に理解されるように、あるメモリ・ページがローカル・ノードからリクエ スタ・ノードへ移動されると、ローカル・ノードに置かれているメモリ・ページ のコピーは無効にされる。これに対して、メモリ・ページがリクエスタ・ノード に複写された場合には、ローカル・ノード側のメモリ・ページのコピーは有効に なっている(この側面から見た本発明は、主に読取り専用データの場合に効果的 であるので、この側面を利用すると、複写する必要のあるページ、つまり、複数 のコピーが複数のノードで作成されるようなページを識別することができる)。 本発明によれば、メモリ・ページの移動と複写は同時には行われない。 ソフトウェア・プロセスが移動割込み418と複写割込み456の両方を受け 取ると、ソフトウェア・プロセスは移動するのか、複写するのか、どちらも行わ ないのかを判断する。一実施例では、ソフトウェア・プロセスは複写よりも移動 に高い優先度を置いているので、移動割込み418と複写割込み456の両方を 受けたときは、移動が行われるようになっている(ただし、ソフトウェア・プロ セスが移動も複写もしないと判断しないことが条件である)。なお、この点にお けるソフトウェア・プロセスのオペレーションは、どのようにインプリメントし たかによって決まる。 なお、モードが「無視」のときは、ページ移動コントローラ402は移動割込 み418も複写割込み456も出さない。 上述したページ移動コントローラ402のオペレーション、具体的には、上述 したページ移動コントローラ402のコンポーネント間の相互作用は、コントロ ーラ422のオペレーションによって達成される。好ましくは、コントローラ4 22は、例えば、ハードウェアのステート・マシン(state machine)でインプリ メント(実現)されている。コントローラ422をどのようにインプリメントす るかは、当該分野の当業者に自明のことである。 また、ページ移動コントローラを実際にどのようにインプリメントするかも、 当該分野の当業者に自明のことである。例えば、実用上、ページ移動コントロー ラ402は中間結果を一時的に格納しておく、いくつかのレジスタを装備するこ とが可能である。例えば、あるレジスタをインクリメンタ404と減算器408 の間に置いておくと、減算器408の結果を一時的に格納することができる。別 のレジスタはアレイ204およびインクリメント404と減算器408の間に置 いておくと、アレイ204から取り出したカウントを一時的に格納することがで きる。その他のインプリメントの詳細は当該分野の当業者に自明のことである。 本発明はハードウェアで実現されているので、上述したように、従来のソフト ウェアによる手法で起こっていた問題が起こることがない。具体的には、本発明 はハードウェアで実現されているので、本発明によれば、各メモリ・アクセスご とにカウントを更新してもシステム・パフォーマンスが低下するおそれがない。 従って、本発明によると、NUMAコンピュータ・システムにおけるメモリ・ペ ージの移動を効率的かつ効果的に行うことができる。 以上から明らかなように、本発明によれば、キャッシュ・コヒーレント・プロ トコルを複雑化しなくてもページ移動を効率的かつ効果的に行うことができる。 また、本発明によれば、メモリ・ルックアップ用のメモリ・バンド幅を大きくし なくてもページ移動を行うことができる。さらに、本発明によれば、メモリの各 ブロックごとにキャッシュ・タグを関連づける必要がない。本発明のアレイは高 価なSRAMにではなく、安価なDRAMにストアされることに注目すべきであ る。従って、本発明によれば、上述したように、従来のハードウェアによる手法 で起こっていた問題が起こることはない。 以上、本発明の種々の実施例について説明してきたが、当然に理解されるよう に、これらの実施例は単なる例示であり、本発明は上述した実施例に限定される ものではない。従って、本発明の技術範囲は上述した実施例のどれによっても制 限されるものではなく、請求の範囲に記載されている本発明の範囲によってのみ 判断されるべきものである。
【手続補正書】特許法第184条の7第1項 【提出日】1996年11月8日 【補正内容】 27.ローカル処理ノードにストアされていて、メモリ・アクセス要求によって アドレスされたメモリ・ページを、前記メモリ・アクセス要求が出されたリクエ スタ処理ノードに複写しておくべきかどうかを決定する方法であって、 前記アドレスされたメモリ・ページと前記リクエスタ処理ノードに関連づけら れたカウントを前記ローカル処理ノードにおけるアレイから取得するステップと 、 前記カウントをインクリメントするステップと、 前記インクリメントされたカウントが複写しきい値より大であれば複写信号を 出すステップと を具えたことを特徴とする方法。 28.請求項1に記載の装置において、前記インクリメンタは前記第1カウント を統計的にインクリメントすることを特徴とする装置。 29.ローカル処理ノードにストアされていて、メモリ・アクセス要求によって アドレスされたメモリ・ページを、前記メモリ・アクセス要求が出されたリクエ スタ処理ノードに複写しておくべきかどうかを決定する方法であって、 前記アドレスされたメモリ・ページと前記リクエスタ処理ノードに関連づけら れたカウントを取得するステップと、 前記カウントをインクリメントするステップと、 前記インクリメントされたカウントが複写しきい値より大であれば複写信号を 出すステップと、 前記複写信号を受信するステップと、 前記複写信号を受信した後、前記メモリ・ページを複写しておくべきかどうか を、システム負荷量、前記アドレスされたメモリ・ページの移動ヒストリ、また はノード・バンド幅アンバランスを含む追加のしきい値の要因に基づいて決定す るステップと を具えたことを特徴とする方法。

Claims (1)

  1. 【特許請求の範囲】 1.ローカル処理ノードに置かれた装置であって、該ローカル処理ノードはメイ ンメモリのローカル部分を具え、該ローカル処理ノードは1つまたは2つ以上の 追加処理ノードを具えたコンピュータ・システムに置かれており、各追加処理ノ ードはメインメモリのリモート部分を具え、前記装置は前記コンピュータ・シス テムにおけるメモリ・ページの移動を制御するものにおいて、前記装置は、 前記コンピュータ・システムの各領域のカウントを、メインメモリの前記ロー カル部分に置かれている各メモリ・ページごとにストアしておく記憶機構であっ て、各領域は前記コンピュータ・システムの1つまたは2つ以上の処理ノードを 収容している記憶機構と、 メモリ・アクセス要求によってアドレスされたメモリ・ページをメインメモリ の該ローカル部分からリクエスタ処理ノードへ移動しておくべきかどうかを決定 するページ移動コントローラであって、前記メモリ・アクセス要求は前記リクエ スタ処理ノードから出されたものであるページ移動コントローラとを具え、 該ページ移動コントローラは、 前記記憶機構にアクセスして、前記アドレスされたメモリ・ページと該リ クエスタ処理ノードに関連づけられた第1カウントと、該アドレスされたメモリ ・ページと前記ローカル処理ノードに関連づけられた第2カウントを取得する手 段と、 前記第1カウントをインクリメントするインクリメンタと、 前記インクリメントされた第1カウントを前記記憶機構にストアする手段 と、 前記第2カウントと該インクリメントされた第1カウントとの差が移動し きい値より大であるとき移動信号を発行する移動信号発行手段と を具えていることを特徴とする装置。 2.請求項1に記載の装置において、前記移動信号発行手段は、 前記第2カウントを前記インクリメントされた第1カウントから減算して該第 2カウントと該インクリメントされた第1カウントとの差を得るための減算器と 、 前記差が前記移動しきい値より大であるかどうかを判定するコンパレータと、 前記差が前記移動しきい値より大であれば前記移動信号を発行するコントロー ラとを具えていることを特徴とする装置。 3.請求項2に記載の装置において、前記ページ移動コントローラは、 前記コンピュータ・システムの各領域ごとに移動しきい値を格納しておく移動 しきい値レジスタと、 前記リクエスタ処理ノードが置かれている該コンピュータ・システムの領域に 関連づけられた移動しきい値を前記移動しきい値レジスタから取り出す手段と、 前記取り出した移動しきい値を前記コンパレータヘ渡す手段と をさらに具えていることを特徴とする装置。 4.請求項1に記載の装置において、前記コンピュータ・システムは、前記移動 信号を受けたときにそれに応答して、前記アドレスされたメモリ・ページを前記 ローカル処理ノードから前記リクエスタ処理ノードへ移動する手段を含んでいる ことを特徴とする装置。 5.請求項2に記載の装置において、前記コントローラは、前記差が前記移動し きい値より大であるとき前記アドレスされたメモリ・ページを前記ローカル処理 ノードから前記リクエスタ処理ノードへ移動させることを特徴とする装置。 6.請求項1に記載の装置において、前記第1カウントは、前記リクエスタ処理 ノードが置かれている領域内のプロセッサによるキャッシュ・ミスを埋め合わす 目的で、前記アドレスされたメモリ・ページが何回アクセスされたかを示し、前 記第2カウントは、前記ローカル処理ノードが置かれている領域内のプロセッサ によるキャッシュ・ミスを埋め合わす目的で、該アドレスされたメモリ・ページ が何回アクセスされたかを示していることを特徴とする装置。 7.ローカル処理ノードに置かれたページ移動コントローラであって、該ローカ ル処理ノードはメインメモリのローカル部分を具え、該ローカル処理ノードは1 つまたは2つ以上の追加処理ノードを具え、コンピュータ・システムに置かれて おり、各追加処理ノードはメインメモリのリモート部分を具え、前記ローカル処 理ノードは前記コンピュータ・システムの各領域のカウントを、メインメモリの 前記ローカル部分に置かれている各メモリ・ページごとにストアしておく記憶機 構も具えており、各領域は前記コンピュータ・システムの1つまたは2つ以上の 処理ノードを収容しており、前記ページ移動コントローラはメモリ・アクセス要 求によってアドレスされたメモリ・ページをメインメモリの前記ローカル部分か らリクエスタ処理ノードへ移動しておくべきかどうかを決定し、前記メモリ・ア クセス要求は前記リクエスタ処理ノードから出されたものであって、前記ページ 移動コントローラは、 前記記憶機構にアクセスして、前記アドレスされたメモリ・ページと該リクエ スタ処理ノードに関連づけられた第1カウントと、該アドレスされたメモリ・ペ ージと前記ローカル処理ノードに関連づけられた第2カウントを取得する手段と 、 前記第1カウントをインクリメントするインクリメンタと、 前記インクリメントされた第1カウントを該記憶機構にストアする手段と、 前記第2カウントと該インクリメントされた第1カウントとの差が移動しきい 値より大であるとき移動信号を発行する移動信号発行手段と を具えていることを特徴とするページ移動コントローラ。 8.請求項7に記載のページ移動コントローラにおいて、前記移動信号発行手段 は、 前記第2カウントを前記インクリメントされた第1カウントから減算して該第 2カウントと該インクリメントされた第1カウントとの差を得るための減算器 と、 前記差が前記移動しきい値より大であるかどうかを判定するコンパレータと、 前記差が前記移動しきい値より大であれば前記移動信号を発行するコントロー ラとを具えていることを特徴とするページ移動コントローラ。 9.請求項8に記載のページ移動コントローラにおいて、前記ページ移動コント ローラは、 前記コンピュータ・システムの各領域ごとに移動しきい値を格納しておく移動 しきい値レジスタと、 前記リクエスタ処理ノードが置かれている該コンピュータ・システムの領域に 関連づけられた移動しきい値を前記移動しきい値レジスタから取り出す手段と、 前記取り出した移動しきい値を前記コンパレータへ渡す手段と をさらに具えていることを特徴とするページ移動コントローラ。 10.請求項7に記載のページ移動コントローラにおいて、前記コンピュータ・ システムは、前記移動信号を受けたときにそれに応答して、前記アドレスされた メモリ・ページを前記ローカル処理ノードから前記リクエスタ処理ノードへ移動 する手段を含んでいることを特徴とするページ移動コントローラ。 11.請求項8に記載のページ移動コントローラにおいて、前記コントローラは 、前記差が前記移動しきい値より大であるとき前記アドレスされたメモリ・ペー ジを前記ローカル処理ノードから前記リクエスタ処理ノードへ移動させることを 特徴とするページ移動コントローラ。 12.請求項7に記載のページ移動コントローラにおいて、前記第1カウントは 、前記リクエスタ処理ノードが置かれている領域内のプロセッサによるキャッシ ュ・ミスを埋め合わす目的で、前記アドレスされたメモリ・ページが何回アク セスされたかを示し、前記第2カウントは、前記ローカル処理ノードが置かれて いる領域内のプロセッサによるキャッシュ・ミスを埋め合わす目的で、該アドレ スされたメモリ・ページが何回アクセスされたかを示していることを特徴とする ページ移動コントローラ。 13.複数の処理ノードを具えたメモリ・コンピュータ・システムであって、各 処理ノードは、 複数のメモリ・ページを有するメインメモリのローカル部分と、 前記コンピュータ・システムの各領域のカウントを、メインメモリの前記ロー カル部分に置かれている各メモリ・ページごとにストアしておく記憶機構であっ て、各領域は前記コンピュータ・システムの1つまたは2つ以上の処理ノードを 収容している記憶機構と、 メモリ・アクセス要求によってアドレスされたメモリ・ページをメインメモリ の該ローカル部分からリクエスタ処理ノードへ移動しておくべきかどうかを決定 するページ移動コントローラであって、前記メモリ・アクセス要求は前記リクエ スタ処理ノードから出されたものであるページ移動コントローラとを具え、 該ページ移動コントローラは、 前記記憶機構にアクセスして、前記アドレスされたメモリ・ページと該リ クエスタ処理ノードに関連づけられた第1カウントと、該アドレスされたメモリ ・ページと前記ローカル処理ノードに関連づけられた第2カウントを取得する手 段と、 前記第1カウントをインクリメントするインクリメンタと、 前記インクリメントされた第1カウントを前記記憶機構にストアする手段 と、 前記第2カウントと該インクリメントされた第1カウントとの差が移動し きい値より大であるとき移動信号を発行する移動信号発行手段と を具えていることを特徴とするメモリ・コンピュータ・システム。 14.請求項13に記載のメモリ・コンピュータ・システムにおいて、前記移動 信号発行手段は、 前記第2カウントを前記インクリメントされた第1カウントから減算して該第 2カウントと該インクリメントされた第1カウントとの差を得るための減算器と 、 前記差が前記移動しきい値より大であるかどうかを判定するコンパレータと、 前記差が前記移動しきい値より大であれば前記移動信号を発行するコントロー ラとを具えていることを特徴とするメモリ・コンピュータ・システム。 15.請求項14に記載のメモリ・コンピュータ・システムにおいて、前記ペー ジ移動コントローラは、 前記コンピュータ・システムの各領域ごとに移動しきい値を格納しておく移動 しきい値レジスタと、 前記リクエスタ処理ノードが置かれている該コンピュータ・システムの領域に 関連づけられた移動しきい値を前記移動しきい値レジスタから取り出す手段と、 前記取り出した移動しきい値を前記コンパレータヘ渡す手段と をさらに具えていることを特徴とするメモリ・コンピュータ・システム。 16.請求項13に記載のメモリ・コンピュータ・システムにおいて、前記コン ピュータ・システムは、前記移動信号を受けたときにそれに応答して、前記アド レスされたメモリ・ページを前記ローカル処理ノードから前記リクエスタ処理ノ ードへ移動する手段を含んでいることを特徴とするメモリ・コンピュータ・シス テム。 17.請求項14に記載のメモリ・コンピュータ・システムにおいて、前記コン トローラは、前記差が前記移動しきい値より大であるとき前記アドレスされたメ モリ・ページを前記ローカル処理ノードから前記リクエスタ処理ノードへ移動さ せることを特徴とするメモリ・コンピュータ・システム。 18.請求項13に記載のメモリ・コンピュータ・システムにおいて、前記第1 カウントは、前記リクエスタ処理ノードが置かれている領域内のプロセッサによ るキャッシュ・ミスを埋め合わす目的で、前記アドレスされたメモリ・ページが 何回アクセスされたかを示し、前記第2カウントは、前記ローカル処理ノードが 置かれている領域内のプロセッサによるキャッシュ・ミスを埋め合わす目的で、 該アドレスされたメモリ・ページが何回アクセスされたかを示していることを特 徴とするメモリ・コンピュータ・システム。 19.メモリ・アクセス要求によってアドレスされたメモリ・ページを、該メモ リ・ページがストアされているローカル処理ノードから前記メモリ・アクセス要 求が出されたリクエスタ処理ノードへ移動しておくべきかどうかを決定するペー ジ移動コントローラであって、 前記アドレスされたメモリ・ページと該リクエスタ処理ノードに関連づけられ た第1カウントと、該アドレスされたメモリ・ページと前記ローカル処理ノード に関連づけられた第2カウントを取得する手段と、 前記第1カウントをインクリメントするインクリメンタと、 前記第2カウントと該インクリメントされた第1カウントとの差が移動しきい 値より大であるとき移動信号を発行する移動信号発行手段と を具えていることを特徴とするページ移動コントローラ。 20.請求項19に記載のページ移動コントローラにおいて、前記移動信号発行 手段は、 前記第2カウントを前記インクリメントされた第1カウントから減算して該第 2カウントと該インクリメントされた第1カウントとの差を得るための減算器と 、 前記差が前記移動しきい値より大であるかどうかを判定するコンパレータと、 前記差が前記移動しきい値より大であれば前記移動信号を発行するコントロー ラとを具えていることを特徴とするページ移動コントローラ。 21.請求項20に記載のページ移動コントローラにおいて、前記コントローラ は、前記差が前記移動しきい値より大であるとき前記アドレスされたメモリ・ペ ージを前記ローカル処理ノードから前記リクエスタ処理ノードへ移動させること を特徴とするページ移動コントローラ。 22.請求項19に記載のページ移動コントローラにおいて、前記第1カウント は、前記リクエスタ処理ノードが置かれている領域内のプロセッサによるキャッ シュ・ミスを埋め合わす目的で、前記アドレスされたメモリ・ページが何回アク セスされたかを示し、前記第2カウントは、前記ローカル処理ノードが置かれて いる領域内のプロセッサによるキャッシュ・ミスを埋め合わす目的で、該アドレ スされたメモリ・ページが何回アクセスされたかを示していることを特徴とする ページ移動コントローラ。 23.メモリ・アクセス要求によってアドレスされたメモリ・ページを、該メモ リ・ページがストアされているローカル処理ノードから前記メモリ・アクセス要 求が出されたリクエスタ処理ノードを移動しておくべきかどうかを決定する方法 であって、 前記アドレスされたメモリ・ページと前記リクエスタ処理ノードに関連づけら れた第1カウントと、該アドレスされたメモリ・ページと前記ローカル処理ノー ドに関連づけられた第2カウントとを取得するステップと、 前記第1カウントをインクリメントするステップと、 前記第2カウントと前記インクリメントされた第1カウントとの差が移動しき い値より大であれば、移動信号を出すステップと を具えたことを特徴とする方法。 24.請求項23に記載の方法において、 前記移動信号を受けたときにそれに応答して、前記アドレスされたメモリ・ペ ージを前記ローカル処理ノードから前記リクエスタ処理ノードへ移動させるステ ップをさらに具えたことを特徴とする方法。 25.請求項23に記載の方法において、 前記差が前記移動しきい値より大であれば、前記アドレスされたメモリ・ペー ジを前記ローカル処理ノードから前記リクエスタ処理ノードへ移動させるステッ プをさらに具えたことを特徴とする方法。 26.請求項23に記載の方法において、前記第1カウントは、前記リクエスタ 処理ノードが置かれている領域内のプロセッサによるキャッシュ・ミスを埋め合 わす目的で、前記アドレスされたメモリ・ページが何回アクセスされたかを示し 、前記第2カウントは、前記ローカル処理ノードが置かれている領域内のプロセ ッサによるキャッシュ・ミスを埋め合わす目的で、該アドレスされたメモリ・ペ ージが何回アクセスされたかを示していることを特徴とする方法。 27.ローカル処理ノードにストアされていて、メモリ・アクセス要求によって アドレスされたメモリ・ページを、前記メモリ・アクセス要求が出されたリクエ スタ処理ノードに複写しておくべきかどうかを決定する方法であって、 前記アドレスされたメモリ・ページと前記リクエスタ処理ノードに関連づけら れたカウントを取得するステップと、 前記カウントをインクリメントするステップと、 前記インクリメントされたカウントが複写しきい値より大であれば複写信号を 出すステップと を具えたことを特徴とする方法。 28.請求項1に記載の装置において、前記インクリメンタは前記第1カウント を統計的にインクリメントすることを特徴とする装置。
JP53356896A 1995-05-05 1996-05-03 不均一メモリ・アクセス(numa)システムにおけるページ移動 Expired - Lifetime JP3889044B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US43546495A 1995-05-05 1995-05-05
US08/435,464 1995-05-05
PCT/US1996/006319 WO1996035169A1 (en) 1995-05-05 1996-05-03 Page migration in a non-uniform memory access (numa) system

Publications (2)

Publication Number Publication Date
JPH10503310A true JPH10503310A (ja) 1998-03-24
JP3889044B2 JP3889044B2 (ja) 2007-03-07

Family

ID=23728522

Family Applications (1)

Application Number Title Priority Date Filing Date
JP53356896A Expired - Lifetime JP3889044B2 (ja) 1995-05-05 1996-05-03 不均一メモリ・アクセス(numa)システムにおけるページ移動

Country Status (4)

Country Link
US (1) US5727150A (ja)
EP (1) EP0769171A1 (ja)
JP (1) JP3889044B2 (ja)
WO (1) WO1996035169A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004054931A (ja) * 2002-07-23 2004-02-19 Hewlett-Packard Development Co Lp 分散メモリマルチプロセッサシステムにおけるメモリ移行のためのシステムおよび方法
JP2006003972A (ja) * 2004-06-15 2006-01-05 Nec Corp プロセス配置装置、プロセス配置方法及びプロセス配置プログラム
JP2013065309A (ja) * 2011-09-16 2013-04-11 Apple Inc 不揮発性メモリシステムのためのウィーブシーケンスカウンタ
JP2013254524A (ja) * 2009-09-18 2013-12-19 Intel Corp ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IN188196B (ja) * 1995-05-15 2002-08-31 Silicon Graphics Inc
US5909540A (en) * 1996-11-22 1999-06-01 Mangosoft Corporation System and method for providing highly available data storage using globally addressable memory
US6148377A (en) * 1996-11-22 2000-11-14 Mangosoft Corporation Shared memory computer networks
US7058696B1 (en) 1996-11-22 2006-06-06 Mangosoft Corporation Internet-based shared file service with native PC client access and semantics
US6647393B1 (en) 1996-11-22 2003-11-11 Mangosoft Corporation Dynamic directory service
US5987506A (en) * 1996-11-22 1999-11-16 Mangosoft Corporation Remote access and geographically distributed computers in a globally addressable storage environment
US5860116A (en) * 1996-12-11 1999-01-12 Ncr Corporation Memory page location control for multiple memory-multiple processor system
FR2764097B1 (fr) * 1997-06-02 1999-07-02 Bull Sa Detection de points chauds dans une machine avec memoire a acces non uniforme
US6026472A (en) * 1997-06-24 2000-02-15 Intel Corporation Method and apparatus for determining memory page access information in a non-uniform memory access computer system
US6073225A (en) * 1997-06-24 2000-06-06 Intel Corporation Method and apparatus for monitoring bus transactions based on cycle type and memory address range
US6785888B1 (en) * 1997-08-29 2004-08-31 International Business Machines Corporation Memory allocator for a multiprocessor computer system
US6167437A (en) * 1997-09-02 2000-12-26 Silicon Graphics, Inc. Method, system, and computer program product for page replication in a non-uniform memory access system
US6289424B1 (en) 1997-09-19 2001-09-11 Silicon Graphics, Inc. Method, system and computer program product for managing memory in a non-uniform memory access system
US6249802B1 (en) 1997-09-19 2001-06-19 Silicon Graphics, Inc. Method, system, and computer program product for allocating physical memory in a distributed shared memory network
US6047316A (en) * 1997-12-12 2000-04-04 Intel Corporation Multiprocessor computing apparatus having spin lock fairness
US6035378A (en) * 1997-12-16 2000-03-07 Ncr Corporation Method and apparatus for dynamically monitoring memory page access frequency in a non-uniform memory access computer system
US6035377A (en) * 1997-12-17 2000-03-07 Ncr Corporation Method and apparatus for determining memory pages having greatest frequency of access in a non-uniform memory access computer system
US6298419B1 (en) * 1998-03-26 2001-10-02 Compaq Computer Corporation Protocol for software distributed shared memory with memory scaling
US6334177B1 (en) 1998-12-18 2001-12-25 International Business Machines Corporation Method and system for supporting software partitions and dynamic reconfiguration within a non-uniform memory access system
US6347362B1 (en) * 1998-12-29 2002-02-12 Intel Corporation Flexible event monitoring counters in multi-node processor systems and process of operating the same
US6839739B2 (en) * 1999-02-09 2005-01-04 Hewlett-Packard Development Company, L.P. Computer architecture with caching of history counters for dynamic page placement
US8191097B1 (en) 1999-04-01 2012-05-29 Comcast Ip Holdings I, Llc Method and apparatus for hierarchical distribution of video content for an interactive information distribution system
US6330647B1 (en) * 1999-08-31 2001-12-11 Micron Technology, Inc. Memory bandwidth allocation based on access count priority scheme
US6615375B1 (en) 2000-02-03 2003-09-02 International Business Machines Corporation Method and apparatus for tolerating unrecoverable errors in a multi-processor data processing system
US6766360B1 (en) * 2000-07-14 2004-07-20 Fujitsu Limited Caching mechanism for remote read-only data in a cache coherent non-uniform memory access (CCNUMA) architecture
JP4730572B2 (ja) * 2000-08-21 2011-07-20 株式会社アルバック プラズマ成膜装置及びそのクリーニング方法
US7380001B2 (en) * 2001-05-17 2008-05-27 Fujitsu Limited Fault containment and error handling in a partitioned system with shared resources
US6754776B2 (en) 2001-05-17 2004-06-22 Fujitsu Limited Method and system for logical partitioning of cache memory structures in a partitoned computer system
US6961761B2 (en) * 2001-05-17 2005-11-01 Fujitsu Limited System and method for partitioning a computer system into domains
US6754782B2 (en) * 2001-06-21 2004-06-22 International Business Machines Corporation Decentralized global coherency management in a multi-node computer system
US6654857B2 (en) * 2001-06-21 2003-11-25 International Business Machines Corporation Non-uniform memory access (NUMA) computer system having distributed global coherency management
US6901485B2 (en) 2001-06-21 2005-05-31 International Business Machines Corporation Memory directory management in a multi-node computer system
US6760817B2 (en) 2001-06-21 2004-07-06 International Business Machines Corporation Method and system for prefetching utilizing memory initiated prefetch write operations
US6721853B2 (en) * 2001-06-29 2004-04-13 International Business Machines Corporation High performance data processing system via cache victimization protocols
US6862634B2 (en) 2001-06-29 2005-03-01 Fujitsu Limited Mechanism to improve performance in a multi-node computer system
US7062610B2 (en) * 2002-09-30 2006-06-13 Advanced Micro Devices, Inc. Method and apparatus for reducing overhead in a data processing system with a cache
US7155572B2 (en) * 2003-01-27 2006-12-26 Advanced Micro Devices, Inc. Method and apparatus for injecting write data into a cache
US7334102B1 (en) 2003-05-09 2008-02-19 Advanced Micro Devices, Inc. Apparatus and method for balanced spinlock support in NUMA systems
US7085897B2 (en) * 2003-05-12 2006-08-01 International Business Machines Corporation Memory management for a symmetric multiprocessor computer system
CN100383763C (zh) * 2004-02-27 2008-04-23 中国人民解放军国防科学技术大学 基于操作系统反向页表的页迁移和复制方法
US8078818B2 (en) * 2004-05-11 2011-12-13 Hewlett-Packard Development Company, L.P. Method and system for migrating memory segments
EP1782244A4 (en) * 2004-07-07 2010-01-20 Emc Corp SYSTEMS AND METHODS FOR IMPLEMENTING DISTRIBUTED CACHED MEMORY COHERENCE
US7287122B2 (en) * 2004-10-07 2007-10-23 International Business Machines Corporation Data replication in multiprocessor NUCA systems to reduce horizontal cache thrashing
US7457922B2 (en) * 2004-11-20 2008-11-25 International Business Machines Corporation Cache line placement prediction for multiprocessor non-uniform cache architecture systems
US20080263279A1 (en) * 2006-12-01 2008-10-23 Srinivasan Ramani Design structure for extending local caches in a multiprocessor system
KR101662829B1 (ko) * 2009-11-19 2016-10-05 삼성전자주식회사 다중 프로세서 및 그것의 캐시 일관성 관리 장치 및 방법
FR2968792B1 (fr) * 2010-12-13 2013-01-11 Bull Sas Procede, programme d'ordinateur et dispositif de gestion d'acces memoire dans une architecture multiprocesseurs de type numa
CN102362464B (zh) * 2011-04-19 2013-01-30 华为技术有限公司 内存访问监测方法和装置
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 楽天株式会社 情報処理装置、情報処理方法、情報処理プログラム及び記録媒体
EP3062229A4 (en) * 2013-12-31 2017-01-25 Huawei Technologies Co., Ltd. Data migration method, device and processor
CN105468538B (zh) * 2014-09-12 2018-11-06 华为技术有限公司 一种内存迁移方法及设备
US9563572B2 (en) 2014-12-10 2017-02-07 International Business Machines Corporation Migrating buffer for direct memory access in a computer system
EP3519970A1 (en) 2016-09-28 2019-08-07 INTEL Corporation Measuring per-node bandwidth within non-uniform memory access (numa) systems
US11113440B1 (en) * 2017-03-17 2021-09-07 Synopsys, Inc. Memory migration in hybrid emulation
US10503658B2 (en) 2017-04-27 2019-12-10 Advanced Micro Devices, Inc. Page migration with varying granularity
US11416395B2 (en) 2018-02-05 2022-08-16 Micron Technology, Inc. Memory virtualization for accessing heterogeneous memory components
US11099789B2 (en) 2018-02-05 2021-08-24 Micron Technology, Inc. Remote direct memory access in multi-tier memory systems
US10782908B2 (en) 2018-02-05 2020-09-22 Micron Technology, Inc. Predictive data orchestration in multi-tier memory systems
US10880401B2 (en) 2018-02-12 2020-12-29 Micron Technology, Inc. Optimization of data access and communication in memory systems
US10877892B2 (en) * 2018-07-11 2020-12-29 Micron Technology, Inc. Predictive paging to accelerate memory access
US10691611B2 (en) 2018-07-13 2020-06-23 Micron Technology, Inc. Isolated performance domains in a memory system
US10852949B2 (en) 2019-04-15 2020-12-01 Micron Technology, Inc. Predictive data pre-fetching in a data storage device
US10789222B2 (en) 2019-06-28 2020-09-29 Alibaba Group Holding Limited Blockchain-based hierarchical data storage
US11036720B2 (en) * 2019-06-28 2021-06-15 Advanced New Technologies Co., Ltd. Blockchain-based hierarchical data storage
US11733902B2 (en) 2021-04-30 2023-08-22 International Business Machines Corporation Integrating and increasing performance of disaggregated memory in operating systems

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5269013A (en) * 1991-03-20 1993-12-07 Digital Equipment Corporation Adaptive memory management method for coupled memory multiprocessor systems
US5313631A (en) * 1991-05-21 1994-05-17 Hewlett-Packard Company Dual threshold system for immediate or delayed scheduled migration of computer data files

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004054931A (ja) * 2002-07-23 2004-02-19 Hewlett-Packard Development Co Lp 分散メモリマルチプロセッサシステムにおけるメモリ移行のためのシステムおよび方法
JP4500014B2 (ja) * 2002-07-23 2010-07-14 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. 分散メモリマルチプロセッサシステムにおけるメモリ移行のためのシステムおよび方法
JP2006003972A (ja) * 2004-06-15 2006-01-05 Nec Corp プロセス配置装置、プロセス配置方法及びプロセス配置プログラム
JP4535784B2 (ja) * 2004-06-15 2010-09-01 日本電気株式会社 プロセス配置装置、プロセス配置方法及びプロセス配置プログラム
JP2013254524A (ja) * 2009-09-18 2013-12-19 Intel Corp ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供
US9003164B2 (en) 2009-09-18 2015-04-07 Intel Corporation Providing hardware support for shared virtual memory between local and remote physical memory
JP2015135696A (ja) * 2009-09-18 2015-07-27 インテル コーポレイション ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供
JP2013065309A (ja) * 2011-09-16 2013-04-11 Apple Inc 不揮発性メモリシステムのためのウィーブシーケンスカウンタ

Also Published As

Publication number Publication date
EP0769171A1 (en) 1997-04-23
US5727150A (en) 1998-03-10
WO1996035169A1 (en) 1996-11-07
JP3889044B2 (ja) 2007-03-07

Similar Documents

Publication Publication Date Title
JPH10503310A (ja) 不均一メモリ・アクセス(numa)システムにおけるページ移動
US5893144A (en) Hybrid NUMA COMA caching system and methods for selecting between the caching modes
EP0780769B1 (en) Hybrid numa coma caching system and methods for selecting between the caching modes
US5537573A (en) Cache system and method for prefetching of data
US6826651B2 (en) State-based allocation and replacement for improved hit ratio in directory caches
US6678799B2 (en) Aggregation of cache-updates in a multi-processor, shared-memory system
US6105113A (en) System and method for maintaining translation look-aside buffer (TLB) consistency
US6167490A (en) Using global memory information to manage memory in a computer network
US6289420B1 (en) System and method for increasing the snoop bandwidth to cache tags in a multiport cache memory subsystem
EP0817078A2 (en) Allocation of cache memory space in a computer system
US6292871B1 (en) Loading accessed data from a prefetch buffer to a least recently used position in a cache
US20040199727A1 (en) Cache allocation
JPH11506852A (ja) 多数のバスマスタと共用レベル2キャッシュとを備える多レベルキャッシュシステムでのキャッシュスヌーピングオーバーヘッドの低減
KR20010101694A (ko) 가상 메모리 시스템에서의 메모리 접근 개선 기술
JPH0797354B2 (ja) 2レベルのキャッシュ・メモリ及びそれを操作するキャッシュ・コヒーレンスの方法
US5802571A (en) Apparatus and method for enforcing data coherency in an information handling system having multiple hierarchical levels of cache memory
US5850534A (en) Method and apparatus for reducing cache snooping overhead in a multilevel cache system
JP4068185B2 (ja) コンピュータ・システムでのメモリ・ストレージ・モードの効果的な選択
US6457107B1 (en) Method and apparatus for reducing false sharing in a distributed computing environment
US6986003B1 (en) Method for processing communal locks
JP3295436B2 (ja) マイクロプロセッサキャッシュの一貫性
US6360302B1 (en) Method and system for dynamically changing page types in unified scalable shared-memory architectures
JP3626609B2 (ja) マルチプロセッサシステム
US6922744B1 (en) Communal lock processing system for multiprocessor computer system
US7143239B2 (en) Cache structure and methodology

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050510

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20050810

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20050926

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051102

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060328

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20060627

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20060628

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060726

A72 Notification of change in name of applicant

Free format text: JAPANESE INTERMEDIATE CODE: A721

Effective date: 20060626

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20060831

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: 20061110

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20061129

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

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

Free format text: PAYMENT UNTIL: 20091208

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20101208

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20101208

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20111208

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20111208

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20121208

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20131208

Year of fee payment: 7

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term