兵乓操作的3个作用

兵乓操作的3个作用

2012年11月09日 20:34:06 只学最有用的已经学不完不做学究 阅读数:716

1、最大优点:

通过“输入数据选择单元”和“输出数据选择单元”按节拍、相互配合的切换,将经过缓冲的数据流没有停顿地送到“数据流运算处理模块”进行运算与处理。把乒乓操作模块当做一个整体,站在这个模块的两端看数据,输入数据流和输出数据流都是连续不断的,没有任何停顿,因此非常适合对数据流进行流水线式处 理。所以乒乓操作常常应用于流水线式算法,完成数据的无缝缓冲与处理。

比如framebuffer,buffer里可以存两帧数据,显示器读第一帧时,第二帧也准备好,这样就不用第一帧读完了再等第二帧存入buffer,就不会有这个暂停显示的时间。这就是输入和输出都是连续不断。

2、乒乓操作的第二个优点
  可以节约缓冲区空间。比如在WCDMA基 带应用中,1个帧是由15个时隙组成的,有时需要将1整帧的数据延时一个时隙后处理,比较直接的办法是将这帧数据缓存起来,然后延时1个时隙进行处理。这时缓冲区的长度是1整帧数据长,假设数据速率是3.84Mbps,1帧长10ms,则此时需要缓冲区长度是38400位。如果采用乒乓操作,只需定义两个能缓冲1个时隙数据的RAM(单口RAM即可)。当向一块RAM写数据的时候,从另一块RAM读数据,然后送到处理单元处理,此时每块RAM的容量仅需 2560位即可,2块RAM加起来也只有5120位的容量。

3、

另外,巧妙运用乒乓操作还可以达到用低速模块处理高速数据流的效果。如图2所示,数据缓冲模块采用了双口RAM,并在DPRAM后引入了一级数据预处理模块,这个数据预处理可以根据需要的各种数据运算,比如在WCDMA设计中,对输入数据流的解扩、解扰、去旋转等。假设端口A的输入数据流的速率为 100Mbps,乒乓操作的缓冲周期是10ms。以下分析各个节点端口的数据速率。

A端口处输入数据流速率为100Mbps,在第1个 缓冲周期10ms内,通过“输入数据选择单元”,从B1到达DPRAM1。B1的数据速率也是100Mbps,DPRAM1要在10ms内写入1Mb数据。同理,在第2个10ms,数据流被切换到DPRAM2,端口B2的数据速率也是100Mbps,DPRAM2在第2个10ms被写入1Mb数据。在第 3个10ms,数据流又切换到DPRAM1,DPRAM1被写入1Mb数据。

所以第三个优点实质是增加低速那部分模块的数量,化串行为并行,然后还能巧妙利用双口ram的优点。所以和乒乓buffer的关系感觉不大。

总结:感觉真正属于乒乓buffer的优点只有第一个。就是无缝处理。

转载:https://blog.csdn.net/fengyunjh6/article/details/8167726

原文地址:https://www.cnblogs.com/chengqi521/p/10919573.html

时间: 2025-02-01 06:52:29

兵乓操作的3个作用的相关文章

把查询的结果组织为一串字符(eg:板板鞋,兵乓球,篮球,足球)

