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