一種基于UCIE的重傳緩存系統(tǒng)
技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及數(shù)據(jù)緩存技術(shù)領(lǐng)域,具體是一種基于UCIE的重傳緩存系統(tǒng)。
背景技術(shù)
[0002] UCIE(Universal?Chiplet?Interconnect?Express,智能交換能力的緩存系統(tǒng))在適配層與協(xié)議層和物理層協(xié)同工作,支持多種數(shù)據(jù)傳輸格式,具體到Flit?Size,它支持68B和256B兩種尺寸。適配層的作用是確保數(shù)據(jù)的可靠傳輸,其中包括重傳功能,以應(yīng)對數(shù)據(jù)傳輸過程中可能出現(xiàn)的錯誤或丟失。
[0003] 然而,盡管UCIE標(biāo)準(zhǔn)定義了數(shù)據(jù)傳輸?shù)膮f(xié)議和要求,業(yè)界在適配層的具體緩存結(jié)構(gòu)實現(xiàn)上并沒有統(tǒng)一的解決方案。在芯片設(shè)計領(lǐng)域,設(shè)計者追求的是低功耗和低面積的實現(xiàn),但在適配兩種不同F(xiàn)lit?Size的緩存設(shè)計時,如何獲得一個既通用又能降低面積和功耗的存儲結(jié)構(gòu),是一個亟待解決的問題。按照UCIE協(xié)議,當(dāng)接收到協(xié)議層發(fā)出的64B?Flit時,需要在數(shù)據(jù)包的頭部添加2B的Header、尾部添加2B的循環(huán)冗余校驗,并按照68B對齊后發(fā)送,在存儲結(jié)構(gòu)的選擇上,可以將68B和256B兩種模式在64B粒度下進(jìn)行對齊,這種存儲結(jié)構(gòu)雖然簡單易行,但這并不是最優(yōu)的解決方案。
發(fā)明內(nèi)容
[0004] 本發(fā)明的目的在于提供一種基于UCIE的重傳緩存系統(tǒng),通過UCIE適配層的兼容兩種不同格式的數(shù)據(jù)傳輸及存儲模塊的結(jié)構(gòu),通過引入buffer寫穿功能,解決了現(xiàn)有技術(shù)中存在的緩存結(jié)構(gòu)不具體、資源利用不足和數(shù)據(jù)傳輸延時等問題。
[0005] 本發(fā)明的目的可以通過以下技術(shù)方案實現(xiàn):
[0006] 本申請?zhí)峁┝艘环N基于UCIE的重傳緩存系統(tǒng),包括數(shù)據(jù)接收模塊、映射模塊、指針管理模塊、直寫緩沖模塊和數(shù)據(jù)傳輸及存儲模塊,
[0007] 所述數(shù)據(jù)接收模塊,用于接收來自協(xié)議層的數(shù)據(jù);
[0008] 所述映射模塊,用于將寫指針按當(dāng)前模式轉(zhuǎn)換到存儲矩陣的對應(yīng)地址中,并在數(shù)據(jù)傳送時提供存儲矩陣中的對應(yīng)數(shù)據(jù)地址;
[0009] 所述指針管理模塊,用于存儲更新后的寫指針和讀指針;
[0010] 所述直寫緩沖模塊,用于當(dāng)數(shù)據(jù)Flit首次到達(dá)或者所述存儲矩陣為空時,允許數(shù)據(jù)寫入buffer中,所述buffer由讀寫的存儲構(gòu)成,并且所述直寫緩沖模塊還用于同步更新所述指針管理模塊;
[0011] 所述數(shù)據(jù)傳輸及存儲模塊,所述數(shù)據(jù)傳輸及存儲模塊用于根據(jù)所述映射模塊提供的數(shù)據(jù)地址從所述存儲矩陣獲取數(shù)據(jù),并向所述協(xié)議層輸出所述數(shù)據(jù);
[0012] 其中,所述存儲矩陣采用M×N粒度。
[0013] 進(jìn)一步的,還包括:緩存管理和重傳機制,用于利用所述映射模塊和所述指針管理模塊進(jìn)行讀寫管理,或者在需要時進(jìn)行數(shù)據(jù)的重傳。
[0014] 進(jìn)一步地,所述數(shù)據(jù)接收模塊在接收來自協(xié)議層的數(shù)據(jù)時,通過令牌桶算法限制數(shù)據(jù)包的傳輸速率來控制數(shù)據(jù)流,具體內(nèi)容包括:
[0015] 初始化令牌桶參數(shù),在每個時間間隔,根據(jù)令牌添加速率向令牌桶中添加令牌;
[0016] 當(dāng)數(shù)據(jù)包到達(dá)令牌桶時,檢查令牌桶中是否有足夠的令牌,當(dāng)有足夠的令牌,從桶中移除相應(yīng)數(shù)量的令牌,再接收并處理數(shù)據(jù)包;
[0017] 令牌桶中的令牌不足,則發(fā)送一個信號給發(fā)送方,請求其降低發(fā)送速率;
[0018] 在每個時間間隔,對令牌桶中的令牌數(shù)量進(jìn)行更新,添加新的令牌并消耗令牌;
[0019] 所述添加新的令牌具體表示為: ,
[0020] 其中, 是更新后的令牌數(shù)量, 是當(dāng)前的令牌數(shù)量, 是令牌添加速率, 是桶的容量, 表示每個時間間隔。
[0021] 進(jìn)一步的,所述存儲矩陣的深度為 ,其中N的值為大于等于0的整數(shù),存儲矩陣的寬度為16B或32B。
[0022] 進(jìn)一步的,所述映射模塊還用于:當(dāng)所述數(shù)據(jù)Flit的長度為68B時,所述存儲矩陣的寬度設(shè)置為16B,所述存儲矩陣的深度設(shè)置為 ,其中N為整數(shù);當(dāng)所述數(shù)據(jù)Flit的長度為256B時,所述存儲矩陣的寬度設(shè)置為32B,所述存儲矩陣的深度設(shè)置為 。
[0023] 進(jìn)一步地,根據(jù)實時的數(shù)據(jù)流量和數(shù)據(jù)負(fù)載,通過自適應(yīng)存儲矩陣調(diào)整算法動態(tài)調(diào)整存儲矩陣的寬度和深度,具體包括:
[0024] 監(jiān)測數(shù)據(jù)接收模塊的數(shù)據(jù)流量和負(fù)載情況;
[0025] 根據(jù)監(jiān)測數(shù)據(jù),計算儲存矩陣所需的寬度和深度;
[0026] 當(dāng)計算出的寬度和深度與當(dāng)前存儲矩陣的配置不匹配時,則需重新映射數(shù)據(jù)到新的存儲位置,并更新寫指針和讀指針的管理策略。
[0027] 進(jìn)一步的,所述映射模塊還用于:當(dāng)所述數(shù)據(jù)Flit的長度為68B時,所述存儲矩陣的第一列存儲數(shù)據(jù)Flit的Header信息,所述第一列為存儲矩陣最左側(cè)的一列;當(dāng)所述數(shù)據(jù)Flit的長度為256B時,所述存儲矩陣的第二列存儲數(shù)據(jù)Flit的CRC信息,所述第二列緊鄰所述第一列的一列。