対称型マルチプロセッシング(SMP)詳解
対称型マルチプロセッシング(SMP:Symmetric Multi-Processing)は、複数のプロセッサが物理メモリを共有して動作する並列コンピューティング方式です。各プロセッサは均等に処理を割り当てられ、
オペレーティングシステム(OS)
カーネルによって管理されます。そのため、外部からは単一のプロセッサのように見えるのが特徴です。 これは、非対称型マルチプロセッシング(AMP)とは対照的です。AMPでは、各プロセッサに特定の役割が割り当てられます。
SMPのアーキテクチャ
SMPアーキテクチャでは、全てのプロセッサがメモリや周辺機器に均等にアクセスできます。OS
カーネルは、プロセッサ間の同期や資源管理を担い、効率的な並列処理を実現します。キャッシュ同期機構やロック制御といった高度な技術によって、データの整合性が保たれ、複数のプロセッサが同時にメモリにアクセスしても問題なく動作します。
1つの
CPUが複数の均一コアを持つ
マルチコアCPUや、
インテルの
ハイパースレッディング・テクノロジーのような同時マルチスレッディング(SMT)もSMPに含まれます。これらの技術は、単一
CPU内での並列処理を実現し、SMPのメリットをさらに高めます。
しかし、処理のリソースが競合する場合、逐次処理となるため完全な並列処理は困難です。実際には、
ハードウェア割り込みの割り当てや、起動処理におけるブートプロセッサの役割など、完全な対称性を持たない部分も存在します。
SMPの歴史
SMPの概念は、初期の
UNIXシステムや汎用機において試験的に導入されました。その後、
RISCプロセッサの登場と
UNIX SVR4系での実装研究の進展により、本格的な研究開発が始まりました。
1990年代前半には、
MIPSのR4000シリーズやSPARCシリーズといったマルチプロセッシングを前提としたプロセッサが登場し、SMPは
サーバにおける高速化技術として急速に普及しました。
初期のSMP
サーバでは、
CPUとメモリ間の接続にバス方式が使用されており、性能に限界がありました。そのため、最大構成は8
CPU程度、実効性能も単一
CPUの5倍程度に留まっていました。しかし、クロスバースイッチ技術の導入により、高速なメモリアクセスが可能になり、32、64、128
CPUといった大規模なSMP構成が実現できるようになりました。
この頃から、NUMA(Non-Uniform Memory Access)アーキテクチャを採用したシステムが一般的になりました。NUMAでは、プロセッサとメモリ間のアクセスコストが均一ではないため、性能最適化が課題となります。
現在では、ほとんどの
UNIX系OS(
Linux、商用
UNIXなど)や
Windows NT系OSでSMPが採用されています。パーソナル
コンピュータや
スマートフォン、タブレットでも、
マルチコアCPUが標準となり、SMP環境は広く普及しています。最近では、異なるクロック周波数のコアを持つ異種
CPUトポロジー(big.LITTLEなど)も登場していますが、これはAMPではなくSMPに分類されます。
SMPの耐障害性
SMPシステムの耐障害性は、OSや
サーバの構成によって異なります。上位クラスの
サーバでは、ブート
CPUを固定せずに、正常な
CPUでIPLを実行し、システムの起動を継続できます。一方、PCや簡易なSMP構成では、ブート
CPUが固定されているのが一般的です。
全てのSMP対応OSでは、起動時に
CPU障害が検出された場合、異常な
CPUはシステムから除外され、正常な
CPUのみで動作を継続します。高機能な
サーバでは、OSとファームウェアレベルで
CPUやキャッシュの機能チェックを行い、障害が発生した場合に動的に
CPUを切り離し、システムの稼働を維持します。
しかし、簡易なシステムでは、NMI(マスク不可割り込み)によってシステムが異常停止することがあります。
Linux 2.6
カーネル以降では、NUMAやブート
CPUの移動などを考慮した商用大規模
サーバへの対応が進んでいます。
まとめ
SMPは、複数のプロセッサでメモリを共有する効率的な並列処理方式です。近年では、様々な
コンピュータシステムに広く採用され、性能向上に大きく貢献しています。しかし、資源競合やNUMAアーキテクチャによる性能制約など、課題も存在します。今後の技術開発によって、より高度なSMPシステムが実現されることが期待されます。