001-什么是VOQ

news/2024/9/25 18:57:30

1、什么是VOQ(Virtual Output Queues)?

VOQ(虚拟输出序列)是一种存储结构,由FIFO与RAM以及逻辑结构组合构成。在一些数据应用场景中能够有效存储数据并且能够及时输出,避免阻塞。一句话来说VOQ的优点在于:共享存储,较少存储资源,避免数据阻塞,提高数据输出效率。

2、为什么FIFO会有数据阻塞,而VOQ不会有数据阻塞?

生活举例如下:在一条可以右转和直行的道路上,如果前面的直行车在等红路灯,虽然右转线已空闲,但是由于直行车的阻塞后面的右转车辆就只能等待。FIFO也会出现这种情况。

应用场景如下:4路数据共用一个数据输入端口,由于FIFO是先入先出,而第0路数据由于下游模块没有处理数据暂时停止读取,此时会导致后面的第1路、2路、3路数据无法读取,造成排头阻塞。

克服这种局限性的一种方法是使用虚拟输出队列(Virtual Output Queues)。

虚拟输出队列(Virtual Output Queues)总体的想法十分朴素:在输入端口将发送到不同端口的数据包虚拟成不同的队列,并且彼此互不影响,这样一来即使队头数据包被阻塞也将不会影响发送到其他端口的数据包的发送

3、VOQ的是如何实现的?

下文以MAC中的VOQ实现为例,讲解VOQ的实现方案

3.1 VOQ的结构

模块中只有一个数据输入,输出端口,但是有4路数据,由mac_tx_client_in[1:0]区分。

如果采用传统FIFO(先入先出)结构,假设0用户先输入,那么在一段时间内0用户数据没有读出(原因可能为:0用户下游处理模块处理不过来,起反压,一段时间内不能再发数据),就会阻塞后输入的1用户、2用户、3用户数据,导致其他用户数据无法读出。而采用VOQ结构,0用户数据暂停读取并不会影响其他用户数据读取。

 

MAC VOQ包含三部分,数据存储模块DATA_RAM、指针存储模块PTR_fifo、每个client专用的指针存储desc_fifo。为方便说明,假设MAC的client数据为4个,分别为0、1、2、3(即mac中的数据有4路),VOQ输入数据:mac_tx_data_in[1023:0],mac_tx_vld_in,mac_tx_client_in[1:0],来自下游的输入请求voq_read_req,voq_read_client。

3.2 VOQ的内部结构图

VOQ结构如图所示:

假设存储深度为256:4个client号,需要4个desc_fifo(256x8)

 一个数据存储RAM(256x1024),一个指针ptr_fifo(256x8)。数据data_RAM存储的是数据流mac_tx_data_in的数据,指针ptr_fifo存储的是DATA_RAM中未写入数据的地址,desc_fifo存储的是每个client数据在DATA_RAM中的地址。

NOTE:在模块使用之前,即复位释放后,指针ptr_fifo会自动进行初始化操作,将fifo写满,数据为0~255,表示data_ram中的0~255地址都是未写入的。

 

 

 

mac_tx_data_in[1023:0]

input

输入数据

mac_tx_vld_in

input

输入数据有效信号,作为ptr_fifo读使能、data_ram写使能、desc_fifo写使能

mac_tx_client_in[1:0]

input

用户标志号0~3,表示数据是哪路数据,作为选择器控制信号用于区分desc_fifo,

Voq_read_req

input

来自下游的读请求信号,作为desc_fifo的读使能,ptr_ram的写使能,以及data_ram的读使能

Voq_read_client

input

来自下游的读请求信号client

mac_tx_data_out[1023:0]

output

VOQ模块输出数据

mac_tx_client_out[1:0]

output

输出数据client

mac_tx_vld_out

output

输出数据有效信号

3.3 VOQ数据写入流程:

