このページの本文へ

前へ 1 2 次へ

塩田紳二のWindows 8 IN-N-OUT 第21回

SIMD演算対応でWindows 8アプリの処理速度があがる?

2012年10月05日 12時00分更新

文● 塩田紳二

  • この記事をはてなブックマークに追加
  • 本文印刷

 現在のほとんどの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演算が利用できるようになったわけだ。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン