以管線為基礎之非循序式IPLookup機制
51
0
0
全文
(2) II .
(3) III .
(4) 摘要 在網際網路中如入侵偵測、駭客攻擊、系統滲透和阻斷服務攻擊等異常活動是常見的, 不管何者找出其攻擊來源是必要的,因此 IP Lookup 機制的比對速度很重要。在先前的研究 中,有些 IP Lookup 機制是以樹狀結構為基礎,並使用管線來加速其比對速度。在此本文提 出一種在樹狀結構上增加一些資訊以形成引線樹的方式,使用非循序式比對概念來實作 IP Lookup 機制。非循序式指的是在 IP Lookup 機制的比對上,並不是由最高位元依序檢查至最 低位元,而是可以不依 IP 位址的位元順序來作 IP Lookup 比對,不但讓記憶體保持平衡且更 有效的提高管線的使用,並減少管線內不必要的等待時間,造成時間成本上的浪費。 關鍵詞:管線,IP 查詢,引線樹,非循序式。. IV .
(5) Abstract In the internet, there are many anomalous activities including intrusion detection, hacker attack, system penetration and denial of service. No matter which one, it is necessary to find the malicious source, i.e., the speed of IP Lookup mechanism plays an important role. Some of the previous researches, based on tree structure, utilize pipeline to accelerate the matching process. In this thesis, we provide non-sequential mechanism concept which forms the threaded tree by increasing the extra information. The mechanism implements the IP Lookup according to the non-sequential order of IP address instead of the sequential order. It can reduce the waiting time to speed up the performance of pipeline. Keywords: Pipeline, IP Lookup, Threaded tree, Non- sequential.. V .
(6) 致謝 在這兩年的研究所生涯中,我最感謝的是我的指導老師,許良政博士,承蒙許良政博士 的教導與勉勵,無論是在生活方面或者是研究方向中,給我很大的協助與關懷,使得我可以 順利的完成本篇論文。研究期間,非常感謝碩士班的同學,尤其是阿典、雅君、嫻馨、宜偉、 阿男、小涂、麒宗、國龍、牧謙、以及傑哥,在我就學期間互相勉勵,也要感謝學長、學姐 們,寵凱學長、塔塔學姊的幫忙與教導,同時也要謝謝學弟、學妹們,偉程、偉峻、秋珊、 銘達、天華、橘子、小傑,在課業上的幫忙與切磋砥礪,也在生活中帶給我許多的歡笑。最 後,謹以本文獻給我最親愛的家人,因為有你們的支持與鼓勵,我才能夠專心努力的順利完 成學業與本篇論文的寫作。. 黃曉雯 謹誌 國立屏東商業技術學院資訊工程研究所 于 網路技術發展實驗室 中華民國九十九年七月二十七日星期二. VI .
(7) 目錄 摘要.................................................................................................................................................... IV Abstract ............................................................................................................................................... V 致謝.................................................................................................................................................... VI 目錄.................................................................................................................................................. VII 圖目錄............................................................................................................................................. VIII 表目錄................................................................................................................................................ IX 第一章 前言.................................................................................................................................... 10 第二章 相關文獻............................................................................................................................ 16 2.1 樹狀演算法 .......................................................................................................................... 16 2.2.1 以二元樹來表示IP字首 .......................................................................................... 17 2.2.2 Disjoint Prefix二元樹 ............................................................................................... 20 2.2.3 Path-Compressed Trie ............................................................................................... 21 2.2 管線 ...................................................................................................................................... 23 2.2.1 隨意環狀管線 .......................................................................................................... 25 2.2.2 CAMP ....................................................................................................................... 29 2.2.3 最佳化線性管線 ...................................................................................................... 32 第三章 非循序式的IP Lookup ....................................................................................................... 37 3.1 子樹結構 ..................................................................................................................... 38 3.2 管線結構 ..................................................................................................................... 41 第四章 效能評估............................................................................................................................ 47 第五章 結論與未來展望................................................................................................................ 49 參考文獻............................................................................................................................................ 50 . VII .
(8) 圖目錄 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖. 1. 1 個人曾經上網比例趨勢圖[1] ........................................................................... 10 1. 2 個人整體接觸網路時間趨勢圖[1] ................................................................... 11 1. 3 家庭可上網比例趨勢圖[1] ............................................................................... 11 1. 4 在每年 12 個月中,攻擊類型或濫用偵測的統計結果[2] ............................. 12 1. 5 最長字首匹配(Longest Matching Prefix)範例 ............................................... 14 2. 1 樹狀結構[6] ....................................................................................................... 17 2. 2 IP Address的結構[3] ........................................................................................ 17 2. 3 1-bit二元樹的資料結構[7] ............................................................................... 19 2. 4 Disjoint Prefix二元樹[7] .................................................................................. 21 2. 5 Path-Compressed Trie的範例[7] ..................................................................... 22 2. 6 N個葉節點的Path-Compressed Trie[7] .......................................................... 23 2. 7 非管線化的洗衣服[9] ....................................................................................... 24 2. 8 管線化之後的洗衣服[9] ................................................................................... 24 2. 9 基於樹狀搜尋結構,這棵樹有四棵子樹依序由S1 到S4,每棵子樹皆有四個 階層,將第i棵子樹的第j階稱之為 Sij [7] ................................................................ 26 . 圖 2. 10 隨意環狀管線架構[7] ..................................................................................... 26 圖 2. 11 隨意環狀管線的行經路線 .............................................................................. 29 圖 2. 12 (a) Uni-bit trie (b)Leaf-pushed trie (c)開頭 2-bits的索引表 (d)子樹的階層 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖 圖. [12, 13] ....................................................................................................................... 30 2. 13 4 個stage的圓狀管線,且是使用圖 2.12(d)的三棵子樹來做對應[12] ...... 31 2. 14 CAMP的結構[12] ........................................................................................... 31 2. 15 (a)字首組 (b)Uni-bit樹 (c) leaf-pushed樹[13] ............................................ 32 2. 16 OLP結構[13] ................................................................................................... 33 3. 1 子樹進入管線的順序[7] ................................................................................... 38 3. 2 引線樹(Threaded tree)節點結構[16] .............................................................. 40 3. 3 使用非循序式比對概念的子樹結構 ................................................................ 40 3. 4 非循序式比對概念的子樹結構應用在管線上................................................ 41 3. 5 非循序式比對概念的邏輯電路圖 .................................................................... 46 4. 1 以處理 8 次比對為例之隨意環狀管線排程 .................................................... 47 4. 2 以處理 8 次比對為例之非循序式比對概念之排程........................................ 48 . VIII .
(9) 表目錄 表 表 表 表 表 表 表. 2. 1 2. 2 2. 3 2. 4 3. 1 3. 2 3. 3. 符號表 ................................................................................................................ 16 字首表(Prefix Table)[7] .................................................................................... 18 根據隨意環狀管線架構繪製出Time Slot與Pipeline Stage的關係表 ........... 27 決定初始發展的值[13] ..................................................................................... 35 根據非循序式比對概念繪製出Time Slot與Pipeline Stage的關係表 ........... 39 第x個子樹的處理方式 ...................................................................................... 42 非循序式比對概念的真值表 ............................................................................ 46 . IX .
(10) 第一章. 前言. 在日常生活中,網際網路是不可或缺的,每個人都會使用,嚴然已經成為生活 的必需品。 以正面意義來說,會使用網際網路來繳費、收發電子信件、上網購物或者是拍 賣物品…等。在政府機關與一般的企業,與民眾的互動也都是在網際網路上,像是 縣政府公告颱風來襲停班停課資訊、某公司舉辦回饋消費者的活動…等。 網際網路已經在不知不覺中,深入了我們的生活之中,根據台灣網路資訊中心 從民國 92 年七月到民國 99 年一月的統計資料顯示出[1],在個人上網方面從 57.23% 成長到 72.56%,如圖 1.1。. 圖 1. 1 個人曾經上網比例趨勢圖[1]. 10 .
(11) 在個人整體接觸網路的時間,使用時間越長的人也有明顯的增加趨勢,如圖 1.2。. 圖 1. 2 個人整體接觸網路時間趨勢圖[1] 在家庭可上網方面,也從 54.4%成長為 76.79%,如圖 1.3。. 圖 1. 3. 家庭可上網比例趨勢圖[1]. 11 .
(12) 以上的數據,再再顯示出網路使用率的提高,連帶的會使得使用者希望使用的 品質也提高。 在網路資訊安全方面,常見的網路攻擊有入侵偵測(Intrusion Detection)、駭客攻 擊(Hacker Attack)、系統滲透(System Penetration)、阻斷服務攻擊(Denial of Service, DOS)…等。根據美國電腦安全組織(Computer Security Institute, CSI)從 1990 年到 2003 年所做的調查顯示出[2],阻斷服務攻擊的事件發生率從 31%成長為 42%;系 統入侵的由 30%提升至 36%,病毒的攻擊在這五年期間一直保持在 82%以上。. 圖 1. 4. 在每年 12 個月中,攻擊類型或濫用偵測的統計結果[2]. 12 .
(13) 當 使 用 者 使 用 網 際 網 路 (Internet) 來 搜 尋 資 料 或 查 詢 訊 息 時 , 會 先 在 URL(Universal Resource Locator)輸入指定的網址,也就是網域名稱(Domain Name), 但是在網路的世界中與電腦連結是使用網際網路通訊協定位址(Internet Protocol Address, IP Address)來做辨識的,因此會透過一台有網域名稱與 IP Address 對應資料 的主機,又稱網域名稱伺服器(Domain Name System, DNS)來查詢指定網址對應的 IP Address。 網路資料的傳遞中,資料是以封包(Packet)結構為單位來進行交換的,封包內會 記錄著封包發送給對方所需要的訊息和傳送給接收端的訊息資料內容。在網路上資 料的傳遞就像是寄一封信,地址就像是 IP Address,信就像是封包,試想如果一封 信上沒有地址就像是封包沒有 IP Address 那麼怎麼知道該封包是誰發送的又是誰要 接收的,因此 IP Address 在整個資料的傳遞上是不可或缺的[3]。 IP Lookup 是用來幫助找出當前的 IP Address 或者是其它任一個 IP Address 的資 訊。在路由器封包轉送機制上,根據目的地位址(Destination Address)對路由表 (Routing Table)作比對,決定該封包的下一個路由器(Next-hop),這比對的工作稱之 為 IP Lookup。 常見的 IP Lookup 方法是將字首(Prefix)按照 Patricia Tree(簡稱 PAT Tree)的方式 建構出轉送表(Forwarding Table),再將相對應字首和輸出埠號(Port)的資訊存放在二 元樹(Binary Tree)的節點(Node)中,利用這個結構來搜尋最長字首匹配(Longest Matching Prefix)。. 13 .
(14) 最長字首匹配(Longest Matching Prefix),指的是在路由器上執行目的地位址與 路由表的比對,必須選出字首最長且符合目的地位址最佳的值;路由表指的是路由 在運作時所建立或更新的表單;轉送表,指的是原本路由表的資訊再加上一些額外 的附加訊息,可以幫助 IP Lookup 搜尋時所用的表單。 在 CIDR(Classless Inter-Domain Routing)的技術被提出後,IPv4 在網路上的路由 表,每筆輸入的值都包含了字首、字首長度(Prefix Length)和 Next-hop 等三個欄位, 字首代表的是目的地位址,字首長度表示的是目的地位址的長度(0~31),當字首長 度為 0 時,則表示其對應的 Next-hop 是預設路由(Default Route) [4]。 舉 例 來 說 , 某 個 路 由 表 內 有 [203.64/16, A] 、 [203.64.128/24, B] 和 [203.64.128.120/32, C]等三筆輸入值。假設第一筆進入的封 包其目的地位址為 203.64.120.8,那麼對照上面三筆數值之後的結果會得到最符合的只有[203.64/16, A] , 因 此 Next-hop 為 A 。 接 著 , 如 果 第 二 筆 進 入 的 封 包 的 目 的 地 位 址 為 203.64.128.120,那麼這三筆數值都會符合,但因為第三筆的字首長度最長,表示其 優先權最高,因此 Next-hop 為 C。. 圖 1. 5 最長字首匹配(Longest Matching Prefix)範例. 14 .
(15) 不論是在找尋攻擊者或者是攻擊來源,都是需要搜尋 IP Address,因此,IP Lookup 是重要的。在常見的 IP Lookup 作 IP Address 比對時,使用的是從頭到尾的 比對方式,在本文中提出一種非循序式(non-sequential)的比對概念,主要是在原本 的樹狀結構上增加一些資訊,再搭配管線來應用,其目的是為了減少執行時的時間 成本花費與保持記憶體的平衡,進而提高 IP Lookup 搜尋的速度。 本論文結構如下,第二章介紹之前的樹狀結構與近年來管線的相關研究。在第 三章中,介紹本文非循序式的比對概念與管線的應用。第四章,檢視本論文方法之 效能評估。第五章是為結論與未來展望。. 15 .
(16) 第二章. 相關文獻. 為了便於以下說明,在此以茲符號說明如下:. 符號. 表 2. 1 符號表 意義. PI. 表示樹狀上的節點名稱,如圖 2.3 中的 P1。. Pi. 如 P1 表示管線內 stage 的名稱,請參考圖 2.10。. TI. 如 T1 表示第一個時槽。. Ti. 在隨意環狀管線中,如 T3 表示由 stage P3 開始執行工作。. 2.1 樹狀演算法 樹是由節點與節點間的分支(Branch)組成一個具有階層式(Hierarchical)的集 合,如圖 2.1。 樹狀結構具有下列特點[5]: 1.. 每個節點會有零或多個子節點(Child) ,如節點 B 有三個子節點 D、E、F, 而沒有子節點的節點稱之為葉節點(Leaf Node),如,K、J、F、L、O、P;. 2.. 每一個子節點只會有一個父節點(Parent),如節點 G 的父節點為節點 C,而 某節點到根節點的路徑上遇到的節點,均為該節點的祖先(Ancestor),如對 節點 J 來說其祖先為節點 A、B、E;. 3.. 沒有父節點的節點稱之為根節點(Root),如節點 A;. 4.. 除了根節點之外,每個節點都可以分為多個不相交的子樹(Subtree)。. 其中,分支度為(Degree)為 3,而樹的階層(Level)為 4,且在一棵樹中最大的階 層值又可以稱高度(Height)或深度(Depth),故高度和深度都為 4。. 16 .
(17) 圖 2. 1 樹狀結構[6] 2.2.1 以二元樹來表示IP字首 二元樹(Binary Tree)[5]是每個節點為擁有零個或最多兩個子樹的樹。此兩子樹 稱之為左子樹(Left Subtree)和右子樹(Right Subtree),且用於表示 IP 字首時,分別以 0 與 1 標示在指向左右子樹的鏈結上做為標籤(Label)用。 對 IP Address 作比對,以二元樹來表達是最直接的方法,因此在這稍微說明一 下 IP Address 的結構。 目前使用的 IP Address 為第四版也就是 IPv4,其為一組 32 位元的二進制數字所 組成,8 個位元為一單位共分為四段,如 11000000.10101000.00000001.00000001, 為了方便閱讀會使用十進制來表示,如 192.168.1.1。. 圖 2. 2. IP Address 的結構[3]. 17 .
(18) 假設 X 為二元樹中的一個節點且位於階層 h,則從樹的根節點開始至節點 X 所 有的分支上的標籤代表其所符合的 IP Address 字首。因為是 h 階層所以此時的 IP Address 字首共有 h 位元。若此 h 個位元符合某一 IP Address 字首規則,此節點標示 為灰色並稱之為字首節點。 若字首不止 h 個位元,根據下一個位元(第 h+1 個)的值為 0 或 1,分別往左右 子樹繼續尋找符合字首規則的字首節點。 字首表(Prefix Table)為一群 IP Address 字首的集合,表 2.2 即為一個字首表。圖 2.3 依據表 2.2 所建立的二元樹。經由待檢視的 IP Address 拜訪此二元樹,找出所符 合的字首規則,其間所經過的字首節點表示此 IP Address 所符合的規則,其中階層 最大的字首節點表示符合的位元數最多。 表 2. 2 字首表(Prefix Table)[7] Node. Prefix. P1. *. P2. 1*. P3. 00*. P4. 101*. P5. 111*. P6. 1000*. P7. 11101*. P8. 111001*. P9. 1000011*. 舉例來說,需檢視的位址為 11101000,那麼從根節點開始拜訪此二元樹,直到 找出符合此位址的最長字首匹配。11101000 的第一個位元為 1,所以從根節點開始 往右走至字首節點 P2,接著,第二個位元為 1,因此向右走但其節點非字首節點,. 18 .
(19) 再來,第三個位元為 1,還是向右走到字首節點 P5,之後,第四個和第五個位元其 值為 0、1,所以左走、右走來到字首節點 P7。但因為 P7 同時也是葉節點,且符合 最長字首匹配,因此回傳 P7。 當處理某一個網路應用其關心的 IP 字首為 10111*時,依照字首拜訪二元樹尋 找,如果該字首節點是存在的,則傳回所符合的規則,若找不到字首節點可與 10111 匹配,此時則需要新增一個字首節點。 如果有些字首規則不再被使用則需刪除字首節點。當刪除一個沒有子節點的字 首節點,首先刪除此節點和指向它的指標,接著檢查其父節點。假如父節點有另一 個分支或者它是一個灰色節點,那麼刪除作業就完成了,否則刪除此父節點和指向 它的指標並重複父節點的檢查與刪除工作,直到父節點有另一個分支或是發現灰色 節點為止[7]。. 圖 2. 3. 1-bit 二元樹的資料結構[7]. 此二元樹的效能分析如下[7]:. 19 .
(20) 在最差的情況下,以 IPv4 來說記憶體存取次數為 32,增加字首節點也需要增 加 32 個節點。 在這例子中,儲存的複雜度為 32N*S,其中 N 為在轉送表內字首的數量,S 為 每個節點所需要的記憶體空間。因此,Lookup 的複雜度與更新複雜度皆為 Ο(W), 其中 W 為字首的最大長度。而空間複雜度為 Ο(NW)。 2.2.2 Disjoint Prefix二元樹 根據圖 2.3 的二元樹將其結構延伸為完滿的二元樹,如圖 2.4,若以 IPv4 來建 構這棵樹的話,將會有 128 個葉節點。每個節點皆儲存一個相對應的字首,而且可 以使用目的地位址的七個位元直接存取記憶體搜尋。 完滿二元樹(Full Binary Tree)[5],在二元樹中所有的節點除葉節點之外均有兩個 子節點。 Disjoint Prefix 二元樹的字首表不會重複,也就是說沒有某個字首本身會與另一 個字首相符,而且如要增加葉節點,不會在內部節點增加,而是直接在葉節點下增 加。而增加的葉節點會繼承其祖先節點的資訊,之後,標記成字首節點的內部節點 將會取消標記。 例如,圖 2.4 的 Disjoint Prefix 二元樹就是從圖 2.3 所延伸的。字首 P2a 和 P2b 繼承了字首 P2 的相關資訊,相似的節點有 P1a、P5b、P6a、P6b 和 P6c。由於這種 方法是將內部節點標記為字首節點或是將節點往下推當成葉節點,這種方法是由 V.Srinivasan 和 G.Varghese 所提出的,稱之為 leaf pushing[8]。. 20 .
(21) 圖 2. 4. Disjoint Prefix 二元樹[7]. 此 Disjoint Prefix 二元樹的效能分析如下[7]: 當實際的位址有 32 位元時,需要儲存的記憶體空間變得非常的大,需要的記憶 體為 232。 2.2.3 Path-Compressed Trie 路徑壓縮(Path Compression)的技術首次採用 Patricia 樹。Path-Compressed Trie[7] 是基於觀察樹的每個內部節點無包含字首且只有一個子節點可以被移除,那麼就縮 短從根節點開始的路徑。 此方法會移除一些內部的子節點,因此必須使用一種方法來記錄被移除的節點 有哪些,首先,用一個 Skip value 來記錄被跳過的位元有多少,其次,在葉節點上 用可變長度的位元字串,Segment 來表示跳過的位元值。圖 2.5 依據圖 2.3 的二元樹 做路徑壓縮。因此在節點的結構上會有兩個欄位,Skip value 和 Segment[7]。. 21 .
(22) 舉例來說,節點 P9 的節點資料結構,Skip value=2 且 Segment 為 11,這表示在 節點 P9 之前移除了兩個階層且移除的兩個位元為 11。因此,當訪問到節點 P9 時, 必須對 Segment 所攜帶的值 11 作檢查。 在路由的 Lookup 上,若有需檢視的 IP Address 為 11101000,此位址的第一個 位元為 1,從節點 P1 向右邊走至節點 P2;第二個位元為 1,因此向右走來到節點 P5,第三個位元為 1,這時要對節點 P5 作檢查,節點 P5 帶有 Skip value=1 和 Segment 為 1 表示這裡移除一個階層且被移除的階層其帶有位元值 1,因此符合位址的第三 位元,之後來到第四個位元為 0,所以走至 P5 的左子節點,其第五的位元為 1,因 此向右走來到節點 P7,這時因為節點 P7 並沒有攜帶資訊且是葉節點,所以回傳 P7。. 圖 2. 5. Path-Compressed Trie 的範例[7]. 此 Path-Compressed Trie 的效能分析如下[7]:. 22 .
(23) 路徑壓縮會降低二元樹的高度,當樹是圓滿的且沒有壓縮的問題, Path-Compressed Trie 看起來和一般的二元樹沒什麼不同。因此,搜尋和更新的複雜 度,在最差的情況下與二元樹相同,Ο(W)。 如果考慮到 Path-Compressed Trie 是一個完滿的二元樹且有 N 個葉節點,則其 內部節點為 N-1,如圖 2.6。由於路徑被壓縮過已減少內部節點的數量,因此其空間 複雜度為 Ο(N)。. 圖 2. 6. N 個葉節點的 Path-Compressed Trie[7]. 2.2 管線 管線(Pipeline)[9]的概念類似於工廠的生產線,是一種可以執行多個重疊指令的 技術,比如洗衣服,如圖 2.7 和圖 2.8。 在圖 2.7 是非管線化的洗衣步驟,洗衣、烘乾、摺疊、放入衣櫃,每一個工作 都是四個步驟完成之後,才交給下一個,每個步驟需要花費 30 分鐘,且四個工作執 行完畢需要花費 8 個小時。然而,圖 2.8 管線化之後的洗衣,四個工作執行完畢卻 只需要 3.5 小時。. 23 .
(24) 在這裡每個工作的所有步驟稱之為管線的 stage,每個 stage 中單一的步驟就稱 之為管線的 task。. 圖 2. 7 非管線化的洗衣服[9]. 圖 2. 8. 管線化之後的洗衣服[9]. 在管線的結構上,會有多個 stages 來分別處理不同的 task,其執行的方式就像 是汽車在自動化的組裝生產線上,有的工作站負責裝引擎,有的負責烤漆,在某一 工作站處理完之後在交給下一個工作站作另一個 task。 在管線這一技術中有一特點,對同一件工作總花費的時間並沒有因管線化而花 費時間減少,管線化的目的是讓工作可以在同一個時間平行的處理不同 stage 內的 task,其改善的是總體的生產效能,並非單一工作所需要花費的時間。一般而言, 其加速度(speedup)為 [10]:. 24 .
(25) speedup =. number of clocks(serial) sk = = number of clocks(pipelined) s + k − 1. s s −1 1+ k. As k → ∞, speedup → s, and as k → 1, speedup → 1; thus 1 ≤ speedup ≤ s.. 其中,k 為序列長度,s 為管線中 stage 的數量。 因此,將管線運用在 IP Lookup 的比對上,簡單來說就是將拜訪二元樹的過程 分成許多個 task,每個 task 負責樹的一部份(子樹),管線內不同的 stage 來負責處理 不同的 task,這樣可以不用等待某子樹全部執行完之後,才處理下一棵子樹,既可 以減少處理所花費的時間,又可以同時處理多棵子樹,是一種可以提高 IP Lookup 比對效能的技術。 2.2.1 隨意環狀管線 Florin Baboescu et al.[7, 11]在 2005 年時所提出的方法,隨意環狀管線(Random ring pipeline architecture)是依據樹狀的子樹結構來做處理,其目的是為了讓每個工作 所花費的總時間成本相似,讓記憶體保持平衡。 以具有四棵子樹的樹狀結構為例,其子樹分別稱為 S1 、 S 2 、 S3 、 S 4 ,又每一子 樹具有四個階層,如圖 2.9 所示,其中第 i 棵子樹的第 j 個階層表示為 Sij 。. 25 .
(26) 圖 2. 9 基於樹狀搜尋結構,這棵樹有四棵子樹依序由 S1 到 S4,每棵子樹皆有四個 階層,將第 i 棵子樹的第 j 階稱之為 Sij [7] 如圖 2.10,隨意環狀管線的結構上各有一個入口 IN 與出口 OUT,且可以處理 不同 task 的 stage 有四個,分別稱為 P1、P2、P3、P4,配合樹狀結構的拜訪,每個 stage 可以處理多個位元的搜尋。. 圖 2. 10 隨意環狀管線架構[7] 使用圖 2.9 樹狀結構的子樹階層,依據下列敘述丟入圖 2.10 的管線結構內。一 開始先處理樹狀結構的第一棵子樹 S1 ,將 S1 的第一個階層 S11 丟入 stage P1 做儲存和 處理, S1 的第二個階層 S12 則在 stage P2 做儲存和處理,以此類推。. 26 .
(27) 第二棵子樹 S 2 則是從 stage P2 開始處理,子樹的階層則依次放入 stage 中,如 S12 放入 stage P2、 S22 放入 stage P3、 S32 放入 stage P4、 S 42 放入 stage P1。相同的,第三棵 子樹 S3 由 stage P3 開始,第四棵子樹 S 4 由 stage P4 開始[11]。 根據上述的描述,繪制了一張時槽(Time Slot)與管線 stage 的關係表,從表 2.3 中可以清楚的看出每棵子樹都是從第一個階層 S1i 開始依序將資料丟入 stage 中。 表 2. 3 根據隨意環狀管線架構繪製出 Time Slot 與 Pipeline Stage 的關係表 T1. T2. T3. T4. T5. T6. T7. T8. T9. T10. P1 P2 P3 P4. 管線的 stage 中設有兩條虛擬的資料路徑,但是分享相同的實體線路。 第一條資料路徑是活動在奇數個時間週期內,在第一次進入管線時,使用的也 是這一條資料路徑。在這執行的期間工作 Ti 會經過管線的 stage 直到找到開始執行 的 stage Pi 為止,且會持續執行到管線的最後一個 stage 為止。 第二條資料路徑是活動在偶數個時間週期內,如果第一條資料路徑未完成其工 作,則這是接續第一條資料路徑之後繼續執行的路徑。因此,在第一條資料路徑執 行到管線的最後一個 stage 時,但其工作卻還未完成,這時就會經由環狀管線的路 徑,由第一條資料路徑回到 stage P1 接著使用第二條資料路徑繼續執行,直到工作 完成為止。一旦工作執行完成之後,其結果就會傳送到管線的最後一個 stage,之後 由出口 OUT 輸出[11]。. 27 .
(28) 舉例來說,如圖 2.10,假使有需檢視的 IP address 要做比對,其工作為 T3,那 麼會從入口 IN 進入,使用第一條資料路徑從 stage P1 開始移動直到找到開始執行的 stage P3 為止,且會持續執行直到管線的最後一個 stage(也就是 stage P4)為止。 然而,工作 T3 並未完成執行,因此會經由環狀管線的路徑回到 stage P1,這時 便要使用第二條資料路徑繼續執行,一直到工作完成(即是 stage P2);工作執行完成 之後,便會移動到 stage P4,之後由出口 OUT 輸出。 其優點為,在管線中每個 stage 載入處理的總成本是相同的,這樣亦可以讓每 個 stage 使用近似等量的記憶體。 其缺點有二,一是在各個 stage 中皆會發生某子樹階層資料處理完之後,需等 待四個單位的時槽才可以在被使用,如表 2.3 所示,在 stage P1 中,時槽 T2 到 T5 正處於閒置當中。 其二,因為處理的成本不一,因此會有在同一時槽中不同 stage 等待的情況發 生。以時槽 T3 來做舉例,如表 2.3 所示,在時槽 T3 有在 stage P2 作處理的 S12 和在 stage P3 作處理的 S13,其處理的子樹階層並不相同,因此當 stage 正在執行此時槽時, stage P2 與 stage P3 會有一方先完成,但因為是在同一時槽中做處理,因此需要等到 另一個 stage 的資料處理完成,才能將棒子交給下一個。 從管線結構上來看,優點為只需要各一個入口 IN 與出口 OUT,但缺點為在執 行處理時會有多餘的時間成本花費。. 28 .
(29) 用上述例子來說明,工作 T3 是從管線的 stage P3 開始執行,經由環狀管線之後 回到 stage P1 一直到 stage P2 才完成執行,如下圖所示,虛線的部分也就是移動但未 做執行的部分,那麼在一開始與最後結束部分也就多出了移動時的時間成本花費。. 圖 2. 11 隨意環狀管線的行經路線 因此,根據上述的說明,我們將會在本文中提出此方法的改良,並且保留其優 點。 2.2.2 CAMP 在 2006 年時,S. Kumar et al.[12]提出了一種延伸自圓狀管線(Circular Pipeline) 的新架構,稱為 Circular, Adaptive and Monotonic Pipeline(簡稱 CAMP)[12, 13],使用 如圖 2.12(a)所示,路由表上 8 個字首與其對應的二元樹。 如果用管線來處理這棵樹,則需要 6 個 stages。基於階層的對應會將 1、2、3、 5、2、2 個節點分別對應到 stage 1 到 stage 6;當基於高度的對應將會產生 6、4、2、 1、1、1 個節點。 因此,這兩種方法都會增加管線的不平衡,且不平衡的程度是取決於字首表。. 29 .
(30) 圖 2. 12 (a) Uni-bit trie (b)Leaf-pushed trie (c)開頭 2-bits 的索引表 (d)子樹的階 層[12, 13] 圖 2.12(a),由於只有字首 P1 是 1-bit 的長度,因此將字首 P1 展開成 2-bits 的長 度,如圖 2.12(b),使用的方法就是在 2.2.2 節中所提到的 leaf pushing[8],如此一來 在字首表內的字首的長度皆超過 2-bits,因此,在樹的最上方的兩個階層可以直接 儲存在索引表上,且索引表上的四個部分可分成三棵子樹,如圖 2.12(d)[12]。 在多棵子樹中,需要在管線 stage 與字首節點之間取得平衡。因此,要求在任 一個 stage 皆可以進入與離開,且為了取得較高的靈活度,採用環繞管線的方式。 如圖 2.13 所示,這是由圖 2.12(a)路由表上的 8 個字首建構而成,對應著四個 stage,排列成圓狀的管線,亦可以隨意的進入任一個 stage 中。在這使用樹最上方 的兩個階層來決定進入管線的哪個 stage 中,之後的位元則會在不同的管線 stage 中 被處理。. 30 .
(31) 圖 2. 13 4 個 stage 的圓狀管線,且是使用圖 2.12(d)的三棵子樹來做對應[12]. 在管線結構方面,CAMP 是由圓狀管線所組成的,每個 stage 各自有出入口。 如圖 2.14,在 Direct lookup table 存放的是圖 2.12(b)的字首節點,之後,會根據 IP Address 的 x-bits 來決定對應的管線 stage。在要進入各個 stage 前會先將資料暫時 存放在 request queues 中,等待進入 stage,而在 request queues 內的資料是採用 FIFO(First in first out)的方式進入 stage。在資料依序進入 stage 做處理,處理之後會 傳到 reordering buffer,等待輸出。. 圖 2. 14 CAMP 的結構[12]. 31 .
(32) 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 開始,因. 32 .
(33) 此,使用管線來做 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]. 33 .
(34) 參考圖 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 更能使管線平衡。. 34 .
(35) 表 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; if 2I−1 <. N (T ' ) < 2I then P. H(t): height of trie t.. return I; end I ← I + 1; end . 接著,將子樹內相同階層的節點分為一組,再依序放入佇列中,如圖 2.16(b)所 示。每棵子樹的第一個節點 c、d、e 分別標示在佇列 Q1、Q2、Q3 的前方,其第一 棵子樹(00*)的節點 P1 和節點 P2 放入佇列 Q1,第二棵子樹(01*)的節點因為同一階 層分層一組,因此會有三組,放入佇列 Q2,第三棵子樹(10*)其內容為 null 毋須放 入佇列中,再來是第四棵子樹(11*)的節點 P7 和節點 P8,放入佇列 Q3 中。 圖中可以看到佇列 Q2 的長度與其它佇列相比來的較長,這也是因為第二棵子 樹的節點數比其他子樹來的多。 為了使管線能達到平衡,除了第一個 stage 之外,其他的各個 stage 應該要有 [Nr/Pr]個節點,其中 Nr 為佇列中的節點,則應該平均分配到 stage 中,Pr 為除 stage 1 之外剩下的 Stage 數量。若以圖 2.16 為例,則 Nr=11,Pr=4,因為 11/4=2 餘 3,. 35 .
(36) 因此分配方式為 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)所示。. 36 .
(37) 第三章 非循序式的IP Lookup 在 2.2.1 節中 Florin Baboescu et al.[11]所提出的方法,使用隨意環狀管線來處理 IP Address 的比對,其進入管線的資料在排程上未充分利用管線的效能。 以四棵子樹的樹狀結構為例,其子樹分別稱為 S1 、 S 2 、 S3 、 S 4 ,又每一子樹具 有四個階層,其中第 i 棵子樹的第 j 個階層表示為 Sij 。如表 2.3 所示,從單一時槽來 看,在處理的排程處於穩定時,每個時槽皆會有兩個 stage 沒有被利用到,且對單 一 stage 而言,在某子樹階層資料處理完畢之後,需相隔四個單位的時槽,才可以 在被使用。 在同一時槽中各個 stage 在處理資料時所耗的時間並不一致,因此會有等待的 情況發生。如表 2.3 所示,若不同子樹中同一階層的處理假設其時間成本相同,則 在時槽 T3 在 stage P2 作處理的 S12 和在 stage P3 作處理的 S13 ,其處理的子樹階層並不 相同,因此當不同的 stage 正在執行同一時槽時,較先處理完的 stage 必需等待其餘 的 stage 資料處理完成,才能將棒子交給下一個。 因此我們提出一個能增進效能的方法—使用非循序式的比對概念。所謂非循序 式是指在比對 IP Address 時,不是由 MSB(Most Significant Bit)循序檢查至 LSB(Least Significant Bit),也就是不必從頭比對到尾的方式。例如,正在檢視的 IP Address 為 192.168.1.8,通常會先比對 192 之後比對 168,接著比對 1 再來比對 8,依序比對, 而非循序式在比對時,視需求可能在 192 比對完之後跳到 1 來比對,並非由 MSB 循序檢查至 LSB。為了達到這樣的比對目的,將在原本的子樹增加一些資訊,藉以. 37 .
(38) 能達到非循序式的 IP Address 比對的目的,並降低管線處理時間,進而讓執行效率 更佳。 若假設在處理各個子樹資料階層 Sij 所耗之時間為 j 個單位,則隨意環狀管線將 四棵子樹比對完之後,每個時槽所耗之時間的最大值為 3、4、3、4 個單位,本論文 則是期待比對完之後的各個時槽耗時 1、2、3、4 個單位。 3.1 子樹結構 為了使管線更有效率的運作,將在原本的樹狀結構增加一些資訊,為了便於說 明我們以圖 2.9 為例並重繪於圖 3.1,來說明此方法。 首先,圖中有四棵子樹,第一個進入管線的子樹為 S1 接著是 S 4 、 S3 、 S2 再回到 S1 ,也就是進入管線的方式為倒數輪流(Round-robin in reverse order),如圖 3.1。. 若不同子樹中同一階層的搜尋成本假設其時間成本相同,也就是 S1j = S2j = S3j = S4j , j 表 示 為 第 j 個 階 層 , 且 階 層 數 越 大 的 成 本 也 越 大 , 意 為 S1i < Si2 < S3i < Si4 ,i 表示為第 i 棵子樹。. 圖 3. 1. 子樹進入管線的順序[7]. 38 .
(39) 同樣的,以圖 3.1 來說明子樹進入管線後的處理情形,基本上除第一個被處理 的階層資料外均依階層的順序輪流處理。當子樹 S1 進入管線後,直覺上先處理該子 樹的第一層也就是 S11。接著, S4 為第二個進入管線的子樹,此時,子樹 S1 進入 stage P2 正要處理該子樹第二層( S12 ),為使時槽內各 stage 處理資料的時間一致,所以此時 的 stage P1 處理 S 24 的資料,也因此推論出若 Si 為第 j 個進入管線的子樹則第一個被 處理的階層資料為 Sij 。 接著, S3 進入管線,此時 stage P3 正在處理 S13 、stage P2 正在處理 S34 ,顯然 stage P1 會從 S33 開始處理,才能使此時槽內各 stage 的處理時間一致;緊跟著第四個進入 管線的子樹為 S2 ,顯然第一個被處理的階層資料為 S 24 。接著下來各 stage 就依照其 階層順序輪流處理。 根據上述所敘,可將子樹結構對應成一時槽(Time Slot)與 Pipeline Stage 的關係 表,如表 3.1。 表 3. 1 根據非循序式比對概念繪製出 Time Slot 與 Pipeline Stage 的關係表 T1. T2. T3. T4. T5. T6. T7. P1 P2 P3 P4. 為了使子樹結構能適用於本文所提出的非循序式比對概念,我們採用類似引線 樹(Threaded tree)[16]的概念。典型的引線樹是利用二元樹中指標為 NULL 的節點, 尤其是葉節點,將 NULL 指向其祖先節點。又典型二元樹的節點結構中,一般常見 會有三個欄位分別來儲存指向左邊節點的指標、節點資料與指向右邊節點的指標。. 39 .
(40) 在本文中所提出的類似引線概念是在樹狀結構中的節點多增加了一個欄位,也就是 successor thread,其存放的值為將引線指向子樹中下一個會被執行的階層資料,其 結構如下:. 圖 3. 2. 引線樹(Threaded tree)節點結構[16]. 且為了便於說明概念將圖 3.1 的樹狀圖轉換成圖 3.3 的形式,此樹狀結構加入引 線的概念,圖中的虛線為各棵子樹進入 stage 後處理階層資料的順序。. 圖 3. 3. 使用非循序式比對概念的子樹結構. 根據表 2.3 與表 3.1 可以比較出非循序式的比對概念的優點: 其一,保持著原本隨意環狀管線的優點,每個 stage 處理的總時間成本相同, 且每個 stage 同樣使用近似等量的記憶體,如表 3.1,每個 stage 的總時間成本皆為 10 個單位。 其二,不論是在單一時槽或是單一 stage 而言,皆不會有時槽未被利用到。. 40 .
(41) 其三,在同一時槽中,每個 stage 所執行的時間成本是相同的,不會有等待的 情況發生。以表 3.1 的時槽 T3 來舉例,正在執行的有 stage P1 的 S33 、stage P2 的 S34 、 stage P3 的 S13 , 因 不 同 子 樹 中 同 一 階 層 的 搜 尋 成 本 假 設 其 時 間 成 本 相 同 ( S1j = S2j = S3j = S 4j ,j 表示為第 j 個階層),所以在時槽 T3 中,各個 stage 所耗的處理時 間會相同,因此會一同結束在交給下一棒,這樣便不會有 stage 等待的情況發生。 3.2 管線結構 如圖 3.4 所示,其為處理非循序式比對概念的管線結構。以擁有四棵子樹結構 的樹狀結構來說明,此管線以四個 stages 來處理四棵子樹結構,每棵子樹第一個被 處理的階層資料皆從管線的 stage P1 開始處理,之後,子樹內的階層資料依序處理, 且會一同結束在 stage P4。 每次進入管線的子樹,開始在 stage P1,結束在 stage P4,因此,在資料的傳輸 路徑上,不需要有額外的路徑將 stage P4 接續到 stage P1 做執行。在進入管線的各個 stage 一直到離開,每個 stage 都會有需要處理的資料,因此各個 stage 皆有被充分的 利用。. 圖 3. 4. 非循序式比對概念的子樹結構應用在管線上. 41 .
(42) 接著,以程式語言上所謂的條件運算子(Conditional Operator)[14]來說明非循序 式比對的方法,語法如下: x = conditional ? expression1 : expression2; ─if the evaluation of conditional return true, x = expression1. ─if the evaluation of conditional return false, x = expression2.. 將非循序式的比對概念歸納成演算法如下: 表 3. 2 第 x 個子樹的處理方式 //x 表示 xth 進入管線待處理的 IP //x′是為了將進入的序數對應到 1~s 之間 //s 表示管線中 stage 的數 // Sij 表示要處理的資料為第 i 棵子樹的第 j 階層 //y 表示管線的第 y 個 stage 其所要處理的資料為 Sij ' //j′表示某子樹的第 j′階層 01 02 03. Considering the xth entering the pipeline ( x ∈ N ) { x′=((x mod s)==0) ? s : (x mod s);. 04 05 06 07. // Determine which subtree will be selected? i=(([(s + 2) - x′] mod (s + 1))==0) ? 1 : [(s + 2) - x′] mod (s + 1); //The next processed subtree Si ; // Determine which is the beginning level of Si. 08 09. j=(([(s + 2) - i] mod (s + 1))==0) ? 1 : [(s + 2) - i] mod (s + 1); //processing Sij ;. 10. // Determine the sequence of level of Si. 11. j′=j;. 12. For y=1 to s. 13 14 15. { j′=([j′ mod (s + 1)]==0) ? 1 : [j′ mod (s + 1)]; The yth stage of pipeline manipulates the j′th level of Si ( Sij ' ). 16 17 18. j′=j′+ 1; } }. 42 .
(43) 如圖 3.3 所示,以四棵子樹的樹狀結構為例,其子樹分別稱為 S1 、S 2 、S3 、S4 , 又每一子樹具有四個階層,故管線中以四個 stages 來處理每一子樹,因此 s=4。 以 x=3 為例,此時表示正在處理第 3 個進入管線的子樹。依 Line03 因為(3 mod 4)≠0,回傳 x′=3,此運算的目的是將進入的序數對應到 1~4(因為此時 s 為 4)之間。 由 Line05 得知 i=([(4+2)-3] mod (4+1))=3,也就是此時進入管線的子樹型態屬 於 S3 。接著,需決定進入管線時第一個被處理的階層為何?由 Line08 得知 j=([(4 +2)-3] mod (4+1)) =3,因此,第一個被處理是第 3 層的資料也就是 S33 。 接著,由 Line12 的 for 迴圈來控制處理階層的順序,第 y 個 stage 所要處理的是 子樹 Si 的第幾個階層?因此,當 y=1 時,表示此時 stage P1 要處理 S3 的第 3 層資料 也就是 S33 。因為是依照階層順序輪流處理,處理完 S33 之後依 Line16 j′=j′+1=4。接 著進入 y=2,由 Line14 得知,j′=[4 mod (4+1)]≠0,回傳 j′=4,所以在 stage P2 所要處理的階層資料為 S34 ,同理 j′=j′+ 1=5。進入 y=3 時,j′=[5 mod (4+1)]=0, 條件成立回傳 j′=1,因此 stage P3 處理階層資料為 S13 。同理執行完後 j′=j′+ 1=2 進 入 y=4,j′=[2 mod (4+1)]≠0,回傳 j′=2,因此 stage P4 處理階層為 S32 。此時子樹 S3 依非循序式的比對方式處理完畢。. 若以 x = 6 為例,此時表示正在處理第 6 個進入管線的子樹。依 Line03 因為(6 mod 4)≠0,回傳 x′=2。由 Line05 得知 i=([(4+2)-2] mod (4+1))=4,也就是此時進 入管線中的子樹型態屬於 S4 。接著,需決定進入管線時第一個被處理的階層為何?. 43 .
(44) 由 Line08 得知 j=([(4+2)-4] mod (4+1)) =2,因此,第一個被處理是第 2 層的資 料也就是 S24 。 同樣的,由 Line12 的 for 迴圈來控制處理階層的順序,第 y 個 stage 所要處理的 是子樹 Si 的第幾個階層?因此,當 y=1 時,表示此時 stage P2 要處理 S4 的第 2 層資 料也就是 S24。因為是依照階層順序輪流處理,因此在處理完 S24 之後依 Line16 j′=j′+1 =3。接著進入 y=2,由 Line14 得知,j′=[3 mod (4+1)]≠0,3 回傳 j′=3,所以在 stage P2 所要處理的階層資料為 S34 ,此時 j′=j′+ 1=4。進入 y=3 時,j′=[4 mod (4 +1)]≠0,回傳 j′=4,因此 stage P3 處理階層為 S44 。同理執行完 j′=j′+1=5 後進入 y =4,j′=[5 mod (4+1)]=0,條件成立回傳 j′=1,因此 stage P4 處理階層為 S14 。此 時子樹 S4 同樣是依非循序式的比對方式處理完畢。 依 3.1 節所述,在管線的排程中,雖然每一時槽內的各個 stage 皆是同時處理完 成,但是各個時槽所耗的時間並不相同,那要如何讓下一個時槽得知目前該時槽已 完成工作?還要使各子樹的階層正確流入各個 stage,為了此目的設計出根據非循序 式比對概念的邏輯電路圖。 首先,使用 2-bit binary ripple up counter(2-bit 二進制漣波正數計數器) [15]來控 制時槽的進行,如圖 3.5 所示,使用兩個 JK 正反器接成非閘控制 T 型正反器 (Non-gated T Flip-Flop)[15], C0 與 C1 為此計數器輸出的位元值。 其次,使用 4×1 的多工器控制單一 stage 內階層資料的處理順序,根據 C0 與 C1 做邏輯判斷,其輸出為所對應的時槽將處理的子樹階層,在這一例子中每一子樹皆. 44 .
(45) 有四個階層,故管線中以四個 stages 來處理每一子樹,因此需要有四個多工器來處 理各個 stages。 在多工器的輸出處接著 Tri-state gate (三態邏輯閘)[15],其目的是因為各個時槽 處理的時間並不一致,所以下一個時槽不知道當前的時槽處理完了沒有,因此使用 Tri-state gate 來做緩衝。以 stage P1 為例,當多工器 1 的輸出進入管線做處理,完成 之後會啟動(ENB,enable)Tri-state gate 讓下一個階層資料流入,所以 ENB 也可以視 為是一個開關,這樣就可以使子樹階層正確地流入管線中的各個 stages。 完整的說例如下,stage P1 處理順序為 S11 、 S24 、 S33 、 S42 ,因此一開始控制時槽 進行的 2-bit binary ripple up counter 的輸出為 00,根據表 3.3 的真值表,多工器 1 輸 出 S11 , S11 進入 stage P1 處理。此時 C0C1 為 01,於是多工器 1 輸出 S24 ,但需在管線內 處理完 S11 後,發出啟動的訊號,Tri-state gate 才會讓 S42 接著進入 stage P1 做處理。. 45 .
(46) S11 S24 S33 S 42. S12 S12. S34. S34. S13. S22 S13 S 44. S14. S32 S32 S14. 圖 3. 5. 非循序式比對概念的邏輯電路圖. 其真值表如下: 表 3. 3 非循序式比對概念的真值表 真值表 C0. C1. P1. P2. P3. P4. 1 1. 1 2. 1 3. 0. 0. S. S. S. S14. 0. 1. S24. S12. S22. S32. 1. 0. S33. S34. S13. S32. 1. 1. S42. S34. S44. S14. 46 .
(47) 第四章. 效能評估. 在管線的排程上,我們將以處理樹狀結構來說明效能的差異。以擁有四棵子樹 的樹狀結構為例,各個子樹分別稱為 S1 、 S 2 、 S3 、 S 4 ,又每一子樹具有四個階層, 且假設在處理各個子樹的階層資料如 Sij 需 j 個單位時間。 以 Florin Baboescu et al.[11]所提的隨意環狀管線而言,計算 8 次比對為例,對 階層資料作處理時需要 18 個時槽,而在管線排程進入穩定期之後,其各個時槽所耗 的單位時間為 3 個單位、4 個單位兩種情況輪流,且依單一時槽而言,各個時槽只 會有兩個 stage 被利用到,對單一 stage 而言,在某子樹階層資料處理完畢之後,也 需相隔四個單位的時槽,才可以在被使用。 在隨意環狀管線排程上,進入穩定期前會有兩個時槽未被計算到,且在進入穩 定期後,每做 4 次比對會有兩棵子樹比對完成,因此,推論出處理 x 次比對則需耗 費 2x+2 個時槽,其中 x 可被 4 所整除。在進入穩定期前未被計算到的兩個時槽, 處理其時槽分別需要 1、2 個單位時間,且在進入穩定期之後,則各個時槽的處理時 間則為 3、4 個單位時間依序輪流,因此處理 x 次比對需要花費的處理時間為 7x+3。 average =. Execution Time 7x + 3 = number of Time Slot 2 x + 2. 因此,若以計算 8 次比對為例,則需要平均每個時槽耗費約 3.28 的時間單位。. 圖 4. 1. 以處理 8 次比對為例之隨意環狀管線排程. 47 .
(48) 以非循序式的比對概念而言,計算 8 次比對為例,則對階層資料作處理需要 11 個時槽,而進入管線的穩定期之後,其各個時槽處理的時間為 4、1、2、3 個單位, 以此情況輪流。 在進入穩定期前,會有三個時槽未被計算到,且進入穩定期後,每做 4 次比對 皆會有四棵子樹比對完成,因此,推論出處理 x 次比對需要花費 x+3 個時槽。在處 理的時間單位上,因為進入穩定期前未被計算到的三個時槽,其處理的時間單位為 1、2、3 個時間單位,且在穩定期之後,各個時槽的處理時間順序為 4、1、2、3 個 單位依序輪流,平均每個時槽處理時間為 2.5 個單位,也因此處理 x 次比對則需要 花費的處理時間為 2.5x+6。 average =. Execution Time 2.5 x + 6 = x+3 number of Time Slot. 因此,若以計算 8 次比對為例,則需要平均每個時槽耗費約 2.36 的時間單位。. 圖 4. 2. 以處理 8 次比對為例之非循序式比對概念之排程. 從上所述,可以比較出非循序式的比對概念比隨意環狀管線所耗的時間單位更 少,且從圖 4.1 與 4.2 也可以看出非循序式的比對概念在管線進入穩定期之後,每個 stage 都充分的被利用到。. 48 .
(49) 第五章. 結論與未來展望. 本論文根據 Florin Baboescu et al.[11]所提出隨意環狀管線的 IP Address 比對方 式,將其缺點加以改善(2.2.1 節所述),提出非循序式比對概念,用意是要使子樹的 階層資料在管線中能夠充分的被利用到,進而提高使用的效能。 所謂非循序式是指在比對 IP Address 時,不是由 MSB(Most Significant Bit)循序 檢查至 LSB(Least Significant Bit),也就是不必從頭比對到尾的方式。根據此概念將 原先隨意環狀管線所使用的樹狀結構增加一些資訊,如圖 3.3 所示。管線的處理順 序也因為非循序式比對概念的子樹結構,在管線的排程上皆由 stage P1 開始,stage P4 結束,如圖 3.4 所示,因此傳輸資料的路徑只需要一條即可。其效能評估當中,各 個時槽平均耗費的處理時間也從原本隨意環狀管線的 3.28 個單位減少至 2.36 個單 位。 本論文所提出的非循序式比對概念,是以單一管線為基礎來闡述,未來希望將 此方法推廣在多管線上也可以處理。且在比較兩種方法上能使用 FPGA 讓其模擬結 果更數據化的表現出來。. 49 .
(50) 參考文獻 [1] Taiwan Network Information Center,“歷次個人及家庭上網行為調查趨勢 分析",http://www.twnic.net.tw/download/200307/0901d.pdf,2009 [2] Computer Security Institute of U.S.,“CSI/FBI Computer crime and security survey",http://i.cmpnet.com/gocsi/db_area/pdfs/fbi/FBI2003.pdf,2003 [3] Behrouz A. Forouzan,“TCP/IP Protocol Suite Third edition",pp.17-38, 2006 [4] Kuo-Ming Chen,“An efficient IP lookup and update scheme for next generation network",master thesis to Institute of Electronic and Information Engineering National Tunlin University of Science and Technology,2004 [5] Adam Drozdek,“Data structures and algorithms in C++ 2nd edition", pp.216,2001 [6] Wikipedia. ,. “ file:Treedatastructure.png " , http://zh.wikipedia.org/zh-tw/File:Treedatastr ucture.png,2003 [7] H. Jonathan Cgao, Bin Liu,“High Performance Switches and Routers", pp.29-32、pp.45-46,2007 [8] V.Srinivasan, G.Varghese , “Faster IP lookups using controlled prefix expansion” in Proc.ACM SIGMATICS, Madison Wisconsin, pp.1-10,1998. 50 .
(51) [9] David A. Patterson, John L. Hennessy,“Computer Organization and Design fourth edition",pp.330-332,2009 [10] Harvey G. Cragon,“Computer Architecture and Implementation",pp.207, 2000 [11] Florin Baboescu, Dean M. Tullsen, Grigore Rosu, Sumeet Singh,“A Tree Based Router Search Engine Architecture With Single Port Memories",ACM SIGARCH Computer Architecture News, vol. 33, pp.123-133,2005 [12] S. Kumar, M. Becchi, P. Crowley, J. Turner,“Camp: Fast and Efficient IP Lookup Architecture",Proceedings of ANCS '06, pp.51-60,2006 [13] W. Jiang, V. K. Prasanna,“A Memory-Balanced Linear Pipeline Architecture for Trie-based IP Lookup",In Proc. HotI'07, 2007 [14] P. J. Deitel H. M. Deitel,“C How to Program fifth edition",pp.66-67,200 [15] M. Morris Mano, Charles R. Kime , “ Logic and Computer Design Fundamentals third edition",pp.205-206, pp.282-284, pp.72,2004 [16] Ellis Horowitz, Sartaj Sahni,“Fundamentals of Data Structures in Pascal", pp226-227 ,1984. 51 .
(52)
數據
+7
Outline
相關文件
※概略說明與被保險人開始縮減工資工時之實施日期,及其所採取
其交線垂直於軸三角形的底邊。進而,如果截痕的直徑平行於軸三角形的一邊,那麼任一
4.手機充電後,立刻拔掉充電器插頭,只要全球 行動電話 使用者做到 省下的能源 相當 10%行動電話
接收機端的多路徑測量誤差是GPS主 要誤差的原因之一。GPS信號在到達 地球沒有進到接收機之前,除了主要 傳送路徑之外,會產生許多鄰近目標 反射的路徑。接收機接收的首先是直
a 顧客使用信用卡在線上付款時,只要輸入其卡號及有效期
• 中文科、常識科及圖書科協 作,以「活在資訊中」為主 題,進行本科、跨學科讀書 會,增加閱讀量,培養閱讀 興趣..
行為 描述行為時不要有批判成分 影響 說明行為對團隊/其他人的影響 期望 說明預期會採取甚麼改進性行為 結果
本課程共分為兩階段。第一階段由基本網頁概念介 紹開始,帶領學員循序漸進使用 FrontPage 2003 建 立個人網頁;第二階段著墨在 Flash