【credit_based流控机制】

credit_based流控机制

  • 1 credit_based way
    • 1.1 Principle
    • 1.3 DFD
    • 1.4 Module
      • 1.4.1 Interface
      • 1.4.2 Code Block

在网络芯片处理大流量报文中,一般主要是两种机制:1.valid–ready反压(backpressure)机制;2.credit信用机制;
credit机制的好处是可以不用考虑链路的延时;帮助能够自适应调整数据的数据速率;
让我联想到了海底捞的门外取号和叫号的概念

1 credit_based way

1.1 Principle

生产者–>消费者模型;即发送端–>接收端;
基于credit流控思路:发送端发送到接收端,需要提前知道信用值(credits);通过在发送端维护credits(本质上是计数器)进行控制发送发送端发送数据;
有credit值才会继续发送数据Data;

基本原理
进一步原理如下图所示:在接收端放buffer,一般也是FiFo;在发送端进行发送数据时,内部会有credit信用机制,发送端每发送一次data,会进行credit–;发送端入队FiFO,拿走一个在返回一个Taken给发送端,发送端内部credit++;
这样发送端内部不断对credit>0进行判断,来判断是否能够发出;
在本质一点,credits维护可以放在发送端也可以接收端;在这里是以放在发送端;
credit基本上等于接收端的FiFo的深度;


1.3 DFD

进一步基本逻辑框图如下图所示,在这里主要是针对credit_tracker模块的原理,用来维护credits来进行流量控制;
通过逻辑框图来指导模块代码;



1.4 Module

1.4.1 Interface

在这里不用表格单独列出来了,如上图所示;

1.4.2 Code Block

在这里给出基本伪代码,没有进行逻辑验证,仅供参考;

//--Auther		:colonel
//--Date		:2024-05-22
//--Function	:credit_based for flow control
//--History		:Description
//--05/22		:Firstly create the file
//module credit_tracker#(parameter WIDTH = 4 
)(input clk,input rst_n,input [WIDTH -1:0] crdt_limit,input send,input taken,output reg has_crdt,output reg[WIDTH -1:0] crdt_left
);reg [WIDTH -1:0] crdt_cnt;
wire[WIDTH -1:0] nxt_crdt_cnt = crdt_cnt;//Initalalways@(posedge clk or negedge rst_n) beginif(!rst_n) begincrdt_cnt <= 0;end else begincrdt_cnt <= nxt_crdt_cnt;end
endalways@(*) beginif(send && !taken && (crdt_cnt != (1<<WIDTH) -1)) beginnxt_crdt_cnt = crdt_cnt + 1;end else if(!send && taken && (crdt_cnt!=0)) beginnxt_crdt_cnt = crdt_cnt - 1;end
endalways@(posedge clk or negedge rst_n) beginif(nxt_crdt_cnt < crdt_limit) beginhas_crdt <= 1'b1;crdt_left<= crdt_limit - nxt_crdt_cnt;end else beginhas_crdt <= 1'b0;crdt_left<= 0;end
endendmodule

以上仅是我个人的理解和学习,有不对的还请能够帮助指导指正;
Reference:
[1] https://blog.csdn.net/weixin_44260459/article/details/120757630

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea、datagrip注册记录下

一、DataGrip注册 DataGrip版本号&#xff1a;DataGrip 2023.2 访问地址&#xff1a;https://3.jetbra.in/ 点击“hardbin.com”&#xff0c;下载“jetbra.zip” 在vm里面添加上&#xff1a; -javaagent:D:\work\idea\jetbra\ja-netfilter.jarjetbrains重启datagrip 在刚刚…

自然语言处理(NLP)中的迁移学习

Transfer Learning in NLP 迁移学习&#xff08;Transfer Learning&#xff09;无疑是目前深度学习中的新热点&#xff08;相对而言&#xff09;。在计算机视觉领域&#xff0c;它已经应用了一段时间&#xff0c;人们使用经过训练的模型从庞大的ImageNet数据集中学习特征&…

英飞凌24GHz毫米波雷达-BGT24LTR11N16家用机器人应用

BGT24LTR11N16基础描述&#xff1a; 关于BGT24LTR11N16&#xff0c;它是一款用于信号生成和接收的硅锗雷达MMlC&#xff0c;工作频率为24.00GHz至24.25GHz ISM频段。它基于24GHz基本电压控制振荡器&#xff08;VCO&#xff09;。 这颗芯片是属于1T1R&#xff0c;也就是一发一收…

真实机安装完Centos7没有网卡驱动,ifconfig后,只有lo

