zoukankan      html  css  js  c++  java
  • PingPang双缓存

      在实时采集并处理高速吞吐的数据时,要求计算机具有很高的运行速度,以降低运行的延迟。PingPang双缓存(PingPang buffer) 就是一种从软件方面提高计算机性能的方法,它的核心思想就是一个缓存在写入的时候,另一个缓存同时在处理,即当一个在采集数据的时候,另一个在处理数据,到下一个周期时,处理好数据的缓存变为数据采集,而另一个缓存变为处理数据,两者的任务不停的交换下去。这种方法类似于用空间换时间的策略,两个缓存之间并行运行,所以速度才会提升。

      PingPang操作在处理过程中,把采集数据流通过"采集数据选择单元"等时地分配到数据缓存区AcqPing[]和AcqPang[]中。

    1、在第一缓冲周期:将输入的数据流缓存到AcqPing[]。

    2、在第二缓冲周期:通过"采集数据选择单元"进行切换;并将输入的数据流缓存到AcqPang[];与此同时,还要将AcqPing[]的数据通过"处理数据选择单元"的选择,送到"ProPing"进行运算处理。

    3、在第三缓冲周期:通过"采集数据选择单元"的再次切换,将输入的数据流缓存到AcqPing[],与此同时,再一次将AcqPang[]的数据通过"处理数据选择单元"的切换,送到"ProPang"进行运算处理。

    4、如此循环,周而复始。

    PingPang工作时序状态(0:等待/1:工作)
    AcqPing 1 0 1 0 1
    AcqPang 0 1 0 1 0
    ProPing 0 1 0 1 0
    ProPang 0 0 1 0 1

      PingPang操作的最大特点是通过"采集数据选择单元"和"处理数据选择单元",按节拍、相互配合地切换,来将经过缓存的数据流不停地送到"数据处理模块"进行运算及处理。如把PingPang操作模块当作一个整体,此模块两端的输入数据流与输出数据流均是连续不断的,没有任何停顿,因此,非常适合进行流水线式处理,以完成数据的无缝缓冲处理。

  • 相关阅读:
    flex+spring3.0+blazds 数据推送整理版
    深入理解java虚拟机学习笔记1.
    一个netty序列化引起的思考。
    万年历
    面试理论题
    EF之Database First
    20120902 09:29 SQL、LINQ、Lambda 三种用法
    内容漂浮在图片上(div漂浮)
    生成订单号
    时间对比
  • 原文地址:https://www.cnblogs.com/kongzimengzixiaozhuzi/p/12963595.html
Copyright © 2011-2022 走看看