zoukankan      html  css  js  c++  java
  • 计算机操作系统(四) --- 流水线的通用原理

    计算流水线

             下面的图就可以知道流水线的思维了,I1 ,I2 ,I3 为需要经过ABC 组合逻辑的信号,可以看到当I1 到了 B 时,I2 已经到了A 了,

    同理 I3也一样,流水线的思维提高了工作效率.

    流水线

                 这里说一下吞吐量 , 延迟 , 时间周期的计算,下图为例,可以看到, 假如我们的时间周期为 70ps. 那么下面一个信号走完就需要 6*70 = 420ps , 那么 420ps 就是延迟, 吞吐量就是单位时间内可以处理的信号量,可以知道用一除以70乘以一个时间单位得到 14.29 GIPS .即是时间周期的倒数.

    延迟

    流水线的局限性

    • 不一致的划分

    流水线局限

               我们可以看到以B 为周期(以为B里的延迟最大,思考一下要是选AC会是怎么样的),那么AC中会有空闲的地方.

    • 流水线过深,收益反而下降

    lsx

    流水线的改进

    电路重定时( circuit retiming )

           将计算PC的部分移到时序的开头.具体的查看下面的链接

    分支预测

           当出现分支的时候, 猜测分支的方向并根据猜测的方向进行预测.

    流水线冒险

           流水线冒险

           一个准备写入的时候,一个提前先拿了出来就会造成数据错误,解决这个问题可以通过以下的方式

    • 用暂停来比避免数据冒险(stalling)

    stallingrisk

              但是这样会暂停三个周期,严重影响了性能.

    • 用转发来避免数据冒险

               还是上图的那种情况,一个写入,一个读取,读取的时候发现这个值需要被其他操作写入,那么读取的操作直接就拿写入的值就够了,不再等其他操作写入后,我再读取了(仔细想想,类型于并发中的可视性啊!!)

    bypass

    • 加载/使用数据冒险

    加载使用冒险

             下面为暂停+转发的方式来解决加载/使用冒险

    互锁

    参考资料:

  • 相关阅读:
    C#调用VC++.net托管库程序集DLL
    SQL Server 2008 评估期已过期解决办法
    TFS2010安装(转)
    将dll添加到GAC(Global Assembly Cache)中
    LINQ to SQL with NOLOCK
    SQL Server 2008创建定期自动备份任务(转)
    问题解决记录(一)
    控制台读入
    数据库
    a标签的onclick与href的执行顺序
  • 原文地址:https://www.cnblogs.com/Benjious/p/9954995.html
Copyright © 2011-2022 走看看