シストリックアレイ【systolic array】

格子の各交点には「処理素子」(PE:Processing Element)と呼ばれる小規模な計算回路が配置されている。各PEは、隣接するPEからデータを受け取り、積和演算(乗算と加算を組み合わせた演算)を行って、その結果を次のPEへと渡す。この「受け取って計算して渡す」という動作を心臓の拍動(systole)になぞらえて「シストリック」という名が付けられた。
データは格子全体を一定のリズムで流れる仕組みになっており、あるクロックサイクルごとに各PEが一斉に演算を実行する。中央の制御回路がデータを配分する必要がなく、各PEが局所的なデータのみを参照するため、回路間の通信コストが低く抑えられる。多数のPEを同時に動かしても配線の混雑や遅延が生じにくい。
シストリックアレイの主要な用途は行列の乗算であり、この演算はニューラルネットワークの推論や学習において非常に頻繁に発生する。米グーグル(Google)社が開発したAIアクセラレータ「TPU」(Tensor Processing Unit)にもシストリックアレイ構造が採用されている。CPUやGPUと比較して、特定の演算に対するエネルギー効率と処理速度の面で有利とされている。
一方、シストリックアレイは汎用性が低いという側面もある。格子の大きさや演算の種類が設計時に固定されるため、特定の計算用途以外では性能を十分に発揮できない場合がある。また、処理対象の行列サイズがアレイの規模に合わない場合は、データを分割して順次処理する工夫が必要になる。汎用プロセッサと組み合わせて計算システムを構成し、得意な計算需要が生じたときに活用する使い方が一般的である。