■次世代PowerPCを語るす vol.8
■ このスレッドは過去ログ倉庫に格納されています
0281245
03/05/23 07:43ID:gtYTTjxnどう説明したものか…。
仮に、1けたの計算しかできない電卓と、2けたの計算ができる電卓が
あったとします。1けた電卓は、1けた同士の数値を計算して、2けたの
結果を表示します(9かける9は81)。2けた電卓は、2けた同士の数値を
計算して、4けたの結果を表示します(99かける99は9801)。
事務員であるあなたは、ノートに記入された膨大な1けたの数字を、
この電卓を使ってかけ算していきます。1けた電卓でも2けた電卓でも、
1けたの数値を計算する時には同じ手間がかかります。
2けた電卓をつかって二回分の計算を一回で行えれば、少しは手間が
はぶけるでしょう。やってみましょう。5かける6と、3かける4を
あわせて、53かける64は…3392。欲しかった結果は3012ですが、
1のけたと10のけたの間でも不要なかけ算をしてしまったので、
結果が食い違ってしまいました。
64ビットCPUも同じ事です。2回分の32ビット演算を64ビットALUで
一度に行おうとすると、上位32ビットと下位32ビットの間で
本来行われない筈の演算が行われ、不正な結果となります。
これをさけるために、上位32ビットをゼロで埋めて、一回の計算で
下位32ビットだけを使って計算するので、64ビットCPUになっても
性能は上がらないのです。
上位と下位との間で計算を行わないようにしたのがSIMDです。
128ビットのレジスタの中に32ビット整数を4個いれて計算すると、
それぞれ4個の32ビットALUが独立して働いて、正しい結果を出します。
AltivecやSSE2がそうです。
1けたの電卓を複数個ならべて、一回で複数の計算ができるように
したものを、スーパースカラと呼びます。32ビットCPUでも一般的な
技術です。
■ このスレッドは過去ログ倉庫に格納されています