ベクトル命令の使い方を調べる1つの方法

【備忘録】

ベクトル命令を含め、最新のプロセッサーがサポートする最新の命令による最適なコードに変換する場合、Principles of Operationの参照に加えてCOBOLコンパイラーがコンパイル時に生成するアセンブラー・コードも参考にできる。コンパイル・オプションLISTに最新のレベル値のARCH(n)を追加すれば、例えばINSPECT等における文字列処理を最適化するコードを参照できる。

命令自体のコーディングは複雑なベクトル命令の方が大変ではあるが、例えば、文字列データ内の特定文字の数を求めるようなコードでは、ベクトル命令でのダイナミック・ステップ数は約100命令、CLI命令ループでのダイナミック・ステップ数は約1300命令で1桁異なった。この程度のダイナミック・ステップ数では使用されるCPU量はどちらの場合であっても微々たるものであるが、同じ処理を100万回繰り返した場合のCPU時間は、ベクトル命令では0.001364秒、CLI命令ループでは0.021038秒で、ベクトル命令での処理なら1/15から1/16程度のCPU量で処理が可能であった(*1)
IBM ZのSIMDでは1度に16要素のデータを同時に処理できるから、その事が実測結果に反映されたものと考えられる。


*1 IBM z16(z/VM下のゲストz/OS)での実測値。