摘要:通信工程師交換技術(shù)MDQF-MMA算法:定義7.3滿足條件的隊列是指該隊列的DRAM部分或SRAM虐部中至少存有b字節(jié)的數(shù)據(jù),同時在SRAM頭部至少有6字節(jié)的空閑存儲空間。
1.MDQF-MMA算法
定義7.1容量計數(shù)值i,t)表示時刻t在隊列i的SRAM頭部中存放的字節(jié)數(shù)。
定義7.2虧空值D(i,t)表示調(diào)度器向隊列發(fā)出請求后,在時刻t尚未被讀到隊列的SRAM頭部中去的字節(jié)數(shù)。如果隊列的SRAM頭部中存有數(shù)據(jù),則=w-X(i,t),否則=w。
定義7.3滿足條件的隊列是指該隊列的DRAM部分或SRAM虐部中至少存有b字節(jié)的數(shù)據(jù),同時在SRAM頭部至少有6字節(jié)的空閑存儲空間。
MDQF-MMA算法規(guī)定:每隔6個時隙(一個時隙是指線卡輸出一個字節(jié)數(shù)據(jù)所需的時間),從所有滿足條件的隊列中選擇具有最大虧空值的隊列進行刷新。
對于MDQF-MMA算法而言,最重要的是確定SRAM的大小。每當一個隊列的SRAM頭部輸出數(shù)據(jù)后,就得在一定時間內(nèi)得到刷新,確保下次調(diào)度器請求輸出數(shù)據(jù)時已經(jīng)有字節(jié)存在SRAM隊列的頭部中。由于SRAM與DRAM之間的數(shù)據(jù)交互是以b個字節(jié)為單位進行的,而SRAM接收調(diào)度器的請求,向線卡輸出數(shù)據(jù)是以1個字節(jié)為單位的,因此刷新不一定在SRAM中的數(shù)據(jù)輸出后就立即進行。而且由于可能有多個隊列同時要求刷新,而刷新的間隔為6個時隙,因此SRAM中的每一個隊列頭部都要有一定的深度,以防SRAM中隊列頭部沒有得到及時刷新,在需要往線卡輸出數(shù)據(jù)時SRAM中沒有存儲相應(yīng)的數(shù)據(jù)。研究結(jié)果表明,在MDQF-MMA算法決定的刷新策略下,用于所有隊列頭部的SRAM緩存容童之和不小于(xfcx(3+ln)時就可以確保每次線卡要輸出的數(shù)據(jù)都已經(jīng)在SRAM中。
在MDQF-MMA算法中,由于SRAM預先不知道調(diào)度器會請求哪些隊列的數(shù)據(jù)輸出,因此一旦任何一個SRAM隊列頭部輸出了數(shù)據(jù)后,就需要安排為該隊列刷新,以儲備數(shù)據(jù)等待將來的輸出。如果能夠預先知道調(diào)度器將請求哪些隊列的數(shù)據(jù),就可以只儲備這些隊列的數(shù)據(jù)。顯然,如果能夠預知調(diào)度請求,就可以減小SRAM的緩存容童。而且能夠預知的調(diào)度請求越多,越有利于減小SRAM的容童。
如何預知或提前知道調(diào)度請求呢?最簡單的做法是一開始有調(diào)度請求時先不從SRAM中輸出數(shù)據(jù),在積累一定數(shù)量的請求后再依次按照請求從SRAM中輸出數(shù)據(jù)。很顯然,這樣做以后每個數(shù)據(jù)的實際輸出時刻就與請求的到達時刻有一個固有的時延,這個時延取決于積累的請求數(shù)量。在提前知道調(diào)度請求的條件下,有兩類MMA算法,分別為MDQFP-MMA算法和ECQF-MMA算法。
2.MDQFP-MMA算法
定義7.4預知隊列(lookahead)調(diào)度器向隊列發(fā)出請求,但與這些請求對應(yīng)的數(shù)據(jù)在SRAM中可能未被輸出。這些沒有得到響應(yīng)的請求組成的隊列稱為預知隊列。圖7-40所示為預知隊列的例子。
由于有了預知隊列,可以知道W些隊列最需要刷新,因此,在緩存管理上,可以采用共享緩存管理辦法。所以圖7-41所示的SRAM由各個隊列所共享的,預知隊列中嘿個隊列的請求多,在SRAM中存儲的該隊列的數(shù)據(jù)也就多。這就比靜態(tài)緩存管理,即每個隊列在SRAM中隊列長度是固定的更靈活,更能有效地利用緩存。需要說明的是,前面兩種算法要計算每個隊列的虧空值,因此需要依靠靜態(tài)緩存管理。ECQF-MMA算法不需要計算虧空值,可以采用共享緩存管理。此時ECQF-MMA需要的所有隊列頭部的緩存容量之和為0x(6-1)。表7-7對三種緩存管理算法的特性進行了總結(jié)。
可以看出,MDQF算法需要的緩存容量最大,但是數(shù)據(jù)輸出與輸出請求之間沒有時延,而ECQF算法通過時延換取了較低的緩存容童。另外,各種算法的緩存容量都與隊列數(shù)成正比。
返回目錄:
編輯推薦
通信專業(yè)實務(wù)考試終端與業(yè)務(wù)教程匯總
通信工程師備考資料免費領(lǐng)取
去領(lǐng)取