摘要:通信工程師交換技術MDQF-MMA算法:定義7.3滿足條件的隊列是指該隊列的DRAM部分或SRAM虐部中至少存有b字節的數據,同時在SRAM頭部至少有6字節的空閑存儲空間。
1.MDQF-MMA算法
定義7.1容量計數值i,t)表示時刻t在隊列i的SRAM頭部中存放的字節數。
定義7.2虧空值D(i,t)表示調度器向隊列發出請求后,在時刻t尚未被讀到隊列的SRAM頭部中去的字節數。如果隊列的SRAM頭部中存有數據,則=w-X(i,t),否則=w。
定義7.3滿足條件的隊列是指該隊列的DRAM部分或SRAM虐部中至少存有b字節的數據,同時在SRAM頭部至少有6字節的空閑存儲空間。
MDQF-MMA算法規定:每隔6個時隙(一個時隙是指線卡輸出一個字節數據所需的時間),從所有滿足條件的隊列中選擇具有最大虧空值的隊列進行刷新。
對于MDQF-MMA算法而言,最重要的是確定SRAM的大小。每當一個隊列的SRAM頭部輸出數據后,就得在一定時間內得到刷新,確保下次調度器請求輸出數據時已經有字節存在SRAM隊列的頭部中。由于SRAM與DRAM之間的數據交互是以b個字節為單位進行的,而SRAM接收調度器的請求,向線卡輸出數據是以1個字節為單位的,因此刷新不一定在SRAM中的數據輸出后就立即進行。而且由于可能有多個隊列同時要求刷新,而刷新的間隔為6個時隙,因此SRAM中的每一個隊列頭部都要有一定的深度,以防SRAM中隊列頭部沒有得到及時刷新,在需要往線卡輸出數據時SRAM中沒有存儲相應的數據。研究結果表明,在MDQF-MMA算法決定的刷新策略下,用于所有隊列頭部的SRAM緩存容童之和不小于(xfcx(3+ln)時就可以確保每次線卡要輸出的數據都已經在SRAM中。
在MDQF-MMA算法中,由于SRAM預先不知道調度器會請求哪些隊列的數據輸出,因此一旦任何一個SRAM隊列頭部輸出了數據后,就需要安排為該隊列刷新,以儲備數據等待將來的輸出。如果能夠預先知道調度器將請求哪些隊列的數據,就可以只儲備這些隊列的數據。顯然,如果能夠預知調度請求,就可以減小SRAM的緩存容童。而且能夠預知的調度請求越多,越有利于減小SRAM的容童。
如何預知或提前知道調度請求呢?最簡單的做法是一開始有調度請求時先不從SRAM中輸出數據,在積累一定數量的請求后再依次按照請求從SRAM中輸出數據。很顯然,這樣做以后每個數據的實際輸出時刻就與請求的到達時刻有一個固有的時延,這個時延取決于積累的請求數量。在提前知道調度請求的條件下,有兩類MMA算法,分別為MDQFP-MMA算法和ECQF-MMA算法。
2.MDQFP-MMA算法
定義7.4預知隊列(lookahead)調度器向隊列發出請求,但與這些請求對應的數據在SRAM中可能未被輸出。這些沒有得到響應的請求組成的隊列稱為預知隊列。圖7-40所示為預知隊列的例子。

由于有了預知隊列,可以知道W些隊列最需要刷新,因此,在緩存管理上,可以采用共享緩存管理辦法。所以圖7-41所示的SRAM由各個隊列所共享的,預知隊列中嘿個隊列的請求多,在SRAM中存儲的該隊列的數據也就多。這就比靜態緩存管理,即每個隊列在SRAM中隊列長度是固定的更靈活,更能有效地利用緩存。需要說明的是,前面兩種算法要計算每個隊列的虧空值,因此需要依靠靜態緩存管理。ECQF-MMA算法不需要計算虧空值,可以采用共享緩存管理。此時ECQF-MMA需要的所有隊列頭部的緩存容量之和為0x(6-1)。表7-7對三種緩存管理算法的特性進行了總結。


可以看出,MDQF算法需要的緩存容量最大,但是數據輸出與輸出請求之間沒有時延,而ECQF算法通過時延換取了較低的緩存容童。另外,各種算法的緩存容量都與隊列數成正比。
返回目錄:
編輯推薦
通信工程師備考資料免費領取
去領取
專注在線職業教育25年