• 【硬件架构的艺术】学习笔记(4)流水线的艺术


    目录

    写在前面

    4. 流水线的艺术

    4.1 介绍

    4.2 影响最大时钟频率的因素

    4.2.1 时钟偏移

    4.2.2 时钟抖动

    4.3 流水线

    读书笔记汇总


    写在前面

    这个博客系列是对最近阅读的书籍《硬件架构的艺术》的部分内容的读书笔记,大部分的内容是摘抄书上的内容,小部分是自己的笔记,对书上部分知识点的理解以及拓展(红色标注)。


    4. 流水线的艺术

    4.1 介绍

    对高速 ASIC 日益增长的需求使得越来越需要增加电路每个时钟周期的计算吞吐率。可以通过流水线提高 ASIC 在这方面的性能,但是也会带来系统延迟和面积的增加。

    流水线通过在较长的组合逻辑路径中插入寄存器降低了组合逻辑的延迟,从而增加了时钟频率并提高了性能。

    下图为插入流水线前的组合逻辑电路。

    图中的组合路径延迟为 X 个时间单位(在 A 点和 B 点之间)。同样的路径在下图中通过插入三个寄存器被分割成多个小块,寄存器间的延迟为 Y 个时间单位,这里 Y

    下图为插入流水线后的电路示意图。

    在实际的设计中,在过长的组合逻辑用时序逻辑进行截断有助于提高时序,对提高整个系统的工作时钟频率有帮助,虽然会稍稍增加延时和资源消耗。


    4.2 影响最大时钟频率的因素

    时钟频率是数据流入系统后在输出端出现的速率。有许多因素都会影响流水线系统的最大时钟频率。首先,考虑图中所示的两条流水线阶段之间的理想路径。

    Tcomb:寄存器 A 和 B 间的组合延迟

    TSA:寄存器 A 的建立时间

    THA:寄存器 A 的保持时间

    TCQA:寄存器 A 的时钟输出延迟

    TSB:寄存器 B 的建立时间

    THB:寄存器 B 的保持时间

    TCQB:寄存器 B 的时钟输出延迟

    对于没有任何抖动的理想时钟,时钟信号同时到达两个寄存器块,假设寄存器A时钟到输出的延迟(TCQA)为0,寄存器B的数据建立保持时间(分别为TSB和THB)也为0,最大时钟频率F是通过组合逻辑的最大路径延迟的倒数,即:

    Fmax = 1/Tperiod= 1/Tcomb

    在实际的电路中,有许多其他的因素也会对时钟频率产生影响,如时钟偏移和抖动。

    4.2.1 时钟偏移

    在实际电路中,由于存在线路上的传播延迟,寄存器B的时钟输人(参考上图)相对于寄存器 A 可能会有一些延迟。

    这些传播延迟中的微小差别,会发生在复杂数字产品的整个时钟网络上,最后会对整系统时序产生无法接受的影响。这种现象也称为“ 时钟偏移”。

    在相邻两个寄存器的时钟延迟大于这两个寄存器之间的数据路径延迟时,就会产生负时钟偏移。在这种情况下,先到的时钟会引起竞争条件。即在数据还未成功锁存时时钟就触发了寄存器。时钟偏移倾向于增加电路所能承受的最大时钟频率。

    4.2.2 时钟抖动

    到达电路中某一点的连续时钟边沿之间间隔的变化称为时钟抖动 tjit。

    如下图所示,时钟抖动会影响时钟的占空比。让我们看看在实时电路中上述因素对最大时钟频率的影响。是典型的组合电路路径。粗体显示的路径(b、f、j、i、m、n和o)是两个寄存器之间最大延迟的路径。

     

    算一下从寄存器“bf" 到输出“o” 之间精确的组合延迟。

    按照上图,两个寄存器之间的路径b、f、j、l、m、n、o的总延迟为:

    TFF= TCQ + TAND + TINV + TNOR + Tstp + TSKW + TJIT

    TFF= TCQ + Tcombo + Tstp + TSKW + TJIT

    因此对于给定电路使用下面的公式来计算最大周期:

    {TFF}max = {TCQ + Tcombo + Tstp + TSKW + TJIT}max

    假设设计中所有触发器的延迟相等( 实际情况不可能这样),那么得到:

    {TFF}max = TCQ + Tstp + TSKW + TJIT + {Tcombo}max

    上面等式中的组合延迟部分可以通过添加多个触发器来减少,因此增加了电路操作的最大频率。这种减少流水线各阶段组合延迟的方法能显著提升电路的吞吐率。

    因此在实际的设计当中,应避免过长的组合逻辑语句,因为这样不会导致整个系统最大工作时钟的减小,可以用时序逻辑去截断组合逻辑来提升时序。


    4.3 流水线

    流水线使用存储器件将时钟周期内关键路径(最大组合延迟的路径)分割开来。这减少了关键路径上各阶段延迟并使电路能以更高频率工作。流水线电路增加了各时钟阶段的计算能力,但是由于使用了存储器单元也增加了负载。让我们来看一下图中执行这种操作的电路: .

    i = (a + b + c + d) + (e + f + g + h)

    计算下图中两个触发器之间的延迟( 最大路径延迟)。

    有前面计算得

    {TFF}max = TCQ + Tstp + TSKW + TJIT + {Tcombo}max

    这里{Tcombo}max = 3Taddr

    所以最终的时钟周期为

    {TFF}max = TCQ + Tstp + TSKW + TJIT + {3Taddr}

    假设有下列约束值

    TCQ= 4FO4

    Tstp= 2FO4

    TSKW + TJIT= 4FO4

    Taddr = 10FO4

    这里FO4指4个反向器延迟的扇出。

    将这些值代入上式中,得到

    {TFF}max= 4 + 2 + 4 + 3 x 10 = 40FO4

    现在让我们看一下同样的电路插入两级流水后的样子。新的流水线电路如下图所示。第一级流水线寄存器(图中长方形)加在第一次加法操作之后,其他流水线寄存器加在各阶段直至加法器最终的输出被锁存住。

    现在计算其延时:

    {TFF}max = TCQ + Tstp + TSKW + TJIT + {Tcombo}max

    因为此时 {Tcombo}max = 1Taddr

    所以

    {TFF}max = TCQ + Tstp + TSKW + TJIT + Taddr = 4 + 2 + 4 + 1 x 10 =20FO4

    注意:在任何两个寄存器之间现在只存在一个加法器,而不再是三个加法器。

    在使用7个流水化加法器实现8输人加法之后( 如图6.8所示),吞吐率( 每个周期的计算次数)增加至每个时钟周期计算一次8输人之和。总延迟为3个时钟周期。

    与使用单加法器进行上述计算相比,7个加法器意味着至少7倍的面积和功耗开销。将电路并行化对功耗和面积的影响都很大。一般来说,使用并行电路进行同样的k次操作,比重复使用某一逻辑k次达到同样的效果在面积和功耗方面的开支更大,因为使用了更多的触发器和额外逻辑,导致了更多的连线。

    读书笔记汇总

    【硬件架构的艺术】学习笔记(1)亚稳态的世界

    【硬件架构的艺术】学习笔记(2)同步和复位

    【硬件架构的艺术】学习笔记(3)处理多个时钟

  • 相关阅读:
    Unity实现设计模式——中介者模式
    洛谷 P1281 书的复制(二分答案 输出方案)
    Vue3中组件数据的传递以及更改
    众和策略:天天基金网怎么开户?
    为什么国内用户不选择商务智能(BI)工具?_光点科技
    如何快速通过pmp考试求攻略
    如何将c#在线编辑器嵌入自己项目
    正则表达式以及python的re模块介绍
    【Godot】数据响应的方式执行功能
    机器学习——自然语言处理(NLP)一
  • 原文地址:https://blog.csdn.net/m0_61298445/article/details/126256541