1、输入数据有效信号mac_tx_vld_in作为ptr_fifo读使能信号ren驱动源,读出ptr_fifo数据ptr_rdata

2、将ptr_rdata作为data_ram的写地址waddr,将mac_tx_data_in[1023:0]写入data_ram。

3、根据mactx_client将DATA_RAM写地址waddr(即ptr_rdata)写入相应的desc_fifo。

3.4 VOQ数据输出流程:

1、Voq_read_req为1有效,读取相应的desc_fifo数据desc_rdata。(根据voq_read_client选择desc_fifo。若为0则选择读desc_fifo_0)

2、将desc_rdata作为DATA_RAM的读地址,读取DATA_RAM中的数据作为mactx_tx_data_out。(voq_read_client打拍后赋值给mac_tx_client_out,打拍延时由desc_fifo读延时和RAM_DATA读延时确定)

3、将desc_rdata作为写数据写入ptr_fifo中,表示DATA_RAM中的此地址为空。

NOTE:

Voq_read_req作为desc_fifo的读使能,ptr_ram的写使能,以及data_ram的读使能

mac_tx_vld_in作为ptr_fifo读使能、data_ram写使能、desc_fifo写使能

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/64682.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

MIT6.824 课程-Aurora

Aurora原文:https://xie.infoq.cn/article/09849d56c3b18064af6c7f857 搬运用于参考学习ABSTRACT Amazon Aurora 是一个关系型数据库服务,其作为 Amazon Web Services(AWS)的一部分为 OLTP 业务提供服务。本文描述了 Aurora 的体系结构以及设计该结构时的一些思考。我们认为高…

pl/sql小技巧

pl/sql中文乱码 select userenv(language) from dual cmd命令行 set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK pl/sql拖到cmd窗口下执行 pl/sql 显示行号pl、sql字体大小调整

结对项目-四则运算

github链接这个作业属于哪个课程 班级的链接这个作业要求在哪里 作业要求的链接这个作业的目标 实现四则运算自动生成程序,结对协作开发姓名 学号柳浩 3122004444洪吉潮PSP表格PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)Planning 计划 20 25Esti…

java作业

要求做几道练习题,体会java一些比较细的知识点 1. • 第一行输出false是因为这行代码比较两个枚举变量s和t是否引用同一对象。s被赋值为Size.SMALL,而t被赋值为Size.LARGE。由于它们引用不同的枚举实例,所以输出为false。 • 第二行输出false是因为这行代码首先通过s.getCla…

基于Sentinel自研组件的系统限流、降级、负载保护最佳实践探索

一、Sentinel简介 Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。 Sentinel 具有以下特征: •丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、…

信息学奥赛复赛复习03-CSP-J2019-03-纪念品-背包、01背包、完全背包

PDF文档公众号回复关键字:202409251 2019 CSP-J 题目3 纪念品 [题目描述] 小伟突然获得一种超能力,他知道未来 T天 N 种纪念品每天的价格。某个纪念品的价格是指购买一个该纪念品所需的金币数量,以及卖出一个该纪念品换回的金币数量 每天,小伟可以进行以下两种交易无限次:任…

《DNK210使用指南 -CanMV版 V1.0》第二十六章 摄像头图像捕获实验

第二十六章 摄像头图像捕获实验 1)实验平台:正点原子DNK210开发板 2)章节摘自【正点原子】DNK210使用指南 - CanMV版 V1.0 3)购买链接:https://detail.tmall.com/item.htm?&id=782801398750 4)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/k…

实时网络的仿真和配置工具RTaW Pegase v4.6版本更新

01概述随着嵌入式系统日益复杂,高效可靠的设计工具变得愈发重要。RTaW公司的仿真工具RTaW-Pegase最新发布的4.6版本,为用户带来了一系列重要更新和功能增强。本文将详细介绍RTaW-Pegase v4.6版本的主要更新内容,涵盖了DDS、SOME/IP、Ethernet、CAN以及SDV等多个关键领域的改…