0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Tsi620缓冲区释放管理:如何避免或限制拥塞情况

电子设计 来源: IDT 作者: IDT 2021-05-27 15:39 次阅读

本文档介绍了称为“桥缓冲区释放管理(BRM)”的Tsi620功能如何避免或限制拥塞情况下可能发生的基于优先级的饥饿。

Tsi620缓冲区释放管理

在基于优先级的协议中,需要重新排序以避免死锁情况。当缓冲区被无法向前处理的事务占用时,就会发生死锁。重新排序通过允许较高优先级的事务在较低优先级的事务之前完成来帮助防止死锁情况。

RapidIO和PCI都允许基于优先级对事务进行重新排序。使用PCI协议,优先级与事务类型相关联:可以在读取响应之前发送写入,并且可以在读取请求之前发送写入和读取响应。RapidIO使用数字优先级方案,最高优先级为3,最低优先级为0。较高优先级的数据包可以先于较低优先级的数据包发送。PCI事务映射到RapidIO优先级,如下所示:

PCI写入– RapidIO优先级2

PCI读取响应– RapidIO优先级1

PCI读取请求– RapidIO优先级0

PCI / RapidIO优先级映射保留了避免死锁所必需的PCI重新排序。

重新排序的副作用是,在拥塞情况下,较高优先级事务的低速率可能会饿死较低优先级的数据包。如图1所示,当较高优先级的事务完成时,它们将释放只能由其他较高优先级的事务占用的缓冲区。在最左侧,缓冲区已完全满,并且高优先级数据包正在传输到RapidIO。在中间,另一个高优先级数据包被传送到RapidIO,而新的高优先级数据包则被接收到上一步清空的缓冲区中。在最右边,再次仅发送和接收高优先级数据包。“乒乓”行为会导致优先级较低的数据包匮乏。

pIYBAGCvS8eAfymkAAFJPmUeAvk432.png

缓冲区管理–高和低优先级数据包

基本机制

Tsi620中的串行RapidIO端点(SREP)根据优先级分配缓冲区空间。水印是缓冲区填充级别,用于确定可将多少个缓冲区用于给定优先级及更高级别的数据包。图2显示了如何为不同的RapidIO数据包优先级和不同类型的PCI事务分配缓冲区。请注意,PCI事务具有三个优先级,而RapidIO数据包具有四个优先级。

o4YBAGCvS9KAEnHPAAFR1jgx3Q8916.png

I2R和R2I水印

Tsi620 BRM功能强制完成多个交易,然后再接受更多交易。这会造成暂时的无拥塞情况,从而防止了重新排序行为。BRM功能基于两个缓冲区填充级别设置,称为STOP和RESUME(请参见图3)。

pIYBAGCvS9yAJrXEAAFwPIyjF74278.png

BRM恢复和停止级别与水印的关系

当缓冲区填充水平达到STOP点时,SREP停止将已完成事务释放的缓冲区通知桥ISF /交换ISF(请参见图4)。网桥ISF /交换机ISF停止转发数据包,并且缓冲区填充级别最终下降到RESUME点。因为STOP设置在高优先级数据包的水印之上,而RESUME设置在低优先级数据包的水印之下,所以当缓冲区填充水平从STOP点下降到RESUME点时,所有优先级的数据包都可以向前转发。

一旦到达RESUME点,就会将实际的缓冲区填充级别通知给桥ISF /交换机ISF,所有优先级的数据包都可以开始流入缓冲区。由于RESUME点位于低优先级数据包的水印之下,并且现在有许多缓冲区可用,因此所有优先级的数据包都可以流入缓冲区。结果,这种缓冲机制有助于防止基于优先级的饥饿。

o4YBAGCvS-iAOUUqAAGeEIZYoaY750.png

缓冲区释放管理操作

在极少数流量情况下,BRM机制可能会通过阻止完成未完成交易所需的更高优先级数据包的转发进程而导致死锁。为避免死锁,BRM将最大时间设置为STOP状态。一旦超时到期,就可以选择两种可能的行为:

在达到RESUME值之前,请勿使用BRM-这将禁用BRM,直到不再存在拥塞情况为止。当拥塞时间很短和/或出现死锁的可能性很高时,这是首选的操作模式。这会导致长时间的基于优先级的饥饿,但是会避免由于BRM而导致长时间不转发任何数据包的情况。

如果再次达到STOP级别,请重新接合BRM。这是当拥塞时间较长且死锁的可能性较低时的首选操作模式。这样就避免了基于优先级的饥饿,这是以较长的时间为代价的,即死锁发生时不会转发任何数据包。

编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • RapidIO
    +关注

    关注

    1

    文章

    39

    浏览量

    20806
  • PCI
    PCI
    +关注

    关注

    4

    文章

    663

    浏览量

    130242
  • 数据包
    +关注

    关注

    0

    文章

    260

    浏览量

    24384
