現在のコンピュータシステムは、並列処理を基本として、そのシステムが構築されています。一般には並列処理とは、コンピュータで複数の処理を同時に進行させる事により、処理の高速化とその処理効率の向上をはかるために利用されています。コンピュータシステムには、非常に多くの機能が実装されており、ミクロの
レベルからマクロのレベルまで、ユーザが利用可能な資源は、複数のコンポーネントから構成され多重化されています。それらを可能な限り同時に利用することで、高速化とより大規模な処理が可能となります。
このコンピュータの並列処理については、ユーザが全く意識することなく、ユーザが求める処理を分散・協調させた処理もコンピュータでは行われています。現在のコンピューター・プラットフォームの頭脳となるプロセッサーは、トランジスタ数が "ムーアの法則" に従い指数関数的に増加することで性能向上が図られ、命令レベルの並列性(ILP: Instruction Level Parallelism) を高めるためのさまざまな高速化技術
(Out-of-Order実行や命令の投機的実行、SIMD命令)などが開発され利用されています。これらの命令レベルの並列性の利用は、マイクロプロセッサ自身が制御したり、また、コンパイラがその並列性を最大限に活用するための最適化を行うことで、ユーザがあまり意識することなくユーザのコードの高速実行に寄与しています。
また、デュアルコアとマルチコアのプロセッサ上では同時に複数のプロセスの実行が可能であり、オペレーティングシステムは、カーネルの実行、ドライバ、ライブラリ、アプリケーションのすべての処理プロセスを最適にスケジュールすることで、大幅な処理性能の向上を図ることを可能とします。更に、アプリケーションを再コンパイルしたり、新しいライブラリをリンクしたりすることで、その性能を大幅に向上させることが可能となります。アプリケーションの実行時に複数のスレッドを生成して、今まで逐次的に実行されていた処理を各スレッドが同時・並列に実行し、より短時間で処理を終了することが可能となるためです。
|