1、流控機(jī)制
在數(shù)據(jù)發(fā)送過(guò)程中,發(fā)送者向接收者發(fā)送數(shù)據(jù),通常需要接收者通知發(fā)送者自身是否可以接收數(shù)據(jù),當(dāng)接收者即將無(wú)法接收數(shù)據(jù)時(shí)(如FIFO快滿時(shí)),發(fā)送者需要停止發(fā)送數(shù)據(jù),這就是流控機(jī)制。
2、流控機(jī)制過(guò)程
初始化流程:
- 復(fù)位釋放后,初始化,module b 通過(guò)信號(hào)fc_update_signal 通知module a 自身fifo深度是多少。
fc_update_signal一個(gè)周期的高電平表示存在一個(gè)存儲(chǔ)深度。 - Tx_fc_ctrl 收到初始化信息后,得知module b存在有效fifo 緩存,通知ren_ctrl允許產(chǎn)生讀使能ren
- ren_ctrl產(chǎn)生讀使能ren
- ren輸出給tx_fc_ctrl,module b的有效fifo深度減一
- tx_fc_ctrl計(jì)算module b是否存在有效數(shù)據(jù),有則允許ren_ctrl產(chǎn)生讀使能
- ren_ctrl產(chǎn)生讀使能ren,并通知到tx_fc_ctrl,module b的有效fifo深度減一
- tx_fc_ctrl計(jì)算module b是否存在有效數(shù)據(jù),有則允許ren_ctrl產(chǎn)生讀使能,沒有則不允許ren_ctrl產(chǎn)生讀使能
a. Module b模塊fifo已存在有效數(shù)據(jù),從fifo讀取一個(gè)數(shù)據(jù),此時(shí)已釋放出一個(gè)fifo深度
b. Fc_update更新fc_update_signal,通知tx_fc_ctrl模塊module b已釋放一個(gè)fifo空間,tx_fc_ctrl記錄的有效深度加1
c. 此時(shí)tx_fc_ctrl允許ren_ctrl產(chǎn)生讀使能
3、優(yōu)缺點(diǎn)比較
此種流控機(jī)制需要發(fā)送端和接收端配合管理有效緩存空間。相對(duì)比單一bit的flow ctrl信號(hào)來(lái)說(shuō),稍微復(fù)雜一些,但是有個(gè)顯著的優(yōu)點(diǎn),相對(duì)于簡(jiǎn)單的fc流控,能夠有效減少module b中的Data fifo的深度。
如圖所示,data pipeline的深度是不確定的,可能是20~100個(gè)周期,而流控信號(hào)只有4個(gè)pipe,在考慮其他方面的延時(shí)有3拍,
不考慮性能的情況下:保證不溢出 ,module b的fifo深度最小只需要1:而單純的fc信號(hào)流控需要的深度為1+100+4+3。
滿足最大性能的情況下,保證下游不斷流:module b的fifo深度需要:本文流控機(jī)制:100+4+3+1 ; 而單純的fc信號(hào)流控需要的深度:2 * (100+4+3+1)
-
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7636瀏覽量
166448 -
接收機(jī)
+關(guān)注
關(guān)注
8文章
1218瀏覽量
54235 -
Module
+關(guān)注
關(guān)注
0文章
72瀏覽量
13173 -
FIFO存儲(chǔ)
+關(guān)注
關(guān)注
0文章
103瀏覽量
6148
發(fā)布評(píng)論請(qǐng)先 登錄
評(píng)論