文章目录 前言一、1查看网卡型号2 下载相应的驱动程序3、参考官方说明 二、总结 前言 参考1 参考2](https://blog.csdn.net/weixin_46945904/article/details/136365222?spm1001.2101.3001.6650.2&utm_mediumdistribute.pc_relevant.none-task-blog-2defaultYuanLiJiHuaP…

检索字符串

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在Python中&#xff0c;字符串对象提供了很多应用于字符串查找的方法&#xff0c;这里主要介绍以下几种方法。 &#xff08;1&#xff09;count()方…

【busybox记录】【shell指令】rmdir

目录 内容来源&#xff1a; 【GUN】【rmdir】指令介绍 【busybox】【rmdir】指令介绍 【linux】【rmdir】指令介绍 使用示例&#xff1a; 删除空目录 - 默认 删除dirname下的所有空目录&#xff0c;包括因删除其他目录而变为空的目录 常用组合指令&#xff1a; 指令不…

多激光雷达ip与端口配置

首先是雷达的ip 我们连上雷达&#xff0c;想要进入雷达的上位机的时候&#xff0c;需要对本机ip进行一些配置&#xff1a; 第一个是ip&#xff0c;第二个是掩码&#xff0c;第三个是网关。 其中ip可以通过wireshark来进行读取&#xff0c;一般就是192.168.102(雷达默认) 然后掩…

Selenium中使用的三种等待

文章目录 1.前言2.在selenium中常见的等待操作一般有3个 1.前言 在使用selenium时很多元素在使用的时候都需要加载&#xff0c;如果不等待加载结束直接使用就会报错&#xff0c;功能不能继续。一般解决的办法就是使用等待操作。 2.在selenium中常见的等待操作一般有3个 slee…

自定义数据集上的3D目标检测:使用OpenPCDet训练CenterPointPillar模型

前言 在自动驾驶和机器人领域&#xff0c;3D目标检测是关键技术之一。它能够提供关于周围环境中物体的精确位置和尺寸信息。OpenPCDet是一个基于PyTorch的开源3D目标检测框架&#xff0c;支持多种3D检测网络。在本文中&#xff0c;我们将探讨如何使用OpenPCDet框架和CenterPoi…

springboot3 controller中的参数 本地开发可以正常注入,但是打包到生产后就无法识别,必须使用@RequestParam后才可以识别问题解决

问题 在Controller代码中声明了一个参数&#xff0c;本地可以正常注入&#xff1a; RestController public class TestController {GetMapping("test")public String test(String testParam) {return "test" testParam;} }在本地 访问 GET http://local…

树莓派4B 学习笔记1:TF卡系统盘烧录_初次启动_远程端连接配置

今日开始学习树莓派4B 4G&#xff1a;&#xff08;Raspberry Pi&#xff0c;简称RPi或RasPi&#xff09; TF卡系统盘烧录_初次启动_远程端连接配置 目录 格式化SD卡&#xff1a; 烧录系统Win32DiskImager&#xff1a; Raspberry Pi Imager镜像烧写&#xff1a; 树莓派官网资料…

浅谈traceroute网络诊断工具

traceroute 是一个网络诊断工具&#xff0c;用于跟踪和显示数据包从源主机到目标主机所经过的每一跳&#xff08;路由器&#xff09;的路径。它能够帮助用户识别网络路径中的瓶颈和故障点。traceroute 的工作原理主要基于 ICMP&#xff08;Internet Control Message Protocol&a…

合约之间调用-如何实现函数静态调用?

合约之间的函数调用 EOA&#xff0c;external owned account&#xff0c;外部账号&#xff0c;例如metamask调用最终总是由EOA发起的合约之间的调用使得一次完整的调用成为一个调用链条 合约间调用过程 调用者须持有被调用合约的地址得到被调用合约的信息将地址重载为被调用合…

NAS搭建自己的Git私服

去年公司采购了一台NAS设备&#xff0c;本来是给文化业务部门做素材库用的&#xff0c;结果我发现磁盘利用率很低&#xff0c;看着那么贵的希捷酷狼闲置真心痛啊&#xff01;突然想到目前公司软件研发的源码管理分两块&#xff0c;一个是gitee&#xff0c;一个是阿里云ECS服务器…

据报导,SK海力士的HBM团队源自三星,暗示三星不幸失去HBM优势

最新科技动态显示&#xff0c;三星的高带宽记忆体&#xff08;High Bandwidth Memory, HBM&#xff09;技术尚未获得GPU巨头英伟达&#xff08;NVIDIA&#xff09;的认证&#xff0c;导致其落后于竞争对手SK海力士。这一挫折直接导致三星半导体部门负责人更迭。尽管三星官方否认…

使用swagger2做测试,报java.lang.NumberFormatException: For input string: ““ 的异常

文章目录 一、问题描述二、原因分析三、解决方案3.1、方案一&#xff1a;手动添加example值&#xff08;费时费力不推荐&#xff09;3.2、方案二&#xff1a;导入1.5.21(及之后)版本的swagger-models&#xff08;推荐&#xff09; 本文基于swagger2.9.2进行讲解 <!--swagge…

C# CryptoStream流的详解与示例

在当今数字时代&#xff0c;数据安全变得越来越重要。保护敏感信息免受未授权访问是每个开发者的责任。在C#中&#xff0c;使用CryptoStream流可以方便地对数据进行加密和解密。本文将详细介绍C# CryptoStream库的用法、功能以及它如何对数据进行加密和解密。 一、CryptoStrea…

理解和使用JSON Web Tokens(JWT)进行Web应用程序授权

理解和使用JSON Web Tokens(JWT)进行Web应用程序授权 如今,Web令牌是在网络中进行授权的一种非常流行的方式。JWT在Microsoft的背景下也变得非常流行,并且对我们今天构建应用程序的方式产生了一些其他影响。在本篇笔记中,我们将学习JWT是什么,以及如何在保护Web应用程序…

HTTP Digest Access Authentication Schema

HTTP Digest Access Authentication Schema 背景介绍ChallengeResponse摘要计算流程总结参考 背景 本文内容大多基于网上其他参考文章及资料整理后所得&#xff0c;并非原创&#xff0c;目的是为了需要时方便查看。 介绍 HTTP Digest Access Authentication Schema&#xff…

基础—SQL—DQL(数据查询语言)基础查询

一、引言 1、介绍&#xff1a; 分类全称描述DQL英文全称&#xff1a;Data Query Language(数据查询语言)主要是学习对数据库表中的记录进行查询的语句 2、讲解 日常的开发中或者对于一个正常的业务系统中&#xff0c;对于查询的操作次数是远远多于数据的增删改的频次。例如…