本文档介绍了称为“桥缓冲区释放管理(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,而新的高优先级数据包则被接收到上一步清空的缓冲区中。在最右边,再次仅发送和接收高优先级数据包。“乒乓”行为会导致优先级较低的数据包匮乏。
缓冲区管理–高和低优先级数据包
基本机制
Tsi620中的串行RapidIO端点(SREP)根据优先级分配缓冲区空间。水印是缓冲区填充级别,用于确定可将多少个缓冲区用于给定优先级及更高级别的数据包。图2显示了如何为不同的RapidIO数据包优先级和不同类型的PCI事务分配缓冲区。请注意,PCI事务具有三个优先级,而RapidIO数据包具有四个优先级。
I2R和R2I水印
Tsi620 BRM功能强制完成多个交易,然后再接受更多交易。这会造成暂时的无拥塞情况,从而防止了重新排序行为。BRM功能基于两个缓冲区填充级别设置,称为STOP和RESUME(请参见图3)。
BRM恢复和停止级别与水印的关系
当缓冲区填充水平达到STOP点时,SREP停止将已完成事务释放的缓冲区通知桥ISF /交换ISF(请参见图4)。网桥ISF /交换机ISF停止转发数据包,并且缓冲区填充级别最终下降到RESUME点。因为STOP设置在高优先级数据包的水印之上,而RESUME设置在低优先级数据包的水印之下,所以当缓冲区填充水平从STOP点下降到RESUME点时,所有优先级的数据包都可以向前转发。
一旦到达RESUME点,就会将实际的缓冲区填充级别通知给桥ISF /交换机ISF,所有优先级的数据包都可以开始流入缓冲区。由于RESUME点位于低优先级数据包的水印之下,并且现在有许多缓冲区可用,因此所有优先级的数据包都可以流入缓冲区。结果,这种缓冲机制有助于防止基于优先级的饥饿。
缓冲区释放管理操作
在极少数流量情况下,BRM机制可能会通过阻止完成未完成交易所需的更高优先级数据包的转发进程而导致死锁。为避免死锁,BRM将最大时间设置为STOP状态。一旦超时到期,就可以选择两种可能的行为:
在达到RESUME值之前,请勿使用BRM-这将禁用BRM,直到不再存在拥塞情况为止。当拥塞时间很短和/或出现死锁的可能性很高时,这是首选的操作模式。这会导致长时间的基于优先级的饥饿,但是会避免由于BRM而导致长时间不转发任何数据包的情况。
如果再次达到STOP级别,请重新接合BRM。这是当拥塞时间较长且死锁的可能性较低时的首选操作模式。这样就避免了基于优先级的饥饿,这是以较长的时间为代价的,即死锁发生时不会转发任何数据包。
编辑:hfy
全部0条评论
快来发表一下你的评论吧 !