Next: , Previous: , Up: Assembly Coding   [Index]


15.8.7 SIMD命令

複数データに対する単一命令(SIMD, Single-Instruction Multiple-Data)は現在のCPUでは普通に使用できるもので,元々は信号処理アルゴリズムで,各データポイントを複数独立に扱うためのものです。GMPで発生するキャリー処理にはあまり向いていません。

所謂,4つの16x16 bitの乗算を行うSIMD乗算は,GMPの側から見れば,いくつかのシフトと加算が伴うことを除けば,32x32乗算を行う手間と同じになります。とはいえもちろん,SIMD形式がフルでパイプライン化されていて,命令デコードを減らすことができるのであれば,十分価値は出てきます。

x86 CPU上では,MMX命令がmpn_rshift関数と mpn_lshift関数で使われており,更に P55 に対するmpn_mul_1関数における16ビット乗算の特別な場合にも使用されています。 SSE2はPentium 4用の mpn_mul_1, mpn_addmul_1, mpn_submul_1関数で使用されています。