NUMA とは何か?

NUMA(Non-Uniform Memory Access、ヌマ/ヌーマ、直訳すると不均一メモリアクセス)に付いてです。一般的な事は左記リンク先のWikiを参照下さい。

メモコン ( メモリーコントローラ ) がCPUに内蔵・統合されていると、CPUを複数搭載した場合に物理メモリがCPU下に点在する為、アクセス方法が不均衡かつ複雑になります。

デュアルソケット(例外的にSocket G34ではシングルソケット)の場合
NUMA-Z.png
※CPUチップと書きましたのはCPUダイの意です。チップの方がより多くの人に理解されやすいかも?と思いチップと書きました


Socket G34 のデュアルソケット
NUMA-ZG34-2SKT2.png
斜め線は通常の16BitHyperTransportの半分の8Bitリンクです。
上側にデバイスが付く可能性もあります。


ブログ趣旨とは異なりますが・・・
Socket G34の4ソケットマザーの例
NUMA-ZG34-4.png
斜め線は通常の16BitHyperTransportの半分の8Bitリンクです。
斜め線がいびつなのは、全てのCPUに対して2パス以内な事を表現したらこうなってしまいました。色分けしてもよかったのですがカラフルに成り過ぎるかなと思い・・・


 冒頭のデュアルソケットの図で言うと、例えばCPU1で処理中のスレッドがCPU2に接続されたメモリをアクセスしようとした場合、インターコネクトを挟む分だけアクセスレイテンシが発生します(実際にはキャッシュなどが複雑に絡んでいますが)。
 加えて、双方のCPUが多コアに成りますと、交差するアクセスが必然的に増え、インターコネクトの帯域を圧迫し、ボトルネックにも成り得ます。
 メモリのみならずグラフィックボードやRAIDやNIC等のI/Oデバイスへのアクセスも同様にインターコネクト経由に成りますので、益々インターコネクトの帯域を圧迫しやすい状況に成ります。
 ソケット数が増えると3番目の図の様に問題は更に複雑に成ってゆき、キャッシュコヒーレンシを維持するだけで帯域が飽和しかねません。

 そこでOSのスケジューラや、高度にチューニングされたアプリケーションでは出来るだけ近い位置に有るメモリやデバイスを扱う様にスレッドとCPUコアの対応を決めてゆく事に成ります。

 この判断に利用されるのが先日の記事で登場したACPI 2.0aのSRAT:Static Resource Affinity TableやACPI 3.0のSLIT:System Locality Distance Information TableやACPI 4.0のMSCT:Maximum System Characteristics Tableに成ります。但しWindowsの場合はSLITを無視して独自に実測した値を使ってアクセスコストを算出しているとマイクロソフトのサポートより伺っています。

 つまり、冒頭で図示しました様な配置図をOSに伝えて適切に処理する為の情報がSRAT(ACPI 2.0a以降)やSLIT(ACPI 3.0以降)やMSCT(ACPI 4.0以降)に入っているのが正常なBIOSです。そしてSRAT(ACPI 2.0a)はAPICテーブルともリンクしていましてデバイス情報とリンクしています。


Node Interleaving:
NUMAの応用技術としてNode Interleavingが有ります。

NUMA-NodeInterleaving.png

Node InterleavingはNUMAの各Nodeに接続されたメモリに対してRAID-0の様に同時・並行・交互にアクセスしてメモリアクセスを高速化する技術ですが、両刃の刃的な逆効果もありFSB同様のボトルネックや衝突が発生し易く成り、かえって遅くなるケースも有ります。

具体的には、NUMA向けに最適化されていないプログラムを高速に実行する事が出来ますが、NUMA向けに最適化されたプログラムや、古いシングルスレッドのプログラムを多数同時に実行する様な場合は逆効果となる事が多いと思われます。
従いまして、どちらが良い悪いではなく、目的と用途に合わせて設定を変更する為の予備知識として知っておいた方が良いと思います。詳しくは前回の記事に書いています
関連記事
スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

DualSocketTheWorld

Author:DualSocketTheWorld
自作を始めて20台目くらいになりますが、最初からデュアルソケット限定(始めた当時はデュアルスロット)で自作しており、近年になってAMD K6を試したくなりSocket7でK6-2+のシングル構成で組んだのがシングル初です。

シングルマザー(含:シングルソケットマルチコア)や4ソケット以上の自作は基本的にしませんし、メーカー製PCの改造も基本的にはしません(ノートPCのSSD化くらいはしますが・・・)

基本路線はワークステーションと呼ばれる分野での自作で、OSもWindows系であればProfesionalが主な対象に成ります。

ゲーマーの様なOverClockは行わず、WS路線としてハイエンドCPUとハイエンドGPUの組み合わせで定格或いはDownClockで発熱を抑えつつ、その時のアーキテクチャに置いて爆速かつ静音を目指し、30年以上の長期に渡り稼動状態をキープする事を目指します。

※基本的にリンクフリーです。どこでも自由にどうぞ。

※画像は時々変ります。

※お決まりの文章ですが、改造は個人の責任で行ってください。ここに記載された情報は間違いを含んでいる可能性が有り、それを元に製作や改造などをして失敗しても筆者は一切責任持てませんので悪しからず。

筆者略歴:
小学生時代にゴミ捨て場で拾ったジャンクテレビ数台を分解して部品を取り出し真空管アンプを自作、中学生時代にPC8801mkⅡsrでZ80アセンブラを始める。社会人になって初のプログラムは弾道計算、後に医療系・金融系プログラマ~SEを経て100~200人規模プロジェクトのジェネラルマネジャを数年経験、独立して起業。現在は不動産所得で半引退生活。
(人物特定を避ける目的で一部経歴を変更しています)

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
アクセスカウンター
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR