SIMD

Article on other languages:

del.icio.us del.icio.us
Digg Digg
Furl Furl
Reddit Reddit
Rojo Rojo
Add to OnlyWire
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. ^ 英語では「シムディー」のように読まれる

関連項目

This article is from Wikipedia. All text is available under the terms of the GNU Free Documentation License.


Giant Panda

Mercedes Car
James Bond Guide
This site monitored by SitePinger.net