常见的流控机制之fifo与带外流控

在数据处理模块中,我们经常会涉及数据流控反压。什么是流控呢?简单来说就是控制数据流停止发送。常见的流控机制分为带内流控和带外流控。带外流控流控比较简单,就是需要一根额外的信号线来表示流控信息,如ready ,1表示可以发送数据,0表示不可以发送数据.如果取名为fc(flow control),则0表示可以发送数据,1表示停止发送数据。带内流控机制中,流控信息是通过数据通路传输的,没有额外的流控信号线。带内流控在接口模块非常常见,例如以太mac的pause帧和pcie的信用量机制。流控系列文章分为4篇,今天是第一篇。首先将最简单的流控机制,fifo与带外流控。
1、什么是fifo
fifo(first in first out)是一种用寄存器reg或者ram实现的存储结构,常用于存储数据通道中的数据流,采用先入先出的数据,当下游模块无法及时处理上流模块输出的数据时,此时需要用fifo暂存数据,防止数据丢失。
2、fifo的流水反压机制
每一个fifo都有一个将满阈值cfg_afull_value(名称随意,看得懂就行),通常由寄存器配置模块cfg_csr提供。当fifo内的数据量达到或超过cfg_afull_value时,将满信号afull从0跳变成1,即fc信号从0跳变1。上游发送模块感知到fc为1时,则停止发送数据,有可能是1~2周期就停止,有可能是一个整包发送完才停止,根据代码实现才能判断。在fc跳变成1后,fifo需要能够缓存路径上的data以及上游发送模块停止发流之前发出的所有data。这就是fifo的流控机制。
图1:fifo流控示意图
3、fifo深度如何设置
如图2所示,数据data和有效信号vld从模块a产生,经过n拍延时,输入到fifo,fifo产生将满信号afull,经过m拍延时反馈到模块a,假设模块a接收到afull=1时,立即停止发送数据。假设fifo深度为fifo_depth,每拍为一个时钟周期。
图2:fifo深度计算示意图
1为了保证fifo不发生溢出,请问将满阈值cfg_afull_value至少应该设置成多少?
2为了充分发挥fifo的性能,fifo深度depth应该为多少?
fifo将满阈值如何设置:
当fifo中的数据为cfg_afull_value时,产生afull=1,
afull=1经过m拍到达模块a,此时fifo中应该有(cfg_afull_value+m)个数据。
afull=1到达模块a时,模块a立即停止发送数据,此时电路中还存在n拍数据将陆续送到fifo中,所以最后fifo中应该为(cfg_afull_value+m+n)个数据,
为了保证数据不会溢出,所以应该满足公式fifo_depth>= cfg_afull_value+m+n,因此,将满阈值应该至少为depth_fifo-(m+n)
fifo深度depth应该为多少?
若fifo_depth过小,afull有效之后,fifo中存储的数据将很快被下游数据读取,而新的数据又无法及时到达fifo,因此会造成流水气泡,影响电路性能。
假设m=5 ,n=10,假设fifo_depth=20,则cfg_afull_value=5, 所以在t时刻,fifo中存了5个数据后afull=1会有效,在之后的15个周期内会陆续存入15个数据。假设下游模块b每个周期读取fifo中的一个数据,因为当fifo内的数据data_cnt小于5时,afull才会无效(为0),因此在t+15和t+30的时刻内,下游电路b只能读5个数据,因此会造成数据断流,影响电路性能。
图3:流控信号时序图
为保证电路性能,在t+15到t+30这个时间段内应该有15个数据可读,因此cfg_afull_value应该不小于15(m+n)。所以fifo深度应该不小于2*(m+n)
结束语
其实fifo的流控方式有个明显的弊端,一旦反压路径m(见图2)过大,会明显浪费资源。


浪潮AI服务器NF5488A5一举创造18项性能纪录
CPCI总线实现实时图像信号处理平台设计
PLC程序设计常用方法总结
超极本=超级难卖?超极本不是“救世主”!
iPhone7/7Plus销量暴跌,辉煌不再,中国红也救不了苹果了
常见的流控机制之fifo与带外流控
特斯拉柏林工厂正式投产 理想汽车ONE售价上调
国际视频编码标准mpeg简述及AVS视频关键技术
IBM公司宣布停止AI提供人脸识别技术的相关服务
芯片产业如何应对数据洪流时代的新变化与新挑战
德州仪器推出在线工具WEBENCH系统电源建筑师
根据PCI总线的实时测频卡WDM驱动程序设计策略
虚拟现实技术都用在了哪些方面
微软新款 Xbox 外接硬盘要求公布:USB 3.0,128GB
LPC553x/S3x MCU系列功能简介
Supermicro 在北京 IDF 上展示新的 Twin
5G应用恐威胁日本工业机器人产业
关于帮助实现自动驾驶技术的“车间车路通信(V2X)”
关于氨基酸与目标材料之间相互作用机理的认识
SpaceX星链卫星对不同天文台的影响