diff --git a/docs/report/1H-codesign-paper/build/main.pdf b/docs/report/1H-codesign-paper/build/main.pdf index 77e85cf..44b119a 100644 Binary files a/docs/report/1H-codesign-paper/build/main.pdf and b/docs/report/1H-codesign-paper/build/main.pdf differ diff --git a/docs/report/1H-codesign-paper/sections/03-gemm.tex b/docs/report/1H-codesign-paper/sections/03-gemm.tex index d49c6d3..c462c1c 100644 --- a/docs/report/1H-codesign-paper/sections/03-gemm.tex +++ b/docs/report/1H-codesign-paper/sections/03-gemm.tex @@ -19,20 +19,17 @@ in command overhead? \subsection{Design} -The answer is the \emph{composite command}. A single command carries the -ordered tile pipeline -\[ -\textsf{DMA\_READ}\rightarrow\textsf{FETCH}\rightarrow\textsf{GEMM} -\rightarrow\textsf{STORE}\rightarrow\textsf{DMA\_WRITE}, -\] +The answer is the \emph{composite command}. A single command carries +the ordered five-stage tile pipeline (\textsf{DMA\_READ}, +\textsf{FETCH}, \textsf{GEMM}, \textsf{STORE}, \textsf{DMA\_WRITE}), and the PE scheduler splits the payload into hardware tiles -(here $32\times64\times32$), emitting one tile token per tile. Subsequent -stages are reached by \emph{token self-routing} between the on-PE engines, -so a tile flows DMA\,$\rightarrow$\,fetch\,$\rightarrow$\,GEMM\,$% -\rightarrow$\,store without returning to the scheduler between stages. -Because the whole pipeline is described by one command, the issue cost is -paid once per GEMM rather than once per tile-stage, and the scheduler is -free to keep every stage busy on different tiles simultaneously---tile +(here $32\times64\times32$), emitting one tile token per tile. +Subsequent stages are reached by \emph{token self-routing} between +the on-PE engines, so a tile flows through the chain without +returning to the scheduler between stages. Because the whole +pipeline is described by one command, the issue cost is paid once +per GEMM rather than once per tile-stage, and the scheduler is free +to keep every stage busy on different tiles simultaneously---tile $i$'s GEMM overlaps tile $i{+}1$'s DMA read. A multi-operation composite additionally lets an epilogue (for example a vector-math step) ride the same tile loop, firing per $K$-tile, per output tile, or once per kernel