Skip to content

Appendix Pipline

ISA的分类

性能分析

Throughput 指令数/运行时间 \(TP=\frac{n}{T}\)

  • 如果是普通的流水线\(T=(m+n-1)\Delta t_0\)

Speedup 串行执行的时间(无流水线)/运行时间 \(S_p=\frac{n\sum t_i}{T}\)

Efficiency 部件占时间的百分比 \(\eta=\frac{n\sum t_i}{mT}\times 100\%\)

时空图(和stall的流水线画法不一样!):

  • 横轴是时间, 纵轴代表使用的不同部件
  • 纵轴高度是部件数(流水线级数) \(m\)
  • 横轴的方框数是指令数\(n\) 长度代表时间

各阶段时间相同

如图,标号相同的框对应一条指令

\[ S_p=\frac{nmt}{(m+n-1)t}=\frac{mn}{n+m-1}\to m \]

各阶段时间不同

S2是3t,其他阶段是t 那么可以看成头尾(m-1)t 加上n个S2

\[ TP=\frac{n}{(m-1)t+n\cdot 3t} \to \frac{1}{3t} \]

静态双功能流水线

所有阶段都是t. 横着长度为4格代表4条指令 如果非流水线,总时间就是24(24格) Sp=24/15 E=24/(15*5)=32%

注意这里第二段时间是2t, 所以框要更长

冒险

  • RAW (真的冒险)
  • WAR
  • WAW

WAR和WAW在单纯的pipline里面没有影响,乱序执行的时候需要考虑。这里重点解决RAW

MEM/WB.rs2=ID/EX.rd

控制冒险

Static branch prediction:

非线性流水线

异常

Comments