SIMD

SIMDの最新ニュースをまとめて検索!

SIMDの概念図
PU = Processing Unit

SIMD (Single Instruction Multiple Data シムド[1]) とは、演算装置において1回の命令で複数データに対する処理を同時に行うもの。演算装置設計手法の1つ。

例えば、通常32ビットのデータを受け付けるプロセッサなら128ビットのデータを4回のクロックで計算するが、128ビットのデータを受け付けるプロセッサは、1回のクロックで処理が済む。ただ多くの場合、128ビットを使い切るデータはあまりなく、一般に128ビットを2分割し64ビットとして使うか、4分割して32ビットとして使うが、結局それぞれ1回のクロックで2倍、4倍のデータ処理が可能になり、結果として相対的に低いクロックでも高い性能を引き出しやすい。

例えば音声データの音量を倍にしたいとする。 デジタルデータではある瞬間の音量が数値とされて記録されているので、全ての値を倍にすればよい。 このように大量のデータに似たような処理を施すときに性能を発揮するため、一般にはマルチメディアの処理に向いているとされる。

大量のデータを処理するスーパーコンピュータではよく見られた手法だが、他の技術と同じく1990年代後半からパーソナルコンピュータゲーム機等にも応用された。

全ての処理をこれで行えないこともないが、例えば画像にぼかし処理を100回かける等の場合、単純に0から99まで数え上げる手法を用いることがある。このような場合では、単純に変数を1つ用意して0に1を99になるまで足し続けるが、これがはみ出さないように格納するためには1バイト(8ビット:0~255の数値を表現可能)で十分なので、128ビットの処理幅を持つプロセッサでは無駄が大量に発生するため、通常はSIMDユニットは使わず、通常のALU (Arithmetic Logic Unit : 演算論理装置) を使うことが多い。(こういったプロセッサに合わせた最適化はコンパイラが行ってくれることも多い)

目次

[編集] 主な搭載プロセッサ

[編集] CPU用途のプロセッサ

CPUにおいては、ALUの補助として用いられることが多いが、CellのSPEのようにALU自体がSIMDのものもある。

[編集] GPU用途のプロセッサ

GPUは多くの場合ピクセルパイプラインがSIMDであることが多いようである。

[編集] 物理演算のプロセッサ

3Dゲームに必要な物理演算を高速化する為、SIMDを利用。

[編集] 汎用アクセラレータ

PCI Express接続の汎用SIMDアクセラレータ。倍精度浮動小数点行列演算を高速に行う目的で、ワークステーションHPCなどに搭載される。

[編集] 脚注

  1. ^ 英語では「シムディー」のように読まれる

[編集] 関連項目

最終更新 2009年9月18日 (金) 09:08 (日時は個人設定で未設定ならばUTC)。
【SIMD】変更履歴

ご利用上の注意

もっと調べる!