対称型マルチプロセッシング
対称型マルチプロセッシング(たいしょうがたマルチプロセッシング、Symmetric Multiprocessing、SMP)とは、物理メモリを共有して管理する「メモリ共有型並列コンピューティング(マルチプロセッシング)方式」のこと。
アーキテクチャ
対称型マルチプロセッシングとは、特定のCPUに非対称的に割り付けられた処理に依存する事無く、全てのCPUに対して対称的、均一的に処理が割り付けられた複数プロセッサによる並列処理方式のことを言う。1つのCPUが複数の均一コアを持つ場合やインテルのハイパースレッディング・テクノロジーなどもSMPに含まれる。
OSカーネルとCPUキャッシュ同期機構により仮想化されたシステムメモリ、および各種資源を細かく管理するロック制御方式を持ち、ソフトウェア/ハードウェアレベルの割り込み処理を均一的にCPUに割付け、その処理単位に必要な資源をロックして処理を行う。そのため、サーバの外から見るとあたかもひとつのCPUにて動作するサーバのように見える。
ただしコンピュータが行う処理のリソースが競合するような場合は逐次処理(SMPから見て非対称)とならざるをえず並列最適化は難しい。実際、多くのSMP構成サーバにおいて、ハードウェア割り込みを特定のCPUに割り付けたり、起動処理では特定のマスタブートCPUによりIPL(初期プログラムローダ)がOSカーネルをメモリ上に展開した後、スレーブCPUが組み込まれる形をとるなど、完全な対称形とはならない。
歴史
当初、UNIXのSystem7やUNIVAC・IBMなどの汎用機にて試験的に構築/導入されたSMPだったが、汎用プロセッサの登場後、本格的な研究/開発が行われてきた。特に学術的な研究にUNIXが使用された事もあり、UNIXのSVR4系などでの実装研究が進んでいた。
1990年代前半からMIPSのR4000シリーズ、SPARCシリーズといったマルチプロセッシングを前提としたRISCプロセッサが登場し、マルチプロセッサ処理を前提としたUNIX SVR4.2MPの国産UNIX(UX/4800,UXP/DSなど)および、SUNのSolarisなどでの採用が急速に進み、サーバにおける処理高速化手法の主流として汎用化していた。
しかし、安価な量産系サーバにおいては、CPU/メモリ間の接続はバス方式が主体であり、速度もそれほど速いものではなかったため、SMPの最大構成は8CPU、実効性能で単一CPUの5倍程度に留まり続けた。
1980年代後半に高価な特殊サーバにて使用されていたCPU間/メモリ間にクロスバースイッチが量産サーバにも採用され、ギガビット単位での情報速度を確保できるようになって以降、32/64/128CPUといった大規模SMP構成がとれるようになっている。[1]
この頃のSMPのバスアーキテクチャは、NUMA(Non-Uniform Memory Access)と言う、複数プロセッサが共有するメインメモリへのアクセスコストが、メモリ領域とプロセッサに依存して均一でないアーキテクチャを採用したシステムが一般的となっている。
2006年現在、ほぼ全てのUNIX系OS(商用UNIX、Linuxなど)および、Windows NT系OSでSMPは採用されている。また、2013年現在、ほぼ全てのパソコン・スマートフォンが複数コアやハイパースレッディング・テクノロジーをCPUに採用しておりSMPになっている。
耐障害性など
商用UNIX向けの上位クラスのサーバや基幹系Windowsサーバの一部においては、ブートCPUを固定化せず、正常に動作するCPUの何れか(故障CPUが無い場合は固定的)によりIPLが実行され、ブート処理を行う。パソコンや簡易なSMP構成の場合、ブートCPUが固定されているのが普通である。
全てのSMP対応OS/サーバにおいては、起動時にCPU障害が見つかった場合には、異常CPUはシステムに組み込まれず、正常なCPUのみで動作する事になる。 一方、商用UNIXで高機能基幹系サーバを使用する場合、OSとファームウェアレベルにてCPUやキャッシュの機能チェックが稼動時に定常的に行われ、特定レベル以上のCPU障害の場合に動的にCPUを切り離し、業務を継続する。 それ以外のサーバにおいては、NMI(ノンマスカブルインタラプト)にてPanic(UNIX)するか、有名なブルー画面に移行(Windows)し、システムが異常停止してしまう。
Linuxにおいても、2.6カーネル以降、NUMA/ブートCPUの移動などを組み込んだ商用大規模サーバで使用する事が可能であり、富士通のPrimeQuestや日本電気のNX7700i、IBMのPシリーズなどが提供されている。
脚注
- ↑ 最初のクロスバー型CPUはInmos(現在のTomson Semicondactor)のTransputerシリーズ