| 指标 | 无 Pipeline | 有 Pipeline |
|---|---|---|
| Throughput (cycle time) | ||
| Latency | 0 | 3 |
w_0x_t + w_1x_{t-1} + \dots
$$
$$
\text{mac} = \text{snd mult}; \text{add}.
$$
<x,<y1,y2,..,yn>> (dstl n) <<x,y1>,<x,y2>,..,<x,yn>>
<<y1,y2,..,yn>,x> (dstr n) <<y1,x>,<y2,x>,..,<yn,x>>
\end{align*} $$
参阅 Lec 8.pdf
使用 DT 去追踪不同设计的关系(设计是一个 Transform)
- Root:Obvious 但是 Inefficient
- Leaves:Efficient 但是不 Obvious
可以把 Block Group起来,如何Pipeline Group
提升 Group Size,降低 Degree of Pipelining:更长的 cycle time,更低的 latency $$ \begin{align*} R &= D^{-1}; R; D.
&\text{(base form)} \
R^{KN} &=\left(R^K; D\right)^N; D^{-N}
&\text{(grouped)}
\
\text{Fully Pipelined: }&
K=1, N=M
& (KN=M)
\
\text{No Pipelined: } &
K=M, N=1
\end{align*}
$$
通过更改
$$
\text{group }m,n :
\left<
\begin{matrix}
x_{11} & x_{12} & \cdots & x_{1n}\
x_{21} & x_{22} & \cdots & x_{2n}\
\vdots & \vdots & \ddots & \vdots \
x_{m1} & x_{m2} & \cdots & x_{mn}\
\end{matrix}
\right>
\sim
\left< \begin{matrix} \lang x_{11} & x_{12} & \cdots & x_{1n} \rang\ \lang x_{21} & x_{22} & \cdots & x_{2n}\rang\ \vdots & \vdots & \ddots & \vdots \ \lang x_{m1} & x_{m2} & \cdots & x_{mn}\rang\ \end{matrix} \right> $$
Cb1 和 Cb2 数数据流被 reverse 的设计(counter-flowing)。
| Design |
![]() Cb3 |
![]() Cb 4 |
|---|---|---|
| Original Design |
![]() Cb1 |
![]() Cb2 |
| Cycle Time |
上图是 Critical Path Analysis。Cb4 有更短的 Cycle Time (Critical Path)。
**Critical Path(关键路径)**是数字电路中决定最大运行频率的路径。
定义:关键路径是电路中信号传播延迟最长的路径,从输入到输出所需时间最长的路径。
Critical Path = Circle Time
Cycle Time 是指一个系统每次能够接受新输入的最小时间间隔。在流水线设计中,它决定了系统的吞吐率(throughput)。Cycle Time 受限于流水线中最慢的那个阶段。
Delay(延迟)是指从输入到获得相应输出的总时间。在流水线设计中,总延迟通常是所有阶段延迟的总和。
Sampler
Time : 0 1 2 3 4 5 6 7 8 ...
Data : 0 1 2 3 4 5 6 7 8 ...
ev3^~1 : 0 0 0 1 1 1 2 2 2 ...
ev 3 : 0 3 6 9 12 15 18 21 24 ...
可以把
Time : 0 1 2 3 4 5 6 7 8 ...
Data : 0 1 2 3 4 5 6 7 8 ...
ev3^~1 : 0 0 0 1 1 1 2 2 2 ...
Stream 1 : 0 _ _ 1 _ _ 2 _ _ ...
Stream 2 : _ 0 _ _ 1 _ _ 2 _ ...
Stream 3 : _ _ 0 _ _ 1 _ _ 2 ...
Slowdown
Time : 0 1 2 3 4 5 6 7 8 ...
Data : 0 1 2 3 4 5 6 7 8 ...
ev3^~1 : 0 ? ? 1 ? ? 2 ? ? ...
slow 3 : 0 0 0 1 1 1 2 2 2 ...
ev 3 : 0 3 6 9 12 15 18 21 24 ...
\text{ev}_n^{-1};\text{slow}_n\ R;\text{ev}_n $$
Input : 0 1 2 3 ...
# (ev 3)^~1
(ev 3)^~1: 0 ? ? 1 ? ? 2 ? ? ...
Slow 3 : 0 0 0 1 1 1 2 2 2 ...
# Slow 3 可以视作 ev3-1 的 Stream 的合并视图
# s1: D^0 ev3^~1
# s2: D^1 ev3^~2
# s3: D^2 ev3^~3
Stream 1 : 0 _ _ 1 _ _ 2 _ _ ...
Stream 2 : _ 0 _ _ 1 _ _ 2 _ ...
Stream 3 : _ _ 0 _ _ 1 _ _ 2 ...
可以把 Slowdown 理解为对 D 的prank。例如
$$
\begin{align*}
\Gamma, R&=-[R]-D-[R]-D-[R]-
\
\text{slow}_n,R
&=-[R]-D^n-[R]-D^n-[R]-
\end{align*}
$$
Conbinational
\end{align*} $$
$$ \begin{align*} D &= \text{ev}_n^{-1}; \text{slow}_n\ D ;\text{ev}_n. \&=\text{ev}_n^{-1}; D^n; \text{ev}_n \&= D^n \text{ \ } \text{ev}_n
\end{align*} $$











