本文檔介紹了稱為“橋緩沖區(qū)釋放管理(BRM)”的Tsi620功能如何避免或限制擁塞情況下可能發(fā)生的基于優(yōu)先級的饑餓。
Tsi620緩沖區(qū)釋放管理
在基于優(yōu)先級的協(xié)議中,需要重新排序以避免死鎖情況。當緩沖區(qū)被無法向前處理的事務占用時,就會發(fā)生死鎖。重新排序通過允許較高優(yōu)先級的事務在較低優(yōu)先級的事務之前完成來幫助防止死鎖情況。
RapidIO和PCI都允許基于優(yōu)先級對事務進行重新排序。使用PCI協(xié)議,優(yōu)先級與事務類型相關聯(lián):可以在讀取響應之前發(fā)送寫入,并且可以在讀取請求之前發(fā)送寫入和讀取響應。RapidIO使用數(shù)字優(yōu)先級方案,最高優(yōu)先級為3,最低優(yōu)先級為0。較高優(yōu)先級的數(shù)據(jù)包可以先于較低優(yōu)先級的數(shù)據(jù)包發(fā)送。PCI事務映射到RapidIO優(yōu)先級,如下所示:
PCI寫入– RapidIO優(yōu)先級2
PCI讀取響應– RapidIO優(yōu)先級1
PCI讀取請求– RapidIO優(yōu)先級0
PCI / RapidIO優(yōu)先級映射保留了避免死鎖所必需的PCI重新排序。
重新排序的副作用是,在擁塞情況下,較高優(yōu)先級事務的低速率可能會餓死較低優(yōu)先級的數(shù)據(jù)包。如圖1所示,當較高優(yōu)先級的事務完成時,它們將釋放只能由其他較高優(yōu)先級的事務占用的緩沖區(qū)。在最左側(cè),緩沖區(qū)已完全滿,并且高優(yōu)先級數(shù)據(jù)包正在傳輸?shù)絉apidIO。在中間,另一個高優(yōu)先級數(shù)據(jù)包被傳送到RapidIO,而新的高優(yōu)先級數(shù)據(jù)包則被接收到上一步清空的緩沖區(qū)中。在最右邊,再次僅發(fā)送和接收高優(yōu)先級數(shù)據(jù)包?!捌古摇毙袨闀е聝?yōu)先級較低的數(shù)據(jù)包匱乏。
緩沖區(qū)管理–高和低優(yōu)先級數(shù)據(jù)包
基本機制
Tsi620中的串行RapidIO端點(SREP)根據(jù)優(yōu)先級分配緩沖區(qū)空間。水印是緩沖區(qū)填充級別,用于確定可將多少個緩沖區(qū)用于給定優(yōu)先級及更高級別的數(shù)據(jù)包。圖2顯示了如何為不同的RapidIO數(shù)據(jù)包優(yōu)先級和不同類型的PCI事務分配緩沖區(qū)。請注意,PCI事務具有三個優(yōu)先級,而RapidIO數(shù)據(jù)包具有四個優(yōu)先級。
I2R和R2I水印
Tsi620 BRM功能強制完成多個交易,然后再接受更多交易。這會造成暫時的無擁塞情況,從而防止了重新排序行為。BRM功能基于兩個緩沖區(qū)填充級別設置,稱為STOP和RESUME(請參見圖3)。
BRM恢復和停止級別與水印的關系
當緩沖區(qū)填充水平達到STOP點時,SREP停止將已完成事務釋放的緩沖區(qū)通知橋ISF /交換ISF(請參見圖4)。網(wǎng)橋ISF /交換機ISF停止轉(zhuǎn)發(fā)數(shù)據(jù)包,并且緩沖區(qū)填充級別最終下降到RESUME點。因為STOP設置在高優(yōu)先級數(shù)據(jù)包的水印之上,而RESUME設置在低優(yōu)先級數(shù)據(jù)包的水印之下,所以當緩沖區(qū)填充水平從STOP點下降到RESUME點時,所有優(yōu)先級的數(shù)據(jù)包都可以向前轉(zhuǎn)發(fā)。
一旦到達RESUME點,就會將實際的緩沖區(qū)填充級別通知給橋ISF /交換機ISF,所有優(yōu)先級的數(shù)據(jù)包都可以開始流入緩沖區(qū)。由于RESUME點位于低優(yōu)先級數(shù)據(jù)包的水印之下,并且現(xiàn)在有許多緩沖區(qū)可用,因此所有優(yōu)先級的數(shù)據(jù)包都可以流入緩沖區(qū)。結(jié)果,這種緩沖機制有助于防止基于優(yōu)先級的饑餓。
緩沖區(qū)釋放管理操作
在極少數(shù)流量情況下,BRM機制可能會通過阻止完成未完成交易所需的更高優(yōu)先級數(shù)據(jù)包的轉(zhuǎn)發(fā)進程而導致死鎖。為避免死鎖,BRM將最大時間設置為STOP狀態(tài)。一旦超時到期,就可以選擇兩種可能的行為:
在達到RESUME值之前,請勿使用BRM-這將禁用BRM,直到不再存在擁塞情況為止。當擁塞時間很短和/或出現(xiàn)死鎖的可能性很高時,這是首選的操作模式。這會導致長時間的基于優(yōu)先級的饑餓,但是會避免由于BRM而導致長時間不轉(zhuǎn)發(fā)任何數(shù)據(jù)包的情況。
如果再次達到STOP級別,請重新接合BRM。這是當擁塞時間較長且死鎖的可能性較低時的首選操作模式。這樣就避免了基于優(yōu)先級的饑餓,這是以較長的時間為代價的,即死鎖發(fā)生時不會轉(zhuǎn)發(fā)任何數(shù)據(jù)包。
編輯:hfy
-
RapidIO
+關注
關注
1文章
41瀏覽量
21370 -
PCI
+關注
關注
5文章
683瀏覽量
133271 -
數(shù)據(jù)包
+關注
關注
0文章
269瀏覽量
25282
發(fā)布評論請先 登錄
移植的lvgl,在運行的時候,緩沖區(qū)無法釋放怎么解決?
緩沖區(qū)溢出的危害及避免緩沖區(qū)溢出的三種方法
緩沖區(qū)溢出的危害及避免緩沖區(qū)溢出的三種方法
基于狀態(tài)圖的緩沖區(qū)溢出攻擊分析
清除鍵盤緩沖區(qū)原理
環(huán)形緩沖區(qū)的實現(xiàn)原理

緩沖區(qū)是啥意思 STM32串口數(shù)據(jù)接收之環(huán)形緩沖區(qū)
STM32串口數(shù)據(jù)接收 --環(huán)形緩沖區(qū)

C++環(huán)形緩沖區(qū)設計與實現(xiàn)

交換芯片緩沖區(qū)大小是什么
RTOS的流緩沖區(qū)機制解析

評論