対称型マルチプロセッシング (SMP) は、現代のコンピュータ システムで広く使用されているアーキテクチャですが、その歴史についてはほとんど議論されていません。このアーキテクチャの基本的な考え方は、複数の同一プロセッサが単一の共有メインメモリに接続され、単一のオペレーティング システムによって管理されるというものです。この連携機能により、各プロセッサが異なるタスクを並行して処理できるようになり、システム全体のパフォーマンスが大幅に向上します。この記事では、SMP の歴史を振り返り、その起源と進化を探ります。
SMP システムは通常、中央のメイン メモリを共有し、単一のオペレーティング システムで実行される複数の類似プロセッサで構成されます。各プロセッサには専用のキャッシュ メモリが搭載されており、メイン メモリへのアクセスを高速化し、システム バス トラフィックを削減します。初期の SMP システムでは、テクノロジは帯域幅と消費電力によって制限されることが多く、設計にボトルネックの問題がありました。それ以来、グリッド アーキテクチャの導入によりスケーラビリティの問題は改善されましたが、プログラミングの複雑さを克服する必要はあります。
「SMP システムでは、タスクがシステム内の他のプロセッサによって実行されていない限り、タスクのデータの場所に関係なく、任意のプロセッサが任意のタスクを実行できます。」
初期のマルチプロセッサ システムの中で、1961 年に発売された Burroughs B5000 は、まだ動作が非対称であったにもかかわらず、最初の量産システムとなりました。 1962 年に Burroughs D825 が導入されて、SMP の概念が徐々に形作られました。 IBM の System/360 シリーズのコンピュータもデュアルプロセッサ コンピューティング システムを導入し、SMP アーキテクチャの適用を実現しました。大手企業がこの分野に参入するにつれ、SMP システムは徐々に進化し、主流になりました。
SMP は、アプリケーションを変更することなく複数のプロセスを並行して実行できるタイムシェアリング システムやサーバー システムで広く使用されています。パーソナル コンピュータでは、多くのアプリケーションがまだマルチスレッド用に修正されていないため、SMP の有用性は低下します。 SMP を活用するには、マルチスレッド プログラミングが重要な考慮事項になります。
現在の SMP システム設計では、複数のプロセッサを密に結合することができますが、これによりスケーラビリティとパフォーマンスの面で課題も生じます。マルチプロセッサ システムはスループットを向上できますが、パフォーマンス最適化のギャップを埋めるには、ハードウェアの使用を最大限に活用するために、慎重に設計されたオペレーティング システムと効率的なソフトウェア サポートが必要になります。
「SMP 環境では、複数のプログラムが同時に実行されると、システム パフォーマンスは単一プロセッサ システムよりも大幅に向上します。」
SMP を使用するシステムでは、最大のパフォーマンスを得るために、ユニプロセッサを使用するシステムとは異なるプログラミング手法が必要です。 SMP システムでは、複数のプロセッサを使用して同時にプログラムを実行できるためです。これにより、マルチタスク機能が向上するだけでなく、プログラム操作のスムーズさも向上します。プログラムが改善されるにつれて、作業負荷のバランスをより適切にとることができるようになります。
コンピューティングの需要が増加するにつれて、NUMA (Non-Uniform Memory Access) などの新しいアーキテクチャが登場し、プロセッサがローカル メモリに迅速にアクセスし、共有メモリへの依存を減らすことができるようになりました。 NUMA は環境によってはより効率的なデータ アクセスを提供する可能性がありますが、ワークロードのバランスをとる際に、あるプロセッサから別のプロセッサにデータを移動するコストは比較的高くなります。
初期のモジュラー式コンピュータ システムから効率性を追求する最新のマルチプロセッサ アーキテクチャに至るまで、SMP の進化は間違いなく技術進歩の重要な部分です。テクノロジーが進歩し続ける中で、将来どのような新しいテクノロジーがマルチプロセッサコラボレーションへの理解に挑戦し、それを向上させるのでしょうか?