--把查询的结果组织为一串字符(板板鞋,兵乓球,篮球,足球) drop table a create table a( name varchar(20)) insert into a select '足球' union select '篮球' union select '兵乓球' union select '板板鞋' go DECLARE @combinedString VARCHAR(MAX) SELECT @combinedString = COALESCE(@combinedString

练习二十二:python兵乓求比赛顺序练习,关于连个兵乓球队进行比赛

已知有两支兵乓球队进行比赛,每队各出3人: 甲队有a,b,c三人,乙队有x,y,z三人,已抽签决定比赛名单 问题:有人向队员打听比赛名单.a说他不和X比,c说他不和x,z比,程序找出比赛对手 方法一: 1 list1 = ['a','b','c'] 2 list2 = [0,0,0] 3 for i in list1: 4 if i == "c": 5 list2[list1.index(i)] = 'y' 6 elif i == "a": 7 list2[list

Vijos p1217 兵乓球

描述华华通过以下方式进行分析,首先将比赛每个球的胜负列成一张表,然后分别计算在11分制和21分制下,双方的比赛结果(截至记录末尾).比赛规则和实际比赛规则相同, 在11分制下比分为10:11时还要继续比赛,直到分数差距达到2分:同理21分制下比分为20:21的时候也还要继续比赛.比如现在有这么一份记录,(其中W表示华华获得一分,L表示华华对手获得一分):WWWWWWWWWWWWWWWWWWWWWWLW在11分制下,此时比赛的结果是华华第一局11比0获胜,第二局11比0获胜,正在进行第三局,当前比

【读书笔记】C#高级编程 第二十四章 文件和注册表操作

(一)文件和注册表 对于文件系统操作,相关的类几乎都在System.IO名称空间中,而注册表操作由System.Win32名称空间中的类来处理. (二)管理文件系统 System.MarshalByRefObject--这是.NET类中用于远程操作的基对象类,它允许在应用程序域之间编组数据. FileSystemInfo--这是表示任何文件系统对象的基类. FileInfo和File--这些类表示文件系统上的文件. DirectoryInfo和Directory--这些类表示文件系统上的文件夹.

android产品研发(十三)-->App轮训操作

转载请标明出处:一片枫叶的专栏 上一篇文章中我们讲解了android app实现长连接的几种方式,各自的优缺点以及具体的实现,一般而言使用第三方的推送服务已经可以满足了基本的业务需求,当然了若是对技术有追求的可以通过NIO或者是MINA实现自身的长连接服务,但是自己实现的长连接服务一来比较复杂耗时比较多,而且可能过程中有许多坑要填,一般而言推荐使用第三方的推送服务,稳定简单,具体管理长连接部分的模块可参考:android产品研发(十二)–>App长连接实现. 而本文将讲解app端的轮训请求服务,

C#泛型List 的定义、作用、用法

定义:List类表示可通过索引访问的对象的强类型列表,提供用于对列表进行搜索.排序和操作的方法. 作用:泛型最常见的用途是泛型集合我们在创建列表类时,列表项的数据类型可能是int,string或其它类型,如果对列表类的处理方法相同,就没有必要事先指定数据类型,留待列表类实例化时再指定.相当于把数据类型当成参数,这样可以最大限度地重用代码,保护类型的安全以及提高性能. List的一般用法所属命名空间: System.Collections.Genericpublic class List:ILis

C#中符号的作用备忘

~ 按位求补符: ! 非逻辑运算符: % 求余运算符: ^ 异或位运算符: & 且位运算符: |  或位运算符: * 既可以用作乘法符号,还可以表示为指针: + 表示数学运算符相加: = 用来表示赋值操作: \  用于转义符的开始,如\n表示换行: ”  包裹字符串: ’  包裹单个字符: < 逻辑运算符小: > 逻辑运算符大: , 用于分隔参数: . 用于表示对象成员选择器或小数点: / 表示除以的数学运算符: # 用于条件编译或划分代码块. #if #else 控制预编译的代码:如

Foundation框架(7)时间操作

时间操作相关的主要类有: NSDate NSDatFormatter NSCalendar NSDateComponents 另外介绍一个定时器对象NSTimer NSDate 用于描述一个日期时间,提供了一些基本的时间获取和比较方法 + (instancetype)date  //当前日期时间 + (instancetype)dateWithTimeIntervalSinceNow:(NSTimeInterval)seconds  - (NSComparisonResult)compare:(

Java基础系列10:内存操作流,管道流,合并流,压缩流以及回退流

前言:这篇文章将对几个"非主流"的IO流进行简单的介绍 一 内存操作流 内存操作流的主要作用是完成内存的输入和输出.比如说在某些情况下需要生成一些临时信息,而将这些临时信息保存在文件中不仅要进行文件的读写而且在功能完成之后还需要删除这个临时文件,因此比较麻烦,这时或许就需要用到内存操作流了. 需要用到的API是:ByteArrayInputStream和ByteArrayOutputStream,分别表示输入流和输出流,示例代码如下: package javase.io; import