クレイの手法
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/04/11 07:59 UTC 版)
クレイはSTARの技術的失敗を見て学ぶことが出来た。彼はベクトル処理の高速化に加えて、一般のスカラー命令も高速化することを決断した。そうすれば、マシンのモードが切り替えられても高速に動作できる。さらに彼らはベクトルを格納するレジスタを導入することで性能を劇的に向上できることに気づいた。 初期のマシンは演算を行うたびにメモリ上のデータを頻繁に読み書きしていたため、無自覚にSTARでも同様にベクトル演算がベクトルの要素に演算を施すたびにメモリへ繰り返しアクセスするように実装してしまった。しかし、まとめてデータをベクトル用のレジスタに読み込んで、まとめて演算を施し、まとめて演算結果を書き込むならば性能はさらに向上する(まとめたことで、データ1語あたりのメモリへのアクセスレイテンシが減らせるほかに、パイプライン化された演算器のレイテンシも遮蔽できる)。回路としてはコストが高いレジスタは、無制限に実装するわけにはいかないので、クレイの設計ではベクトルレジスタ内部の要素数は64語に制限された。STARではベクトルは任意長でもよいがメモリアクセスが何度も発生するのに対して、クレイの設計したマシンでは長いベクトルデータに対してはその一部(64語以内の)だけをまとめて読み込む。しかし、そのひとかたまりに対して要素ごとに同じ演算処理をまとめて実行できるのである。一般的な処理においてより長いベクトルを扱う場合にはそれを64語ずつに区切ってメモリアクセスを何回かに分けても性能向上を期待できるとクレイは考えた。 一般的なベクトル処理は小さなデータのかたまりをベクターレジスタに読み込んで、それに対していくつかの演算を行うが、この新しいベクトルシステムは独立した演算パイプラインを持つよう設計され、乗算器と加算器は独立したハードウェアとして実装されたので、内部でふたつの演算処理をつないで、例えば加算の結果を次の乗算で使用することがパイプライン上でできた。これをクレイでは chaining (チェイニング)と呼び、これをプログラマが意識して用いることで複数の命令をつないで使うことでベクトルレジスタとメモリの間の読み書きを減らすことにより高い性能を引き出すことができた。
※この「クレイの手法」の解説は、「Cray-1」の解説の一部です。
「クレイの手法」を含む「Cray-1」の記事については、「Cray-1」の概要を参照ください。
- クレイの手法のページへのリンク