現在のほとんどのCPUには、「SIMD演算」(Single Instruction Multiple Data)機能があり、複数のデータに対して同時に演算できる。SIMDでは、3次元の座標(X、Y、Z)を同時に演算したり、同じ演算を繰り返すことが多いメディア処理などに利用されている。
今回はWindows 8で導入される、新しいSIMD演算の使い方について解説しよう。
CPUによるSIMDの違いを
「DirectXMath」で吸収
WindowsでのSIMD演算のサポートには、大きく2段階ある。ひとつはOSがCPUを判別して、SIMD用レジスタの管理や命令の違いなどを把握する最低限の対応だ。もうひとつは、Windowsが提供するAPIやライブラリ内部で、SIMD演算を使う方法である。改良されたCPUアーキテクチャーが登場すると、大抵の場合SIMD演算機構が強化されるものだが、その違いをOSが利用するためには、カーネルでCPUを識別して、レジスタ数やレジスタサイズに合わせる調整する必要がある。
これまで基本的には、マイクロソフトのSIMD対応は前者に限られることが多かった。というのも、SIMD演算の活用はアプリケーションの課題であって、OS自体には重要ではないと考えていた「フシ」があった。しかし後述するように、現在ではWindows 8自体が画像や動画などのメディアデータのエンコード、デコードを、APIとしてサポートしているし、基本的な機能としてメディアアプリケーションなどを提供するようになった。そのため、SIMD演算による高速化が積極的に取り込まれはじめたわけだ。
Windows 8にはSIMD演算を利用するための、「DirectXMath」と呼ばれるライブラリが標準で組み込まれている。アプリケーションはこれを使うことで、簡単にSIMD演算を利用できる。DirectXMathはSIMD演算を抽象化しているので、同一のプログラムがx86 CPUだけでなく、ARM CPUでも利用できるようになっている。
CPUが備えるSIMD演算の機能は、当然ながらCPUアーキテクチャーによって違いがある。さらに同じアーキテクチャーであっても、メーカーなどで実装の違いや命令の違いなどがある。例えば、x86/x64互換であっても、インテルのSIMD演算とAMDのSIMD演算は、大きな部分では同じだが、命令などに若干の違いがある。
機能名 | 採用CPU | レジスタ長 | レジスタ数 | プラットフォーム |
---|---|---|---|---|
VMX-128※1 | Power、CELL | 128bit | 128本 | Xbox 360 |
NEON | ARM | 128bit | 16本 | Windows Phone 7/7.5/8、Windows RT |
SSE2 | x86/x64 | 128bit | 16本 | PC |
AVX | x86/x64 (Sandy Bridge以降) |
256bit | 16本 | PC |
※1 PowerPCのSIMD演算機能はモトローラが開発した「AltiVec」だが、VMXはAltiVecと互換性はあるものの、IBMが開発した別のSIMD演算機能。VMX-128はレジスタ数を128本に拡張している。
DirectXMathは元々「XNA Math」と呼ばれており、WindowsだけでなくXbox 360やWindows Phoneに、SIMD演算を提供するライブラリになっていた。簡単に言えば、SIMD演算で使われるデータ形式や命令などを抽象化して、C++のような高級言語から、CPUアーキテクチャーの違いを意識せずに利用できるようにしたものである。
Xbox 360のCPUはIBMのPowerアーキテクチャーで、「VMX-128」と呼ばれるSIMD演算機能を持つ。Windows PhoneのCPUは「ARM v7」準拠の「SnapDragon CPU」で、SIMD演算機構は「NEON」と呼ばれている。XNA Mathは複数のアーキテクチャー上で動作するため、本来別々のSIMD演算を利用できるように作られている。
Windows 8からは、システムがx86/x64だけでなくARMアーキテクチャーも考慮しなければならないが、DirectXMathにより、アーキテクチャーを気にせずにSIMD演算が利用できるようになったわけだ。
この連載の記事
-
第34回
PC
Windows 8の狙いは、UIの変化よりもAPIの変化が本質 -
第33回
PC
Windows 8が動作しなくなった? 新しくなった修復機能 -
第32回
PC
Windows 8でIMEに求められる新しい要素とはなにか? -
第31回
PC
Windows 8の無線LANをコマンドラインで細かく制御 -
第30回
PC
Windows 8をマウスで使いやすくするレジストリの小技 -
第29回
PC
周辺機器・アプリがWindows 8/RTで動くか確認する方法 -
第28回
PC
Windows 8のキーボードショートカットを全公開 -
第27回
PC
Windows 8が使いにくい? マウスを変えると印象も変わる -
第26回
PC
実はNFCに対応しているWindows 8 ただしアプリは不足 -
第25回
PC
実は扱いがまったく異なるWindows 8でのタッチパネル -
第24回
PC
Surfaceから見えるWindows RTの実像と、将来PCへの影響 - この連載の一覧へ