收藏 人收藏

    评论

    相关推荐

    缓冲区溢出的危害及避免缓冲区溢出的三种方法

    1. 蠕虫病毒简介2. 缓冲区溢出3. 缓冲区溢出举例4. 缓冲区溢出的危害5. 内存在计算机中的排布方式6. 计算机中越界访问的后果7. 避免缓冲
    发表于 03-02 07:55

    缓冲区溢出的危害及避免缓冲区溢出的三种方法

    1. 蠕虫病毒简介2. 缓冲区溢出3. 缓冲区溢出举例4. 缓冲区溢出的危害5. 内存在计算机中的排布方式6. 计算机中越界访问的后果7. 避免缓冲
    发表于 03-30 14:01

    基于状态图的缓冲区溢出攻击分析

    结合缓冲区溢出攻击产生的原理,分析缓冲区溢出攻击代码的结构,论述Snort规则对缓冲区溢出攻击的检测,在此基础上构建一个基于状态图的缓冲区溢出攻击的分析模型。该模型对
    发表于 04-10 08:46 32次下载

    清除键盘缓冲区原理

    清除键盘缓冲区原理 有时用户的按键响应可能导致数据丢失破坏了数据而不能挽回。在这种情况下,消除缓
    发表于 06-12 23:07 2087次阅读

    环形缓冲区的实现原理

    在通信程序中,经常使用环形缓冲区作为数据结构来存放通信中发送和接收的数据。环形缓冲区是一个先进先出的循环缓冲区,可以向通信程序提供对缓冲区的互斥访问。
    的头像 发表于 03-22 10:03 7523次阅读
    环形<b class='flag-5'>缓冲区</b>的实现原理

    缓冲区是啥意思 STM32串口数据接收之环形缓冲区

    缓冲区顾名思义是缓冲数据用的。实现缓冲区最简单的办法时,定义多个数组,接收一包数据到数组A,就把接收数据的地址换成数组B,每个数据有个标记字节用于表示这个数组是否收到数据,收到数据是否处理
    的头像 发表于 07-22 15:33 1.1w次阅读

    STM32串口数据接收 --环形缓冲区

    STM32串口数据接收 --环形缓冲区环形缓冲区简介  在单片机中串口通信是我们使用最频繁的,使用串口通信就会用到串口的数据接收与发送,环形缓冲区方式接收数据可以更好的保证数据丢帧率第。  在通信
    发表于 12-28 19:24 30次下载
    STM32串口数据接收 --环形<b class='flag-5'>缓冲区</b>

    什么是缓冲区?有什么作用

    缓冲区其实就是一个存储区域,它是由专门的硬件寄存器所组成的。
    的头像 发表于 02-02 09:57 2.6w次阅读

    环形缓冲区的实现思路

    单片机程序开发一般都会用到UART串口通信,通过通信来实现上位机和单片机程序的数据交互。通信中为了实现正常的收发,一般都会有对应的发送和接收缓存来暂存通信数据。这里使用环形缓冲区的方式来设计数据收发的缓存,即缓冲区溢出后,从缓冲区
    的头像 发表于 01-17 15:07 1625次阅读

    Tsi620 评估板 User 手册

    Tsi620 评估板 User 手册
    发表于 04-20 18:41 0次下载
    <b class='flag-5'>Tsi620</b> 评估板 User 手册

    Tsi620 评估板 原理图s

    Tsi620 评估板 原理图s
    发表于 04-20 18:41 0次下载
    <b class='flag-5'>Tsi620</b> 评估板 原理图s

    Tsi620 User 手册

    Tsi620 User 手册
    发表于 05-15 19:42 0次下载
    <b class='flag-5'>Tsi620</b> User 手册

    Tsi620 User 手册

    Tsi620 User 手册
    发表于 07-12 18:34 0次下载
    <b class='flag-5'>Tsi620</b> User 手册

    C++环形缓冲区设计与实现

    的存储空间。环形缓冲区的特点是其终点和起点是相连的,形成一个环状结构。这种数据结构在处理流数据和实现数据缓存等场景中具有广泛的应用。 环形缓冲区的主要作用是存储和管理数据
    的头像 发表于 11-09 11:21 2005次阅读
    C++环形<b class='flag-5'>缓冲区</b>设计与实现

    交换芯片缓冲区大小是什么

    交换芯片缓冲区大小并不一定是固定的。缓冲区的设计和实现会根据芯片的具体型号、规格以及应用场景的不同而有所差异。一些交换芯片可能具有固定大小的缓冲区,以满足特定的性能需求成本
    的头像 发表于 03-18 14:42 612次阅读