2010年9月13日月曜日

マルチスレッドによるマルチコア

前回ではプログラマが並列処理をコントロールする事により、大きな処理性能の向上が図れる事を説明しましたが、マルチコアCPUを利用する時にも同様の事が言えます。

マルチコアCPUとは、CPUの機能を一つのチップ上に複数持っているCPUの事です。
マルチコアCPUは搭載されているコアの分だけ並列にプログラムを実行させる事が可能で、搭載されているコアを休み無く動作させる事により性能の向上が可能です。

現在は組み込み機器にもLinuxを初めとしたマルチスレッドに対応したOSが採用されており、マルチスレッドの機能を利用する事により、マルチコアCPUの性能を引き出す事が可能です。

2010年9月5日日曜日

よりコントロールされた並列処理のSIMD

今までの説明の中で、プログラマが意識しない場所で、並列化による高速化が行われてきた事を、説明しましたが、プログラマが書いたソースコードが並列化に向かない書かれ方がされている状況では、CPUが勝手に高速化するのにも限界があります。

その中でプログラマがコントロール可能な並列処理として登場したのが、SIMD(Single Instruction Multiple Data)です。

アウトオブオーダとスケジューリング

前回パイプラインの細分化が命令実行時のペナルティーを高める話しをしましたが、CPUの設計及びCPUの命令を作成するコンパイラが何も対策をしていない訳では在りません。

パイプラインに投入される命令に依存関係があった場合は、命令の実行を一時的に内部に留めて置き、後に投入される命令の実行に依存関係の無い命令を先に実行する仕組みがCPUに搭載されています。これをアウトオブオーダー実行といいます。

2010年9月4日土曜日

今までもCPUの処理速度向上の戦いは並列化との戦いだった

昔はSIMDマルチコアも無かったじゃないかと思う人も多いと思いますが、互換性が重視されるPCのCPUに限っても並列化の技術を駆使して高速化を行ってきました。

ゲームエンジンの性能向上を考える為にCPUの処理速度向上と並列化について考えます。