【シストリックアレイ】

シストリックアレイ(Systolic Array) とは?

最終更新:
💡 データが"波"のように流れる計算工場

演算要素を規則的につなぎ、データや途中結果を隣の要素へリズミカルに渡しながら計算するアーキテクチャ。入力を繰り返し使う計算に向き、Google TPUの行列演算にも使われる。

📌 このページのポイント
隣へ値を渡し、入力を再利用重みを各要素に置く構成例和=0和=0重み w₁₁積を和に加える重み w₁₂積を和に加える入力 x₁入力和和重み w₂₁積を和に加える重み w₂₂積を和に加える入力 x₂入力結果 y₁結果 y₂横へ入力、下へ途中の和を渡す
各演算要素が入力×重みを途中の和へ足す概念例です。例えばy₁=w₁₁x₁+w₂₁x₂になります。実機では値を渡す時刻も調整します。配列の形、重みの配置やデータの方向は設計によって異なります。
ひよこ ひよこ
何をする仕組みなの?
ペンギン先生 ペンギン先生
小さな演算要素を規則的につなぎ、受け取った値を計算に使って隣へ渡す仕組みだよ。同じ入力を複数の演算に使うことで、外部から毎回取り直す回数を減らせる。全てが縦横の格子や積和演算だけに限られるわけではないんだ
ひよこ ひよこ
普通のCPUと何が違うの?
ペンギン先生 ペンギン先生
シストリックアレイは、決まった計算に合うデータの流れを作る構造だよ。CPUもキャッシュやレジスタでデータを再利用するので、CPUは毎回外部メモリから読む、という対比は正確ではない。規則的な並列計算に合うかがポイントなんだ
ひよこ ひよこ
メモリの待ち時間がなくなるの?
ペンギン先生 ペンギン先生
なくなる保証ではないよ。演算要素の間で再利用できても、外部から入力を供給し、結果を取り出す必要がある。演算量と転送量の釣り合い、使えるメモリ、問題を分ける方法などによって性能が変わるんだ
ひよこ ひよこ
AIとの相性は?
ペンギン先生 ペンギン先生
ニューラルネットワークには行列の掛け算を多く使う処理があるよ。TPUの行列演算ユニットでは、掛け算の結果を足し込む積和演算を、つながった要素で並列に進める。AIの処理全てが行列積になるわけではなく、別の演算を担うユニットもあるんだ
ひよこ ひよこ
図のデータはどっちへ流れるの?
ペンギン先生 ペンギン先生
図は、入力値が横へ、途中の和が下へ渡る構成例だよ。各要素に置いた重みと入力を掛け、その値を和に加える。重みを置く場所や流す値の方向は設計によって異なるので、全てのシストリックアレイがこの流れというわけではないんだ
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「シストリックアレイ」って出てきたら「演算要素の間にデータを流し、繰り返し使って計算する仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Systolic Array」 = 心臓の収縮になぞらえた演算要素の配列
💬 systolicは心臓の収縮に関わる言葉。H. T. Kungの論文は、データが演算要素の間をリズミカルに流れる様子を血液の循環になぞらえて説明しているよ

参考資料

← 用語集にもどる