対称型マルチプロセッシング

対称型マルチプロセッシング(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システムが実現されることが期待されます。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。