PingPang双缓存
在实时采集并处理高速吞吐的数据时,要求计算机具有很高的运行速度,以降低运行的延迟。PingPang双缓存(PingPang buffer) 就是一种从软件方面提高计算机性能的方法,它的核心思想就是一个缓存在写入的时候,另一个缓存同时在处理,即当一个在采集数据的时候,另一个在处理数据,到下一个周期时,处理好数据的缓存变为数据采集,而另一个缓存变为处理数据,两者的任务不停的交换下去。这种方法类似于用空间换时间的策略,两个缓存之间并行运行,所以速度才会提升。
PingPang操作在处理过程中,把采集数据流通过"采集数据选择单元"等时地分配到数据缓存区AcqPing[]和AcqPang[]中。
1、在第一缓冲周期:将输入的数据流缓存到AcqPing[]。
2、在第二缓冲周期:通过"采集数据选择单元"进行切换;并将输入的数据流缓存到AcqPang[];与此同时,还要将AcqPing[]的数据通过"处理数据选择单元"的选择,送到"ProPing"进行运算处理。
3、在第三缓冲周期:通过"采集数据选择单元"的再次切换,将输入的数据流缓存到AcqPing[],与此同时,再一次将AcqPang[]的数据通过"处理数据选择单元"的切换,送到"ProPang"进行运算处理。
4、如此循环,周而复始。
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操作模块当作一个整体,此模块两端的输入数据流与输出数据流均是连续不断的,没有任何停顿,因此,非常适合进行流水线式处理,以完成数据的无缝缓冲处理。