• 沒有找到結果。

最佳化線性管線

第二章 相關文獻

2.2 管線

2.2.3 最佳化線性管線

2007 年,Weirong Jiang et al.[13]也設計了一種可以平衡記憶體的結構,最佳化 線性管線(Optimized Linear Pipeline,簡稱 OLP)。

根據圖2.15(a)的路由表來建立圖 2.15(b)的樹狀結構,在此樹狀結構中每個字首 節點皆由圖2.15(b)的淺藍色節點來代表,將此樹狀結構做 leaf pushing[8],如圖 2.15(c) 所示,圖2.16 的 OLP 結構就是根據圖 2.15(c)的樹狀來建立的。

若有需檢視的IP Address 來拜訪此二元樹,則會根據位元值來判斷向左走或是 向右走,若位元值為0 就往左走,若是為 1 則往右走,直到找到符合此位址的最長 字首匹配。

圖 2. 15 (a)字首組 (b)Uni-bit 樹 (c) leaf-pushed 樹[13]

隨意環狀管線與CAMP 的方法,一開始都是將樹分隔成若干個子樹,然後放到 管線中不同的 stage,在管線中做處理時,沒有限制各個子樹從哪個 stage 開始,因

此,使用管線來做IP Address 比對時,會有多個不同進入 stage 的點,且會引起管線 中存取的碰撞與降低處理量,所以,在 OLP 的方法中會限制各個子樹皆從第一個 stage 開始處理,這樣,只會有一個進入管線的點。

在CAMP 中,階層與管線 stage 的關係為子樹中相同的階層會對應到管線中相 同的stage,相較之下,OLP 允許子樹相同的階層,其節點對應到不同的管線,這樣 的設計也較為自由。舉例來說,圖2.16(a)節點 P1 和節點 P2 都處於子樹內相同的階 層,但在圖2.16(c)中,其節點 P2 對應的是 stage 2 而 P1 對應的是 stage 5,此分配 方式是為了使管線中每個stage 使用近似等量的記憶體。

圖 2. 16 OLP 結構[13]

參考圖2.16 搭配表 2.4 的演算法來說明。這裡因為管線 stage 的數量為 5,因此 P=5,圖 2.16(a)的樹狀結構是採用圖 2.15(c)的 leaf-pushed 樹。注意,在圖 2.16(a) 中有簡化一個階層,且用2-bits 的字首來表示,因此其樹高實際上是為 5。

根據表2.4 對照圖 2.16(c),若這裡 I=1,展開其字首會獲得 2 棵子樹,考慮到 各棵子樹皆從第一個stage 進入,那麼在 stage 1 中會配有 2 個節點,接下來從 stage 2 到 stage 5 會分配到 16 個節點(4 個節點×4 個 stages),以這樣來看,管線內 stages 的處理量並不均衡,因為至少會有某一stage 處理的量是 stage 1 的兩倍。

假如I=2,那個將會獲得 4 棵子樹,以圖 2.16(a)為例,考慮到各棵子樹皆從第 一個stage 進入,那麼在 stage 1 中會配有 4 個節點,在將剩下的節點平均分配給 stage 2 到 stage 5,則 12 個節點/4 個 stages 等於平均每個 stage 有 3 個節點。

根據表2.4,I←max[1, H(T)–P],其中 P=5、H(T)=3,因此 I←max[1, 5-3],所 以回傳I=2,且其值較 I=1 更能使管線平衡。

表 2. 4 決定初始發展的值[13]

Input: T, P I: value of the initial stride which is used for prefix expansion;

Output: I P: number of pipeline stages;

I ← max[1,H(T) − P] ; T: the original leaf-pushed uni-bit trie;

while true do T’: the new trie after using I to expand prefixes in T;

use I to expand prefixes in T, and get T’; N(t): total number of nodes in trie t;

因此分配方式為stage 2、stage 3、stage 4、stage5 先各有 2 個節點,最後剩餘的 3 則依序分給各個stage 各 1。

為了達到此目的,將佇列內的節點根據兩個規則放入管線的stage 中。

甲、佇列內節點數最多的優先,

乙、若佇列內的節點數相同,則放入的方式為佇列號碼由大到小。

下面將會依據圖2.16(b)來詳細說明。在三個佇列中,佇列內節點數最多的為 Q2,因此根據甲,Q2 的 f、P6 先放入 stage 2,因為 stage 2 已放了兩個位置,依順 序而言,第三個位置就放Q1 的 P2,這時 stage 2 已滿所以移動到 stage 3。

接著,因為甲,所以放入Q2 的 g、h,且 Q1 已放置過一次,因此輪到放入 Q3 的P7,同樣的因為 stage 3 已滿,所以移動到 stage 4。又根據甲,將 Q2 的 P3、P4 放入stage 4 中,此時各個佇列所擁有的節點數皆為 1,因此根據乙,由佇列號碼最 大的放起,因此這裡將Q3 的 P8 放入 stage 4 中。最後,剩下 Q5 的 P5 和 Q1 的 P1,

則放入stage 5 中,最後結果便會如圖 2.16(c)所示。

相關文件