スペシャルコンテンツ >> Webミニセミナー >> SIMDを使ってバリバリ計算


Web ミニセミナー

2013/6/1 トプスの中の人

第2回 コンピュータ、普通の命令とSIMD命令の違い

コンピュータが実際に理解して実行している機械語の命令というと何やら難しそうな感じがしますが、本当は簡単、


加算命令だったら、
   −赤い箱に入っている数をとってきて
   −青い箱に入っている数をとってきて
   −足し算して
   −結果を黒い箱にしまう
 という具合。実際、赤い箱に25と、青い箱に33とあれば、結果の
 黒い箱には58が入ります。箱のことを「レジスタ」という名前で
 呼ぶそうです。ちなみに、xxビットのコンピュータという場合、多くの
 場合は、この箱の幅が2進数でxxビット分。


10進数に直してやれば、8ビットなら0から255までの数が箱に入り、16ビットなら0から65535、32ビットなら0から4294967295、64ビットなら0から、えええっと書ききれない!


けれども「普通の命令」の場合、1回の加算命令で処理できるのは赤い箱も青い箱も黒い箱も1個ずつです。32ビットのコンピュータなら、「25足す33」でも「131149823足す2180456」でも1命令は1命令、かかる時間は一緒。


でも実はコンピュータがしなければいけないお仕事でも「25足す33」みたいな小さい数を扱うお仕事は「131149823足す2180456」なんかより多いのでした。じゃ、そんな小さめの数なら1度に沢山の計算ができないものか、ということで考えられたのがこれ。



赤い箱を何個も、青い箱も何個も、黒い箱も何個もならべ、同時にえいっと計算してしまうのです。まあ、ぶっちゃけ、64ビットとか広い幅のコンピュータなら、64ビットを4つに細かく区切れば、16ビットなら4個、8ビットなら8個の細かい箱ができるよね〜、それに別々のデータを入れて計算すればいいじゃん、という感じ。8個にわければ、8回分の繰り返しが1回でできるから、目の回り方も少なくなりそう。


一つの命令(Single Instruction)「加算」で複数のデータ(Multiple Data )を扱えるので、Single Instruction Multiple Data、SIMDというわけでした。



Webミニセミナー 全4回







© Copyright 2003 - 2013 TOPS Systems Corporation