banked-stencil-multicast のbank配置と同報経路を、weight-stationaryな小型シストリックアレイへ転用する派生参照実装です。
共通コア: banked-stencil-multicast
このリポジトリは、共通コアがPE配列の入力供給へ適用できることを先行公開するための応用記録です。独立したPE回路、実装性能、または本体のRTL・性能証拠を主張するものではありません。
flowchart LR
C["共通原理<br/>静的bank配置 → multicast → lane"] --> A["固有の派生<br/>common input + weight-stationary PE"] --> E["実証範囲<br/>4 PE / 16 step / 64 MAC<br/>参照モデル + 2 tests"]
| 層 | このrepoで固定する内容 |
|---|---|
| 共通原理 | 本体の静的bank配置とmulticastを、共通入力のPE配布として読む |
| 固有の派生 | 4 laneの重み行、入力ベクトル、整数内積、入力readの比較 |
| 実証範囲 | 整数参照モデル、固定ケース、2 tests。PE RTL・物理性能は含まない |
入力ベクトルを全laneへ同報し、laneごとの重み行との内積を計算します。
y[l] = Σ(s=0..S-1) x[s] * w[l][s]
| コア | 派生側 |
|---|---|
| lane | PE列またはPE行の入力ポート |
| multicast | 共通入力のPE配布 |
| bank scheduler | PE投入順の静的化 |
| FIFO/PE RTL | 本リポジトリの対象外 |
lane数4は本体の基準境界に合わせた値です。本体のbank scheduleやRTL/formal結果を、このrepoだけで再証明するものではありません。
reference/systolic_model.py の既定値は、16要素の入力と4本の16要素重み行です。
| 項目 | 値 |
|---|---|
| lane/PE数 | 4 |
| 入力step数 | 16 |
| MAC数 | 64 |
| unique input read数 | 16 |
| 複製read比較値 | 64 |
| read削減数 | 48 |
| input read削減率 | 4.0倍 |
| multicast delivery数 | 64 |
| issue cycle数 | 16 |
| output digest | 65c7cf00a7c8cd19b7b31b7d4bee3daffe253259f5d4feb320056b61b1358aa7 |
read数、delivery数、issue cycle数は参照モデルのカウントです。実装帯域・周波数・電力・性能保証ではありません。
4 laneへ同じ入力を配布する固定ケースで、64 MACの出力digestが再現されます。入力readは複製読出しの64回からunique 16回として数えられ、48回、4.0倍の差になります。
これは、共通入力をmulticastで供給する構成を正しさとデータ移動の両面から比較できることの証拠です。ハードウェア速度の証明ではありません。
リポジトリルートでPython 3.10以降を実行します。
python -B -m unittest discover -s tests -v
2 tests、OK。
| 区分 | 内容 |
|---|---|
| 参照 | 整数内積、laneごとの重み、入力再利用、multicast delivery、issue順のモデルとテスト |
| 実測 | なし |
| 試算 | なし。read数とcycle数はモデル内のカウント |
| 未検証 | PE RTL、SRAM port、bank競合、FIFO、任意形状、配線、Fmax、面積、電力、物理実装 |
このrepoはシストリックアレイ応用の独立した公開単位です。公開版のDOIは CITATION.cff に記録します。コードはApache-2.0、文書はCC BY 4.0です。