行政院國家科學委員會專題研究計畫 成果報告
晶片系統架構技術及開發平台研究之推動(3/3)
計畫類別: 個別型計畫
計畫編號: NSC93-2215-E-002-010-
執行期間: 93 年 08 月 01 日至 94 年 07 月 31 日
執行單位: 國立臺灣大學電子工程學研究所
計畫主持人: 陳少傑
共同主持人: 蔡加春
報告類型: 完整報告
處理方式: 本計畫可公開查詢
中 華 民 國 95 年 1 月 31 日
目錄
壹、計畫緣由 ……… 2
貳、舉辦徵求研究計畫及執行情形
……… 2
參、十個附屬計畫與執行成果 ……… 3
1. 晶片系統架構技術及開發平台研究之推動(3/3)-附屬計畫一
適用於
H.264/MPEG-4 AVC 的嵌入式即時多媒體系統之整合設計
2. 晶片系統架構技術及開發平台研究之推動(3/3)-附屬計畫二
多個影像追蹤代理器之
FPGA 加速硬體模組實作
3. 晶片系統架構技術及開發平台研究之推動(3/3)-附屬計畫三
使用同步讀—寫演算法以提昇快閃記憶體的大量存取效能
4. 晶片系統架構技術及開發平台研究之推動(3/3)-附屬計畫四
應用於多媒體電路供電系統核心電路之研究
5. 晶片系統架構技術及開發平台研究之推動(3/3)-附屬計畫五
使用
FPGA 設計二維封包分類演算法
6. 晶片系統架構技術及開發平台研究之推動(3/3)-附屬計畫六
SOC 嵌入式系統之電源規劃
7. 晶片系統架構技術及開發平台研究之推動(3/3)-附屬計畫七
無線感測器網路基礎架構設計與實作 — 智慧型辦公室⁄家庭應用
8. 晶片系統架構技術及開發平台研究之推動(3/3)-附屬計畫八
CCD/CMOS 彩色影像插補點晶片設計
9. 晶片系統架構技術及開發平台研究的推動(3/3)-附屬計畫九
數位相機之影像辨認系統研究
10. 晶片系統架構技術及開發平台研究之推動(3/3)-附屬計畫十
ARM-based SOC 平台以整合並加速影像擷取處理
肆、舉辦十五場 SoC 訓練課程 ……… 52
伍、舉辦五場 SoC 人才培訓海外講座 ……… 53
壹、計畫緣由
我們的工作是結合北部地區(包括中壢桃園、台北縣市、宜蘭、花蓮等地區)之各 大學院校(包括綜合大學、科技大學、技職院校),及有興趣在這些領域從事研究的教 師學生,共同努力達成下列目標: 1. 協調在 SoC/IP 領域的研究團隊,從事規劃性的主題研究,以期更有效率地研發 上述各領域之新的技術。 2. 鼓勵教師學生投入 SoC/IP 設計技術之研究,擴大研究能量之基礎規模,預期投入 之教師有50 位以上,每年畢業的學生達 700 人以上(其中包括取得學士學位投入工作者 300 人,取得碩士投入工作者 300 人,取得博士投入工作者 100 人)。 3. 加強產、研、學溝通與結合,期使學校之研發成果能直接地有助於 SoC/IP 設計產 業之技術。並進一步獲得產業界之回饋,以充實學校之研發資源。 在過去一年來,我們舉辦了一場徵求研究計畫說明會、十五場SOC 訓練課程、及五 場SOC 人才培訓海外講座。貳、舉辦徵求研究計畫及執行情形
1. 93.06.29 國科會"北區 SOC 系統整合設計技術研究計畫"公開徵求研究計畫說明 (Call for Proposal)2. 93.08.04 北區 SOC 附屬計畫(經費補助清單)
3. 94.03.11 於台灣大學電機二館 124 會議室討論附屬計畫之執行現況並準備成果 展示
參、十個附屬計畫與執行成果
1. 晶片系統架構技術及開發平台研究之推動(3/3)- 附屬計畫一 適用於H.264/MPEG-4 AVC 的嵌入式即時多媒體系統之整合設計 2. 晶片系統架構技術及開發平台研究之推動(3/3)- 附屬計畫二 多個影像追蹤代理器之FPGA 加速硬體模組實作 3. 晶片系統架構技術及開發平台研究之推動(3/3)- 附屬計畫三 使用同步讀—寫演算法以提昇快閃記憶體的大量存取效能 4. 晶片系統架構技術及開發平台研究之推動(3/3)- 附屬計畫四 應用於多媒體電路供電系統核心電路之研究 5. 晶片系統架構技術及開發平台研究之推動(3/3)- 附屬計畫五 使用FPGA 設計二維封包分類演算法 6. 晶片系統架構技術及開發平台研究之推動(3/3)- 附屬計畫六 SOC 嵌入式系統之電源規劃 7. 晶片系統架構技術及開發平台研究之推動(3/3)- 附屬計畫七 無線感測器網路基礎架構設計與實作 — 智慧型辦公室⁄家庭應用 8. 晶片系統架構技術及開發平台研究之推動(3/3)- 附屬計畫八 CCD/CMOS 彩色影像插補點晶片設計 9. 晶片系統架構技術及開發平台研究的推動(3/3)- 附屬計畫九 數位相機之影像辨認系統研究 10. 晶片系統架構技術及開發平台研究之推動(3/3)- 附屬計畫十 ARM-based SOC 平台以整合並加速影像擷取處理晶片系統架構技術及開發平台研究之推動(3/3)-附屬計畫一
適用於 H.264/MPEG-4 AVC 的嵌入式即時多媒體系統之整合設計
Integrated Design of an Embedded Real-Time Multimedia System
for H.264/MPEG-4 AVC
計畫編號:NSC93-2215-E002-010/001
執行期限:93/8/1~94/7/31
計畫主持人: 李宗演 教授 台北科技大學電子系
計畫參與人員:戴吉雄、陳鋐盈、徐昱淳、吳宜穆
一、中文摘要
本研究計畫之目的,在整合應用以 ARM 為基礎的嵌入式多媒體即時作業系統於 H.264/MPEG-4 多媒體上。由於 H.264 是 一種因應即時系統(RTOS)所設計的可擴 展 性 串 流 傳 輸(scalability stream media communication)的編碼技術。H.264 主要架 構 於 細 粒 度 可 擴 展 (Fine Granular Scalability, FGS)的壓縮編碼機制。細粒度 可擴展壓縮編碼技術是最新MPEG-4 串流 式傳輸標準,能依頻寛的差異來調整傳輸 的方式。細粒度擴展縮編碼技術以編入可 選 擇 性 的 增 強 層(enhanced layers) 於 碼 中,來提高影像傳輸的品質。本計畫主要 在於設計一種簡單有效的即時階層可擴展 的影像傳輸系統。在增強層編碼及 H.264 的基本層(base layer)編碼上使用漸進的細 粒 度 可 擴 展 編 碼 (Progressive Fine Granularity Scalable, PFGS) 能 直 接 使 用 H.264 的格式特色來實現 FGS。同時加入 了LB-LLF (Layer-Based Least- Laxity-First scheduling algorithm) 的排程演算法,來增 進網路傳輸影像的品質。由實驗結果顯示 本系統在串流影像品質PSNR 值上確有較 佳的效能。 關鍵詞 即時作業系統、排程、嵌入式系統、多媒 體應用Abstract
With the recent development in stream media, scalable H.264 video encoding is designed to be used in real-time video communications systems. The method is based on the Fine Granular Scalability (FGS) video coding method. It provides a framework to adapt to variations in the channel bandwidth and was recently standardized in the Streaming Video Profile of MPEG-4. In this project we proposed and implemented a simple and effective real-time layer-based scalable video communication system. In this system we use Progressive Fine Granularity Scalable (PFGS) scheme to encode the enhancement layer and H.264 to encode the base layer. This scheme is a direct implementation of FGS onto H.264 and does not employ any H.264-specific features for FGS. We also use the adaptive Layer-Based Least-Laxity- First (LB-LLF) scheduling algorithm to improve the output quality of video on network and to achieve synchronized playback effect. The experimental results show that subjective quality of the video stream is significantly improved using our methods.
Keywords
Real-Time Operating System (RTOS), Scheduling, Embedded System, Multimedia Application.
二、動機與目的
由於大部分的多媒體應用需要處理大量的 資料運算。故適應網路傳輸頻寛及儲存容 量限制的視訊編碼標準變的較為重要, 2001 年,ISO/IEC MEPG 及 ITU-T VCEG 決定共同發展能較有效的解決頻寛及儲存
空間的視訊編碼標準。於是成立了 JVT
(Joint Video Team) 來制定新的標準。在參
考 H.26L 等 視 訊 編 碼 後 制 定 了 名 為 H.264/MPEG-4 part 10 的新視訊編碼標 準,以使其在編解碼及網路傳輸上有更佳 的效率。H.264/MPEG-4 part 10 這個新興 的編碼標準能將MPEG-2 的串流碼壓縮為 原本的一半而保留相當的品質。 H.264 不同於先前的視訊編碼標準, 在傳輸 MPEG-4 的影片上,它能提升約 50%效能。這使得 H.264 更適用於網路的 傳輸應用上。雖然H.264 有依不同比率切 換不同位元串流的特色,但它仍不能適應 不同的網路頻寛狀況來做即時的處理。因 此若能結合FGS 及 H.264 等相關技術,則 可解決其封包傳輸的問題。在編碼方面 PFGS 主要被使用在增強層,而 H.264 則 被使用在基本層。 但由於H.264 可擴展性的研究介紹並 不多,本計畫將直接把 FGS 實踐於 FGS 上而不使用H.264 內含的 FGS 特性,並使
用LB-LLF (Layer-Based Least- Laxity-First scheduling algorithm) 的排程演算法,以 階,來提高此系統於網路上傳輸的品質與 效能。
三、研究方法與成果
本計畫的前半段,我們先研究 H.264 的擴展性編碼方式。FGS 是仰賴 MPEG-4 標準的一種技術,藉由參考的幀(frame)。 只有基礎層是由最原始的資料串所拆解出 的參考 frame 來預測重建,而其他的增強 層則由其他增強層參考的 frame 來交互參 照建立的。這種利用增強層來細粒度擴展 的編碼方式,可以使得影像能適應網路傳 輸上通道及頻寛的變動。即當原始資料以 細粒度擴展的方式產生內嵌式的位元串流 資料後,增強層可以當時的網路狀況來決 定接收的資料量。然而,使用移動預測的 方式編碼,所以當基礎層的影像品質低落 時。即使使用FGS 也未必比傳統的雜訊比 可變編碼(SNR scalable coding)來的有效 率。 由於H.264 的壓縮演算法主要在處理 相似度較高的原始資料,也就是說原始資 料在時問及空間域的改變上較小。每個輸 入 的 影 像 資 料 被 處 理 成 I-frame (intra- frame), P-frame(previous image) 或 是 B- frame (bi-directional image)輸出。而這樣的 切割方式能適應網路上的通道解碼及丟包 解碼的要求。FGS 的架構在 MPEG-4 的標 準裡,以 Rbase的位元速率(bit-rate)處理非 擴展性基礎層的編碼及最快的位元速率 (Rmax)處理增強層的編碼,在傳送時,則依 頻寛來決定增強層的位元速率(Ravaliable), 而如圖一則是表示FGS 在 MPEG-4 串流視 訊編碼的架構。6 I B P B Rmax Rbase BP1 BP5 BP4 BP3 BP2 En ha nc emen t La ye r Ba se L ay er RBP1 RBP4 RBP3 RBP2 圖一 FGS 之結構圖,BP1, BP2,…BP5 是指 增強層的 bit-planes。 圖二 PFGS 的串流傳輸系統架構 圖二為本計畫所設計之 PFGS 的串流 傳輸系統架構圖。為了使影像在網路上的 傳輸有較佳的品質,所以我們在編解碼的 傳 送 端 和 接 收 端 間 增 加 了 基 本 層(Base layer)和增強層(Enhance layer)緩衝器來處 理各層級間的串流資料。當原始影像串流 資料被擷取後,經由 H.264 的可層級編碼 器編碼分成一個基本層及 n 個增強層資料 流入緩衝器。 我們將 PFGS 所編碼後,各層(包含
Base Layer 和 Enhancement Layer)的輸出 做 可 調 式 LB-LLF(Layer-Based Least- Laxity-First)之排程,來達到在解碼時,各 層品質與效率之間的最佳化。
下列為每個Task (T )的特性:
Tx(y) : 在第 x 個畫面的第 y 階層。 Ex(y): 在 transmission buffer 裡 Tx(y) 準備
要到排程之 Ready Buffer 的最後時 限。 Px(y) : Tx(y)的整個過程的時限。 D(x) : 在第 x 個畫面之所有 T 要傳送出 去的最晚傳送時間。
Lx(y) :Tx(y)的 laxity 值。
Lx(y)= D(x) - Px(y) 。
LTx(y) : 每個單位時間 Tx(y)的 laxity 值。
可調式 LB-LLF 演算法
Step 1: let R = frame set of ready packets with the deadline in the server transmission buffers
Step 2: compare the current time tcur with
the deadline D(x) of all the packets in R
If tcur > D(x), remove the packet
from R
Step 3: calculate the least-laxity value Lx(y) for each set from set = 1 to N (where N is the buffer size in server) Step 4: select the smallest least-laxity value LTx(y ) packets from R
Step 5: send out the set of packets, and let tcur = tcur + Px(y)
在 接 收 端 , 我 們 使 用 了 分 派 器 程 式 (Dispatcher)將網路接收到的串流資料導入 接收端各對應之基本層和增強層緩衝器, 再由H.264 層級解碼器解碼輸出影像信號。 圖三為我們編碼後的 4 階增強層的位元 數。所有層次的綜合恢復出原來的視頻序 列,因此能夠提供的視頻品質從基本層(最 差)到所有層的綜合(最好)。增強層是 有級別的,不同級別對應不同的重要性。 一般最低要求是至少保證基本層,依次按 層次級別遞增,因為如果缺少下面的任何 一層,在上面的增強層就沒有任何作用。 0 5000 10000 15000 20000 25000 1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 Frame Index Bits Enh4 Enh3 Enh2 Enh1 圖三 4 階增強層的位元數 為了驗證本研究計畫所提出的系統架構 及演算法,我們使用JVT (Joint Video Team) JM 9.0 encoder/decoder 來模擬實驗。圖四 的 實 驗 數 據 是 以 每 秒 25 個 frame 的 Foreman QCIF 格式以不同的變動位元速率 與H.263、MPEG-4、H.264 做 PSNR 值影 像效能比較。由數據顯示,本系統及演算 法比H.263、MPEG-4 均高出約 2~4dB。 比無階層的H.264 影像傳輸亦較略高 1dB。 26 28 30 32 34 36 38 40 42 44 46 100 200 400 600 800 1000 1200 1400 1600 1800 Bit Rate (kbps) PS N R ( dB) H.264-LB H.264 MPEG-4 H.263 圖四 變動位元速率的 PSNR 測量值
四、結論
在這計畫裡我們提出並且實現一個完 整和有效的H.264 即時層級式可擴展的視 訊通信系統。 我們使用 PFGS 編碼增強層 和H.264 編碼基礎層。 本研究同時加入了LB-LLF (Layer-Based Least-Laxity- First scheduling algorithm) 的排程演算法,來增 進網路傳輸影像的品質。
五、參考文獻
[1] Y. He, F, Wu, S. Li, Y. Zhong, and S. Yang, “H.26L-based Fine Granularity Scalable Video Coding,” in Proceedings of IEEE International Symposium on Circuits and Systems (ISCAS), Scottsdale, Arizona, USA, 26-29 May 2002, vol. 4, pp. 548-551.
[2] Wang, Q., Wu, F., Li, S., Zhong, Y., and Zhang, Y., (2001) ‘Fine-granularity spatially scalable video coding’, Proceedings of IEEE International Conference on Acoustics, Speech, and Signal Processing, 2001, (ICASSP '01), vol.3, pp.1801–1804.
[3] Draft ITU-T Recommendation and Final Draft International Standard of Joint Video Specification (ITU-T Rec. H.264/ISO/IEC 14 496-10 AVC), Mar. 2003.
[4] A. Tamhankar and K. R. Rao, ”An overview of H.264/MPEG-4 Part 10,” The 4th EURASIP Conference focused on Video/Image Processing and Multimedia Communications, Vol. 1, pp.1-51 July 2003.
[5] Gharsalli, F.; Baghdadi, A.; Bonaciu, M.; Majauskas, G.; Cesario, W.; Jerraya, A.A., “An efficient architecture for the implementation of message passing programming model on massive multiprocessor,” Proceedings of the 15th IEEE International Workshop on Rapid System Prototyping, 2004. 28-30 June 2004,
8 pp. 80 – 87.
[6] Chia-Ying Tseng, Liang-Teh Lee, Yu-Lan Shih, and Kang-Yuan Liu, "Adaptive Layer-Based Scheduling for Real-Time Transmission on Scalable Multimedia Stream," Proceedings of the Tenth International Conference on Distributed Multimedia Systems (DMS'2004), Sep. 2004, pp. 389-392.
[7] K. Ugur and P. Nasiopoulos, “Design Issues and a Proposal for H.264-based FGS,” contribution MPEG03/M9505, ISO/IEC JTC/SC29/WG11, Pattaya, Thailand, March 2003.
[8] Gao, K., Gao, W., He, S., Gao, P., and Zhang, Y., (2003) ‘Real-Time Scheduling on scalable media stream delivery’, Proceedings of the 2003 International Symposium on Circuits and Systems, 2003( ISCAS '03), vol.2, pp. II-824 - II-827.
[9] Gao, K., Zhang, Y., Gao, W., and He, S., (2003) ‘Real-Time Scheduling Supporting VCR Functionality For Scalable Video Streaming’, 14th IEEE Proceedings on Personal, Indoor and Mobile Radio Communications, 2003(PIMRC 2003), vol.3, pp.2711–2715.
[10] Hildebrandt, J., Golatowski, F., and Timmermann, D., (1999) ‘Scheduling Coproessor for Enhanced Least-Laxity-First Scheduling in Hard Real-Time Systems’, Proceedings of the 11th Euromicro Conference on Real-Time Systems, June 1999, pp.208-215. [11] Oh, S.H. and Yang, S.M., (1998) ‘A Modified
Least-Laxity-First Scheduling Algorithm for Real-Time Tasks’, Proceedings of the 5th International Conference on Real-Time Computing Systems and Applications, Hiroshima, Japan, 1998, pp. 31-36.
晶片系統架構技術及開發平台研究之推動(3/3) -附屬計畫二:
多個影像追蹤代理器之 FPGA 加速硬體模組實作
計畫編號:NSC 93-2215-E-002 -010/002
執行期限:93 年 8 月 1 日至 94 年 7 月 31 日
主持人:簡忠漢 聖約翰技術學院電機工程系
計畫參與人員:侯承宏、黃耀璋、賴建宏、吳添寶
一、摘要
本計畫中我們針對多個影像追蹤代理 器共同合作完成整體目標任務之應用,探 討以 FPGA 硬體模組實作其影像處理演算 法加速其運算速度。我們特別針對影像追 蹤演算法中處理最為耗時的部分,例如處 理影像邊緣輪廓的模組,採用VHDL 硬體 描 述 語 言 來 實 現 此 類 模 組 。 我 們 使 用 Quartus II 與 Modelsim 軟體做為模組編譯 與模擬之開發環境,至於 FPGA 晶片則選用Altera Nios 的 Cyclone EP1C20F4007C 晶片。並自行設計資料傳輸模組,先以電 腦傳輸影像資訊至FPGA 晶片,而將 FPGA 處理後之影像傳回電腦顯示做驗證比對。 關鍵詞:影像追蹤、FPGA、代理器
二、緣由與目的
近年來結合網際網路、通訊技術、嵌入 式系統與控制理論之網路化整合控制已是 時勢所趨。例如資訊網路、交通運輸系統、 工業生產與製造系統、家庭與辦公室自動 化以及微小動態型機電系統等皆為現今之 重要的大規模、分散式工程系統。在這些 系統中的共同特色是它們皆具備有數量龐 大的個別的個體元件,例如:移動式載具、 工作站等,稱之為代理器。本計畫著重於 發展代理器的影像感測能力,與整合多個 代理器間的影像感測資訊做為互動之依 據。藉由加入影像資訊的感測,可使代理 器處理具智慧型之工作。例如: (1) 由影像資訊辨識代理器與目標物,並 計算其位置資訊以供路徑規劃之用。 (2) 透過影像伺服驅動代理器追蹤移動的 目標物或追隨同伴。 (3) 結合影像與其他感測資訊完成多個代 理器集合編組隊形。 (4) 藉由影像資訊可智慧型地達成群組整 體規避繞過障礙物之功能。 近十年來國內外已有相當多的文獻,研 究利用影像感測資訊為基礎,以進行目標 物感測追蹤[1]~[21],並提出許多影像追蹤 演算法。本計畫中我們特別考慮多個影像 追蹤代理器共同合作完成整體目標任務之 應用。應用的範例有RobotCup 聯盟推動之 機器人足球賽,期望在2050 年組成一機器 人足球隊,能打敗世界盃足球賽之冠軍隊 伍。又如Carnegie Mello University 與 David Sarnoff Research Center[22]聯合嘗試結合 多個影像偵測器與機動性地面與空中載 具,監控戰場上敵軍的移動情形。 上述應用中需整合多個代理器間的影 像感測資訊做為互動之依據。然而隨著影 像處理的尺寸、解析度、與資料量不斷地 增加,純粹以軟體程式執行影像處理與傳 輸工作,已明顯效能不足,往往無法達到 即時系統之要求。因此必須藉助專屬之處 理硬體,來加速影像處理。 近幾年開始有文獻採用可重組化運算 架 構 (Reconfigurable Computing Architecture) 設 計 影 像 處 理 的 硬 體 模 組 [23][24],因此本計畫採用具可重組計算功 能之可程式系統晶片(SOPC),發展加速影 像追蹤處理與傳輸之硬體 IP 模組,並於 FPGA 晶片實做與驗證。利用其具備應用 快速雛型的能力讓系統的驗證與模擬除錯 容易達成。三、研究方法與成果
3.1 影像處理方法在影像處理中,常藉助空間濾波器過濾 雜 訊 或 是 強 化 訊 號 。 例 如 高 通 濾 波 器 (high-pass filter) 可用於強調影像的邊緣及 細微複雜的部份,因此適合在邊緣化影像 時使用。低通濾波器(low-pass filter) 能把 影像高頻雜訊部份去除,留下較柔和之影 像。以下我們介紹本計畫實現影像追蹤演 算法常用之影像處理方法。 (1)、中值濾波器: 假設一原始影像以下圖 1 之矩陣表 示,假設其中包含二個雜訊(像素值為 100 及110)。 圖1. 原始影像灰階值 以(2, 2)點(像素值 33)為例進行中值濾 波處理,如圖2,以(2, 2)為中心點,形成 3x3 矩陣。其值由小到大排列分別為: 11, 21, 22, 22, 31, 32, 33, 33, 110 圖2. 中值濾波之 3×3 像素區域範例 其「中間值」為「31」,因此以 31 為 (2, 2)點的新像素值,取代原先像素值 33。 依此類推,原始影像的每一點均進行中值 濾波處理,可得圖5 之新影像,其中可發 現雜訊已被消除。 圖3. 執行中值濾波後之影像灰階值 (2)、迴旋運算(convolution): 迴旋運算是 DSP 系統最常應用的方 法,以一特定之係數遮罩(mask),在每一 像素上與其鄰近區域之像素,進行乘加 運算。像素內的灰階值較受鄰近點的影 響,故而遮罩大小以3x3 為主,如圖 4 所 示。ㄧ個3x3 遮罩共有 9 個係數,即 m1 至 m9。為了計算原影像的一個像素點灰 度值,此遮罩的中心點(m5)。經一連串的 乘法和加法運算所得的結果即為該像素 點的取代值。 圖4. 迴旋運算計算方式 (3)、影像邊緣化: 在數位影像處理中,邊緣偵測是相當 重要的,其目的在能有效且準確地偵測到 目標物邊緣。凡欲得知物體在影像中之形 狀、面積、分布範圍、個數等資訊。必須 先對影像邊緣化處理,處理後不但上述物 體的特性不會消失,反而能更清楚的了解 影像的資訊。常用之邊緣偵測方法包括 Laplacian 濾波器、 Sobel 濾波器等。 Laplacian 濾波器亦採用標準的迴旋運 算。其對高頻訊號的高度敏感,所以應用 Laplacian 濾波器前,應先進行平滑化濾波 (如高斯平滑濾波)。 Sobel 濾波器使用空間一階導數來增 強高頻的空間訊號,在影像中,這些高頻 訊號通常代表較銳利的物體邊緣或線條 特徵。假如我們需要的影像資訊不多,以 邊緣化後的影像來代替原始影像是一個 很好的選擇。 3.2 影像處理模組實做 以下介紹本計畫實做上述之影像處理 IP 模組之方法。我們主要基於參考文獻[23] 之架構,其採用VHDL 硬體描述語言來實 現 此 類 模 組 。 我 們 使 用 Quartus II 與 Modelsim 軟體做為模組編譯與模擬之開發 環境,至於驗證之FPGA 晶片則選用 Altera
Nios 的 Cyclone EP1C20F4007C 晶片。 (1) window_3x3 模組:影像遮罩的大小通
常是3*3,因此我們採用 3*3 遮罩來做影像
處理。首先我們採用Altera Mega Function
供 window_3x3 模組建立出一個 3*3 矩陣 w11, w12, w13, w21, w22, w23, w31, w32, w33 的資料,其架構如下圖: 圖5. window_3x3 模組之架構 (2) rc_counter 模組:本計畫中我們預設處 理的影像大小為 128*128 像素。所以必須 在每一行與每一列做計數,目標是用來告 知系統已經掃描完某一行或某一列,必須 做換行或換列的動作,其掃描順序如下圖: 圖6. rc_counter 模組之掃描示意圖 (3) sort_3x3 排序模組:中值濾波器是取 3*3 矩陣之中間值,因此需採用排序模組將 w11、w12、w13、w21、w22、w23、w31、 w32、w33 等數值由大到小的依序排列,其 架構如下圖: r r r FIFO_A r r FIFO_B r r c11 c12 c13 c14 c21 c31 c22 c32 c23 c33 c24 c34 w11 w12 w13 w21 w22 w23 w31 w32 w33 r11 r21 r31 c41 c42 c43 r42 r43 r4a4 r4b4 r57 r67 r77 r56 r66 r76 r55 r65 r75 r41 r4a1 r4b1 r53 r63 r73 r54 r64 r74 c4a1 c4a2 c4b1 c4b0 c4b2 c51 c61 c71 r4a5 r4a3 r4a2 r4b5 L 2L 3L r51 r52 r62 r61 r71 r72 Compare L H 圖7. sort_3x3 排序模組之架構圖 (4) ro_filt_3x3 模組:此模組實現中值濾波 器 , 其 採 用 window_3x3 、 sort_3x3 、 rc_counter 這 三 個 模 組 所 演 算 出 來 的 資 料,並取出sort 排序模組所建立的 order=4 的數值做輸出,此即為中值濾波處理,其 架構如下圖: W indow_ 3x3 Sort_ 3x3 Rc_ cou nte r 圖8. ro_filt_3x3 模組實現中值濾波器 (5) conv_3x3 模組:以下模組實現迴旋運 算,其中k0, k1, k2, k3, k4, k5, k6, k7, k8 即 是遮罩係數。 利用不同的遮罩係數可實現 Laplacian 濾波器、Sobel 濾波器。 r r r FIFO_A r r FIFO_B r r m0 m1 m2 m3 m4 m5 m6 m7 m8
a10 a11 a12 a13 r14 r22 r31 a21 a20 a30 w11 w12 w13 w21 w22 w23 w31 w32 w33 a4 0 Shift Divide Dout k7 k8 k6 K5 k4 k3 k2 k1 k0 D mx axx rxx Multiplier Adder Register 圖9. conv_3x3 模組實現迴旋運算 3.3 模擬與實驗結果 以下我們將實作模擬上述模組。首先如 附圖 1 所示,我們以假想的影像資料序列 0, 3, 6, 9,…(3*k mod 128, k=0, 1, 2, 3…),輸 入至window_3x3 模組,經模擬後成功建立 出一個3*3 矩陣 w11, w12, w13, w21, w22, w23, w31, w32, w33 的資料。附圖 2 為 sort_3x3 排序模組之模擬圖,其中根據 window_3x3 模組建立的 3*3 矩陣資料,成 功依其大小排序(如 s1~s9)。附圖 3 為 ro_filt_3x3 模組之模擬圖,其以 sort_3x3 排序模組排序之資料取出指定順位的資料 (dout),例如中值之順位為 4。附圖 4 為 conv_3x3 模組實現迴旋運算之模擬結果。 實作上述模組之後,我們進ㄧ步以實際 影像測試,並採用以下之測試驗證流程。
圖10. 影像處理模組驗證測試流程 首先將設計好的 VHDL 程式,經由 Modelsim 進行編譯。正確無誤後,接著進 行模擬測試驗證,我們利用Testbench 來做 驗證。Testbench 主要是用來協助程式撰寫 者驗證程式的正確與可靠性。Testbench 可 使輸出與輸入訊號的向量資料文件化,使 其更易保存與維護。且為具系統性之方 法,並非波形檢查,因此可降低人為錯誤。 並可重複使用,縮短設計驗證時間,具可 流通性,攜帶性極高。 在Testbech 中我們利用 VHDL 的 TEXT /IO 函式庫讀取輸入影像資料,並將影像處 理的結果寫入外部檔案。然而TEXT/IO 的 函式庫只可以讀寫文字格式的檔案,無法 讀取二進位檔,但一般的圖像檔案除包含 標頭外,其圖像的資料皆以二進位格式儲 存,故需額外撰寫程式將標頭濾除並將二 進位格式圖像資料轉換成文字格式。 透過 TEXT/IO 函式庫可讀寫純文字格 式將模擬驗證之結果資料輸出至一個檔案 儲存,以方便進一步以 Matlab 做驗證比 對,若影像處理結果不正確時,便重複修 改與測試,直至結果正確後,再進行燒錄 至FPGA 晶片上進行實際的驗證。圖 11 為 實際影像處理模組模擬流程結果範例。 (a)原始影像 (b)文字格式影像資料 (c)結果文字格式影像 (d)Matlab 繪出結果影像 圖11. 影像處理模擬流程範例 根據上述驗證流程,我們針對中值濾波 器、Laplacian 濾波器、Sobel 濾波器進行驗 證,結果如圖12 所示。 經過上述一連串的模擬、驗證後,可證 實我們所使用的VHDL 影像處理模組正確 無誤,能將影像資訊依照我們所設定的規 則、條件,處理成我們所需要的特徵影像。 (a)原始影像 (b)中值濾波結果
(c)Laplacian 濾波結果 (d)Sobel 濾波結果(y 方向)
圖12. 影像處理驗證結果 接下來就是要將此模組下載至 FPGA 上,用來實現以硬體加速影像處理。因此 接下來我們使用 Quartus II 將電路載入至 FPGA。在硬體實際測試,我們使用電腦傳 遞影像資料至 FPGA,再讀取由 FPGA 處 理過的影像資訊傳回電腦比對,以驗證硬 體下載的正確性,其設計方法如下: (1) 資料傳遞的規劃: 我們選擇使用 RS232 串列輸入影像資 訊,而經由 FPGA 處理過的影像資訊則由 Print Port 並列讀取回電腦。由於影像處理 模組輸入為8 Bit 灰階影像資料,輸出則為 經乘加運算後之17 Bit 資料。因此考慮資 料傳遞的方便性,我們捨棄了最高位元的 資料(通常為 0),只以 Print Port 以每次 8 Bit
分兩次讀回的方式讀取16 Bit 資料。其架
構如下圖:
圖12. 影像傳輸與處理流程
由於需要使用到 RS232 串列傳輸接收 資料,因此,我們設計以 Maxplus II 設計 UART 的接收模組;而傳回電腦的資料需 分為2 次、一次 8 Bit,分別為高 8 Bit 與低 8 Bit 的方式傳回,因此我們採用多工器, 由電腦控制選擇線,使其能正確的收到完 整的16 Bit 的資料。其架構如下圖: 圖13. 以 Maxplus II 設計資料傳輸模組 (3) FPGA 下載規劃:
我們使用的 FPGA 為 Altera Nios 的 Cyclone EP1C20F4007C 晶片,其外觀如下: 圖14. Altera 之 Cyclone 發展板 我們直接使用它所提供的 Serial port connector(J19)來接收電腦端的影像資 訊,而在 J12 的 14-pin header 接上 DB25 的連接頭用以和電腦的Print Port 連結。 (4) 電腦端資料傳輸軟體撰寫: 我們使用了 Visual C++撰寫了一段資 料傳輸用的程式,用以控制RS232 與 Print Port 與 FPGA 做資料的傳遞。
四、結論
本計畫中我們針對多個影像追蹤代理 器共同合作完成整體目標任務之應用,探 討以 FPGA 硬體模組實作其影像處理演算 法加速其運算速度。我們特別針對影像追 蹤演算法中處理最為耗時的部分,例如處 理影像邊緣輪廓的模組,採用VHDL 硬體 描 述 語 言 來 實 現 此 類 模 組 。 我 們 使 用 Quartus II 與 Modelsim 軟體做為模組編譯 與模擬之開發環境,至於 FPGA 晶片則選用Altera Nios 的 Cyclone EP1C20F4007C 晶片。實驗初期先以電腦傳輸影像資訊至 FPGA 晶片,而將 FPGA 處理後之影像傳 回電腦顯示以作驗證比對。未來將自行設 計 影 像 擷 取 模 組 直 接 使 用 FPGA 擷 取 CMOS 影像資訊,並經 FPGA 內影像處理 模組處理後,將影像資訊送回電腦,或直 接輸出至LCD 顯示器顯示,以加速影像處 理速度。
五、參考文獻
[1] S. Hutchindon, G. Hager, and P. Croke, “A
Tutorial on Visual Servo Control”, IEEE Trans. on Robotics and Automation, Vol. 12, No. 5, 1996, pp. 651~670.
[2] William J. W., Carol C. W. H., and Graham S.
B., ”Relative End-Effector Control Using Cartesian Position Based Visual Servoing”, IEEE Trans. on Robotics and Automation, Vol. 12, No. 5, Oct. 1996, pp. 684~696.
[3] N. Papanikolopoulos and P. Khosla, “Adaptive
Robotic Visual Tracking”, Proc. American Control Conf., June 1991, pp. 962~967.
[4] N. Papanikolopoulos, P. Khosla, and T. Kanade,
“Visual Tracking of a Moving Target by a Camera Mounted on a Robot”, IEEE Trans. on Robotics and Automation, Vol. 9, No. 1, 1993, pp. 14~35.
[5] N. Papanikolopoulos and P. Khosla, “Adaptive
Robotic Visual Tracking Theory and Experiments”, IEEE Trans. On Automatic Control, Vol. 38, No. 3, 1993, pp. 429~445.
[6] N. Papanikolopoulos, B. Nelson, and P. Khosla,
“Six Degree-of-Freedom Hand/Eye Visual Tracking with Uncertain Parameters”, IEEE Trans. on Robotics and Automation, Vol.11, No. 5, 1995, pp. 725~732.
[7] Kok-Ming Lee, “Real-time Vision-based Tracking
Control of an Unmanned Vehicle”, Mechatronics, Dec. 1995.
[8] Ricardo C., Oscar H. N., and Benjamin K.,
“Adaptive Robot Control with Visual Feedback”, Proc. Of American Control Conf., Maryland, Jun. 1994, TM8-3:10.
[9] Oscar H. N., Ricardo C., and Benjamin K.,
“Tracking Adaptive Control of Robots with Visual Feedback”, Proc. of the 13th IFAC World Congress, San Francisco, USA, 1996, pp. 265~270.
[10] K. Hashimoto and T. Noritsugu,
“Observer-Based Control for Visual Servoing”, Proc. of the 13th IFAC World Congress, San Francisco, 1996, pp. 453~458.
[11] K. Hashimoto, T. Ebine, and H. Kimura, “Visual
Servoing with Hand-Eye Manipulator-Optimal Control Approach”, IEEE Trans. on Robotics and Automation, Vol. 12, No. 5, 1996, pp. 766~774.
[12] Hing I1 Suh, “Visual Servoing Algorithm Using Fuzzy Logics and Fuzzy-neural Networks”, Proc. IEEE International Conference on Robotics and Automation, Vol.4, 1996.
[13] J. T. Feddema, and C. S. G. Lee, “Adaptive
Image Feature Prediction and Control for Visual Tracking with a Hand-Eye Coordinated Camera”, IEEE Trans. On Systems, Man, and Cybernetics, Vol. 20, No. 5, Sep. 1990, pp. 1172~1183.
[14] Keqiang Deng, “Visual-tracking-based Robot
Vision System”, SPIE-The International Society for Optical Engineering Boston, MA, USA, Nov. 18~20, 1992.
[15] H. Tu and Li-Chen Fu, “Visual Tracking by
Image Moment Flow of Rigid Planar Patches”, Proc. R.O.C. Automatic Control Conf., 1995.
[16] H. Tu and Li-Chen Fu, “Application of Image
Moment Flow of a RPP to 6 DOF Visual Tracking”, Proc. IEEE, Conf. On Decision and Control, 1995.
[17] Chien-Hsiang Chen, “A System for 3D Target
Trajectory Detection via Stereo Visual Tracking", Department of Electrical Engineering of National Taiwan University, Director:Prof. Li-Chen Fu, 1997。
[18] H. Tu, Chien-Hsiang Chen, Chih-Yu Chen, and
Li-Chen Fu, “A System for 3D Target Trajectory Detection via Stereo Visual Tracking”, IEEE
Trans. on Control System Tech., 1997.(revised)
[19] Chih-Yu Chen, “ 5D Target Trajectory
Detection via Intelligent Monocular Visual Tracking System in Real-Time with Air-Target Orientation Recognition " , Department of Electrical Engineering of National Taiwan University, Director:Prof. Li-Chen Fu, 1998。 (12th Dragon Thesis Award)
[20] D. Liu and L. C. Fu, “Target Tracking in an
Environment of Nearly Stationary and Biased Clutter,” IEEE International Conference on Intelligent Robots and Systems, Vol. 3, pp. 1358-1363, 2001.
[21] T. Kuo, “A Robust Visual Servo Based
Headtracker with Auto-Zooming in Cluttered Environment,” Master Thesis, Dept. of Electrical Eng., National Taiwan University, 2002.
[22] T. Kanade, R. T. Collins, A. Lipton, P. Anandan,
P. Burt, and L. Wixson. “Cooperative multisensor video surveillance.” In Proc. of the DARPA Image Understanding Workshop, pages 3--10, 1997
[23] A. E. Nelson, “Implementation of Image
Processing Algorithm on FPGA Hardware”, Master Thesis, Vanderbilt University.
[24] Steffen Klupsch Markus, “Real Time Image
Processing based on Reconfigurable Hardware Acceleration”
附圖1. window_3x3 模組之模擬圖,我們輸入假想的影像資料序列 3*k mod 128, k=0, 1, 2, 3…,經模擬後
附圖2. sort_3x3 排序模組之模擬圖,我們以 window_3x3 模組建立的 3*3 矩陣 w11, w12, w13, w21, w22, w23, w31, w32, w33 資料,成功依其大小排序(s1~s9)。
附圖3.ro_filt_3x3 模組之模擬圖,其以 sort_3x3 排序模組排序之資料取出指定順位的資料(dout),例如中
值之順位為4。
16
晶片系統架構技術及開發平台研究之推動(3/3) -附屬計畫三
使用同步讀—寫演算法以提昇快閃記憶體的大量存取效能
Using current Readers-Writers algorithm to improve
performance of massive access on flash memory
計畫編號:NSC93-2215-E-002-010/003
執行期限:93/8/1~94/7/31
計畫主持人: 吳家榮 講師 龍華科技大學電子系
計畫參與人員:陳怡君、吳端儒
一、中文摘要
由於快閃記憶體(Flash Memory)單 位面積儲存大幅提昇,近年來已經廣泛使 用於各種消費電子產品上[1-2]。本計畫主 要 著 重 在 快 閃 記 憶 體 的 存 取 效 能 之 評 估,希望藉由此方面的探討可對於嵌入式 作業系統有一個可評比的依據,使往後在 開發系統時可做一個整體性的評估,進而 挑選出最適切的作業系統平台與開發環 境。本計畫內容分為四個部分: (1).一般而言,作業系統的功能愈強大其 整體的效能應該愈差,但是經過本計 畫的試驗發現並非如此。 (2).以程式語言的觀點而言,編譯式的 (Compiler)的程式語言通常其執行效 能遠勝於以直譯式(Interpreter)程式 語言所撰寫的程式,業經我們的實驗 發現卻與使用的作業系統有關。 (3). 依 照 作 業 系 統 的 理 論 觀 點 而 言 [16][18],多執行緒處理其執行效能 會比循序處理執行效能佳,經過本計 畫的實驗發現卻與使用的作業系統 有關。 (4).探討現有的同步處理程序並開發出適 合 於 快 閃 記 憶 體 的 同 步 讀— 寫 (Concurrent Readers-Writers)的演算 法,以提昇大量存取之效能。 關鍵詞: 快閃記憶體、同步讀—寫演算 法、多執行緒。z Abstract
In last decade, flash memory is found in a variety of common electronic devices (such as consumer electronics) due to high-capacity flash memory have made them possible [1-2]. In our project is focus on serving the performance of access of flash memory, operating systems. How to choice the platform and programming languages to develop embedded systems and obtain the better performance. The proposed project is divided into four parts:
(1) In general cases, more functionality of operation systems are less performance for total system, after our experiment we find that are not always true.
(2) From the view of programming language, the performance of program of compiler language is always better than interpreter language, after our testing the result is dependent on operating systems.
(3) From the points of view of operating systems[16][18], the performance of multi-thread process is better than sequential process, but this result is dependent on operating system.
(4) We will modify current Readers-Writers algorithm to gain better performance for accessing massive video-audio data on flash memory.
Keywords: flash memory, current
Readers-Writers algorithm, multi-threads.
二、動機與目的
近兩三年來製造個人電腦的微利時 代已經來臨,因此生產高附加價值的電子 產品勢在必行,現今市場上流行的產品, 如:MP3-播放器、隨身碟、數位像機、數 位攝影機、PDA 或功能完備的手機等,而 這些電子產品的共同趨勢—使用快閃記憶 體的量大幅增加,為使快閃記憶體存放資 料時正確無誤[3][4],並且提昇大量儲存影 音資料的效能,以及增長期使用壽命為本 計畫最主要的探討目的。 大部分的電子產品為了考量到整體的 成本,通常所使用的快閃記憶體在出廠前 已經存在局部是不良品,對於無法正常儲 存的記憶體,生產廠只是將所屬的區段 (Block(s))作一個標記;表示故障。從出廠 之後,整個區段再也不使用。再者,快閃 記憶體的可寫入動作都存在有限次數的現 象(平均約在十萬次以上),而一般的電子 產品通常是忽略這樣的現象,照常其寫入 的動作,因而使得部份資料是不正確的。 大量儲存影音資料是目前這些電子產品的 特色之一,在單一處理機(Single-processor) 的環境下,在不增加成本的考量下如何以 較高的效能,更是這類產品在市場上最大 的競爭利機。 在軟體的範疇中,舉凡作業系統、資 料結構或演算法等各學門[5-18],所論述 的演算法皆以適用於一般主記憶體為主。 自動監控或自動處理的一些系統在早期又稱之為SOB (System–on -Board),在
此其間作業系統所佔據的份量幾乎微乎其 微,而這些系統為達成相關功能大多是設 計 者 自 行 撰 寫 程 式 。 現 今 的 SOC( System-on-Chip ) 嵌 入 式 系 統 (Embedded System)由於體積小與低耗電 等特性,使得市場的使用量大大提高,而 這些系統由於功能愈趨複雜,與及開發環 境的配合,使作業系統扮演和參與的份量 也愈來愈多,目前用於開發嵌入式系統的 作業系統主要有:Win CE,uC/OS-II, uCLinux,…等作業系統。 以現今的作業系統理論上而言,為提 升 執 行 效 能 常 使 用 多 執 行 緒 處 理 (Processes)的方式撰寫程式,因為多執行 緒的程式碼可以共用對於整個系統的資源 (Resources)需求較低,所以效能較佳。而 嵌入式系統的開發作業系統是以 uCLinux 系列為主,此系列的作業系統並不能真正 支援多執行緒,換句話說這些作業系統表 面上可以接受多執行緒的執行,但實際上 每一個執行緒仍然以循序的方式執行,所 以 並 不 能 利 用 到 多 元 程 式 (Multiprogramming) 的 好 處 , 也 就 是 說 I/O(Input/Output)與執行(指一般指令)重 疊,已達成分享不同的效能。 本計畫為達成驗證更多的作業系統的 多執行緒與循序之程序對於大量資料存入 或自快閃記憶體讀取出,以找出最適切的 作業系統以滿足嵌入式系統在不同應用環 境下的需求。 本 計 畫 以 微 軟 公 司 的 作 業 系 統 Windows ME,Windows XP,與 Windows 2000 Server 版進行測試,並配合具有提供
多執行緒的程式語言Java(Borland 公司的
Jbuilder)與 C++(微軟公司的 Visual C++ 6.0 版),撰寫演算法並以不同長短的存取 資料長度測試各種的存取時間。
18
三、研究方法與成果
3.1 多執行緒演算法的實作 以微軟公司的 Visual C++ 6.0 版而 言 , 多 執 行 緒 的 執 行 必 須 將 翻 譯 的 (Compiler)環境重新設定。首先設定翻譯 C/C++的 Category 為 Code Generation 與 Use run-time library 為 Multithreaded DLL 即可。 反觀Java 與微軟公司的 C# .net 環境 下執行並不用特別加以修改任何設定,本 計畫所使用的多執行緒的架構如圖 1 所 示。 圖1 多執行緒的同步存取架構式意圖 3.2 使用不同程式語言在三種作業系統下 進行多執行緒與循序存取的試驗 在 Windows XP 下,分別使用循序的 方式與多執行緒的方式執行,其模擬的結 果如圖2(使用 C#撰寫演算法)與圖 3(使用 Java 撰寫演算法)所示,在本計畫所使用 的演算法下,多執行緒分別增加了7.4%與 18.3%的執行時間。 圖2 在 Windows XP 使用 C#撰寫演算法在 不同存取區段之存取時間 圖3 在 Windows XP 使用 Java 撰寫演算法 在不同存取區段之存取時間 反之在Windows ME 的作業系統下, 也分別使用循序式與多執行緒的方式執 行,其模擬的結果如圖4(使用 C#撰寫演算 法)與圖 5(使用 Java 撰寫演算法)所示,在 本計畫所使用的演算法下,多執行緒分別 減少了7.4%與增加 1.5%的執行時間。 圖4 在 Windows ME 使用 C++撰寫演算法 在不同存取區段之存取時間 Store a photograph Thread i Store a Java program Thread k Delete a Java program Thread nNew Thread download fromStore a picture some Web Thread m
Pro-cessor
Finished
Under Windows XP(Using C# to implement)
0 5000 10000 15000 20000 25000 30000 35000 40000 128B 256B 512B 1024B 2048B 4096B Block Size Access Time( m s) Sequential Thread
Under Windows ME(Using C++ to implement)
0 5000 10000 15000 20000 128B 256B 512B 1024B 2048B 4096B Block Size Access T ime(in ms) Sequential Thread
Under Windows XP(Using Java to implement)
0 20000 40000 60000 80000 100000 120000 140000 160000 1B 128B 256B 512B 1024B 2048B 4096B Block Size Access Time(in ms) Sequential Thread
19 圖5 在 Windows ME 使用 Java 撰寫演算法 在不同存取區段之存取時間 作業系統功能的多寡與其效能的高 低,通常是相互背離,簡而言之,作業系 統為了提供更多的功能,因此整個系統也 愈來愈大,致使整體的效能大大下降,尤 其在一些多人使用的中大型電腦下的作業 系統更是如此,本計畫初期以 Windows ME 與 XP 下的評比後,也證實此一現 象,但經過Windows 2000 Server 版上執行 後,卻發現與前面及一些電腦的常態不 同,在Windows 2000 Server 版的作業系統 下不論使用C++語言(如圖 6 所示,多執行 緒可提升 68.2%的執行效能)或 Java 語言 (如圖 7 所示,多執行緒可提升 56.5%的執 行效能)撰寫程式,都可以得到比較好的執 行 效 能 。 在 同 一 部 電 腦 下 模 擬 甚 至 比 Windows ME 和 Windows XP 下執行效能 要好很多,所以我們可以從圖2 至圖 7 觀 察出在Windows 2000 Server 版下不論是 多執行緒或者是循序程序的執行皆可得到 相對較佳的效能。 圖6 在 Windows 2000 Server 版下使用 C++ 撰寫演算法在不同存取區段之存取時間 圖7 在 Windows 2000 版下使用 Java 撰寫 演算法在不同存取區段之存取時間 存取區段的大小也會影響到整體的執 行效能,在Windows ME 下,由部分實驗 的數據顯示其規劃的緩衝區(Buffer)相當 的大,所以除每次存取區段太小(如:少數 幾個位元組)外,其存取所花的時間差異不 大,Windows XP 下所規劃的緩衝區相對 之 下 就 比 較 小 , 其 存 取 區 段 也 是 與 Windows ME 相當不能少數幾個位元組。 而在Windows 2000 Sever 版上存取區段也 不能太小,否則其存取效能一樣相當差。 一般程式語言的觀點是編譯式會比直 譯 式 的 效 能 要 好 , 在 Windows ME 與 Windows XP 下,再分別以 C++,C#或 Java 撰寫出的程式後,經本計畫的實驗驗證後 Java 語言反而效能稍微好一點,但整體上 而言差異並不十分顯著,反觀在Windows 2000 Server 版上,Java 所撰寫的程式其效 能卻比 C++好上十幾倍,圖 8 顯示使用 Java 比 C++效能快 13.7%,圖 9 也顯示使 用Java 比 C++效能快 10.0%,這也是違反 一般常理。
Under Windows 2K(Using Java to implement)
0 100 200 300 400 128B 256B 512B 1024B 2048B 4096B Block Size Access Time(in ms) Sequential Thread Under Windows ME(Using Java to implement)
12000 12500 13000 13500 14000 14500 15000 128B 256B 512B 1024B 2048B 4096B Block Size Access Time(in ms) Sequential Thread
Under Windows 2K(Using C++ to implement)
0 1000 2000 3000 4000 5000 Access Time(in ms) Sequential Thread
20 圖8 在 Windows 2000 Server 版下使用 C++ 與Java 撰寫演算法以循序的方式在不同 存取區段之存取時間 圖9 在 Windows 2000 Server 版下使用 C++ 與Java 撰寫演算法以循序的方式在不同 存取區段之存取時間
四、結論
一般而言,多執行緒的程序之執行會 比循序方式的執行效能要好,這指的是每 一個程序在每一次的動作時間(Burst Time) 較 短 的 情 形 下 , 否 則 作 業 系 統( 如 : Windows XP)因為整個系統的執行緒太 多,而所有的程序為了共用CPU 的時間, 反 而 必 須 常 常 進 行 本 文 交 換(Context Switch);而浪費不少時間在儲存現有程序 或回存下一個即將被執行之程序的暫存器 等內容,這些儲存與回存的動作對整個程 序的進行只是額外負擔(Overhead)。綜合 以上的論述,反而在Windows XP 以 Java 語言實作的程式進行本計畫的試驗,可以 獲得較好的效能。反觀在 Windows 2000 Server 版下多執行緒的程序,以及直譯式 的 Java 所撰寫的程序皆可達到較佳的執 行效能,後者卻有違反一般常態。 我們未來的計畫希望致力於作業系統 的修改,初步以了解最小的嵌入式作業系 統uC/OS-II 為主,以其排程程式為著手目 標,了解其排程使用的演算法,並進行修 改以搭配嵌入式系統在不同環境獲得最佳 的效能。進而深入了解在 Windows 2000 Server 版 下 與 其 他 作 業 系 統 , 其 對 於 JVM(Java Virtual Machine)的支援程度。 五.參考文獻1. Frank Vahid and Tony Givargis, 2002, ”Embedded System Design: A Unified Hardware/Software Introduction”, John Wiley & Sons, Inc., pp 2~27. 2. Daniel W. Lewis, 2002, ”Fundamentals of Embedded
Software: Where C and Assembly Meet”, Prentice Hall, pp. 1~13.
3. VISA International 1997, ”CAD/Service Payment Terminal Specification”, Version 3.0, pp.4-67~4-70. 4. Atmel Corporation 1996, ”Atmel Nonvolatile Memory
Data Book”, Overview and Preface.
5. Peter C.B., Doron J.C.,1979, ”Introduction to Data Structures and Non-Numeric Computation”, Prentice-Hall, Inc. pp 209~279.
6. Robert L. Kruse,1987,”Data Structures and Program Design”, Second Edition, Prentice-Hall International Edition, pp 104~153.
7. E. Horowitz, S. Sahni, 1984, ”Fundamentals of Data Structures in Pascal”, Second Edition, Computer Science Press, pp 94~180.
8. Thomas H. Cormen, Charles E. Lesiserson, Ronald L. Rivenst, and Clifford Stein, 2001, ”Introduction to Algorithm”, Second Edition, The MIT Press, pp 200~214.
9. Robert Sedgewick, 1998, ”Algorithms In C Parts 1-4 : Fundamentals Data Structures, Sorting and Searching ”, Third Edition, Addition Wesley, pp 69~126.
10. Ellis Horowitz, Sartaj Sahni, and Sanguthevar Rajasekaran, 1997, ”Computer Algorithms C++”,
Under Windows 2K(Using Sequential Access)
0 1000 2000 3000 4000 5000 128B 256B 512B 1024B 2048B 4096B Block Size Access Times( in m s) Sequential(C++) Sequential(Java)
Under Windows 2K(Using Thread Access)
0 200 400 600 800 1000 1200 1400 128B 256B 512B 1024B 2048B 4096B Block Size Access Time(in ms) Thread(C++) Thread(Java)
Computer Science Press, pp 339~378.
11. Donald E. Knuth, 1981, ”The Art of Computer Programming : Seminumerical Alrorithms”, Volume II, Second Edition, Addition-Wesley, pp 1~170.
12. Donald E. Knuth, 1981, ”The Art of Computer Programming : Fundamental Algorithms”, Volume I, Second Edition, Addition-Wesley, pp 228~361.
13. Richard Neapolitan and Kumarss Naimipour, 1998, ”Foundations of Algorithms using C++ Pseudocode”, Second Edition, Jones and Bartlett. 14. Michael T. GoodRich and Roberto Tamassia,
2001, ”Algorithm Design : Foundations, analysis, and Internet Examples ”, Wiley, 55~212.
15. Harvey M. Deitel and Paul J. Deitel, 2001, ”C++ How to Program”, Third Edition, Prentice Hall, pp 304~388. 16. Abraham Silberschatz, Peter B. Galvin, and Greg
Gagne, 2003, ”Operating System Conecpt : Windows XP Update”, Sixth Edition, John Wiley, pp 273~451. 17. R. C. T. Lee, R. C. Chang, S. S. Tseng, and Y. T. Tsai,
2001, ”Introduction to the Design and Analysis of Algorithms”, Second Edition, 旗 標 出 版 社 , pp 619~656.
18. Andrew S. Tanenbaum, 2001, ”Modern Operating Systems”, Prentice Hall, pp 189~268.
19. David A. Patterson and John L. Hennessy, 1998, ”Computer Organization & Design : The
Hardware / Software Interface”, Second Edition, Morgan Kaufmann, pp 538~628.
20. Kenneth A. Lambert and Martin Osborne, 2000, ”Java : A Framework for Program Design and Data Structures”, Brooks/Cole Thomson Learning, pp 114~144.
21. Kenneth A. Lambert and Martin Osborne, 2000, ”Java : Complete Course in Programming & Problem Solving”, South-Western Educational Publishing, pp 156~181. 22. Harvey M. Deitel and Paul J. Deitel, 2001, ”Java How
to Program”, Third Edition, Prentice Hall, pp 1053~1098.
23. Arthur E. Anderson and William J. Heinze, 1992, “C++ Programming and Fundamental Concepts”, Prentice Hall, pp 215~240. 24. 吳家榮,1998,”連結串列再快閃記憶體上的應用”, 八十六年專科學校重點科技專題製作論文研討會, pp1-1~1-15. 25. 新華電腦股份有限公司編著,2004,ARM 內核嵌入 式SOC 原理以 ARM7TDMI S3C4510B 為例,全華出 版股份有限公司. 26. 張正源編著,2005,ARM Linux 嵌入式系統發展技 術,全華出版股份有限公司. 27. 黃文增編譯,2005,MicroC/OS-II:即時作業系統核 心( 原 文 書 : MicroC/OS-II: The real-time kernel, Second Edition, Jean J. Labrosse),全華出版股份有限 公司.
22
晶片系統架構技術及開發平台研究之推動(3/3) -附屬計畫四
【應用於多媒體電路供電系統核心電路之研究】
Research on power supply system core circuit for
multimedia applications
計畫編號:NSC93-2215-E-002-010/004
執行期間:93/8/1~94/7/31
計畫主持人:林永裁 講師 龍華科技大學電子工程系
參與人員:林和正、王鴻展
一、中文摘要
行動電子產品在目前消費性市塲的需 求快速增加,這些行動電子產品需要使用 高效率低電壓的電壓轉換器以使用單一電 池的供電能力能夠使系統使用的時間達到 最長之目的。為了降低這些行動電子產品 的體積與重量,直接將供電系統小型化是 最有效的方法,因此,電路研究與設計的 目標已經鎖定在高效率與低功率電壓轉換 器的設計技術上,在這些應中,選擇一個 適用的技術便成為很重要的保證與問題, 從過去的文獻可知交換式電源技術是各種 技術當中最具有效率的一種技術,脈波寬 度調變 (Pulse Width Modulation, PWM) 技術是最常用於交換式電源電路的一種控 制方法,此種方式乃是改變切換電晶體的 導通時間以達到控制功率之流通及調整輸 出電壓至預定值為目的。 本計畫提出以 CMOS 製程技術設計降壓 型的直流轉換器,轉換器的核心控制電路 是以最新的環型振盪器來產生 PWM 電 路,這個PWM 電路是以由稱為擬似雙曲 線(pseudo hyperbola)電路加以電流補償而 達定頻操作,不需要任何外加被動元件且 可以於低電壓低功率環境下操作,其應用 非常的廣泛,極適用於低功率的多媒體電 路系統,電源系統與電子通訊電路上。 關鍵字:直流對直流轉換器、低電壓、低 功率、脈波寬度調變電路。Abstract
Recently, portable electronic devices are in great demand of consumer market. Theses devices require high-efficiency low-voltage dc-dc converters to maximize the run time of the devices from a single battery source. In order to decrease the size and weight of these devices, miniaturization of the power modules is essential. As a result, the trend is focused on implementation of converter with high-efficiency and low-power consumption. To select an appropriate technology is an important issue for these applications. Pulse width modulation (PWM) technique is the most frequently used technique in switching converters. The kernel circuit of PWM is voltage-controlled duty-cycle (VCDC) circuit. A variable in a power system can be controlled through modulating the width of a control pulse in each switching cycle. In this project, we propose a monolithic, low- voltage
step-down dc-dc converter with on-chip PWM controlled circuit for the portable electronic systems. The performances of the proposed switching converter are verified with 2P4M 0.35-μm models through Spice simulations.
Keywords:
DC-DC Converter, Low- power, low-voltage, bandgap reference, pulse width modulation.二、計畫緣由與目的
目前大多數的交換式電源供給器都以
脈波寬度調變(pulse width modulation,
PWM)的控制方式[1-10]來設計,此種方式 乃改變切換電晶體的導通時間以達到控制 功率之流通及調整輸出電壓至預定值。 本計畫使用 CMOS 技術設計一個單 晶片的供電控制電路這是一個可由使用者 設定電壓值的轉換器,其功能方塊如圖一 所示,其中頻率補償電路是為了補償轉換 器的極點與零點,以使轉換器獲得較大的 操作頻寬與穩定度,另一個功能是讓使用 者可以由電路需求自行設定輸出電壓; PWM 產生電路是使用去年計畫所設計的 環型振盪器再加以電流補償的電路,它提 供控制所需的控制信號用以使開關電晶體 導通或斷路以決定輸電壓值;控制驅動電 路是不重疊的信號處理電路,以防止兩個 電晶體同時導通而燒毀。 Co Rf1 Rf2 Mn Mp VDD Lo Vref VFB Vo Z L Frequency Compensated Circuit On Chip PWM Generator Bandgap Reference Control Driver 圖一 多媒體電路供電系統核心電路方塊圖 一 個 可 控 制 電 流 的 延 時 核 元 電 路 (delay cell circuit),用來控制振盪訊號的作 用週期,其電路結構如圖二所示,電路的 轉移電壓(transfer voltage)可表示為 2 1 2 2 1 c c p ox p c TP DD M I I L W C I I V V V >> ⎟ ⎟ ⎟ ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎛ ⎟ ⎠ ⎞ ⎜ ⎝ ⎛ + + − ≅ μ 1 2 1 2 1 c c n ox n c TN I I L W C I I V >> ⎟ ⎠ ⎞ ⎜ ⎝ ⎛ + + ≅ μ ( ) 2 1 1 c c n n p p n n p p TP DD TN I I L W L W L W L W V V V ≈ ⎟ ⎠ ⎞ ⎜ ⎝ ⎛ ⎟ ⎠ ⎞ ⎜ ⎝ ⎛ + ⎟ ⎠ ⎞ ⎜ ⎝ ⎛ ⎟ ⎠ ⎞ ⎜ ⎝ ⎛ + + ≅ μ μ μ μ (1) 其中 p, Cox, (W/L)p, VTP, 和 VDD 分別為PMOS 電晶體的通道遷移率,閘極 單位面積電容,寬長比,界限電壓及供應 電壓;而 n, Cox, (W/L)n 和 VTN, 分別為 NMOS 電晶體的通道遷移率,閘 極單位面積電容,寬長比,界限電壓。延 時核元電路的上升時間 tLH 與下降時間 tHL 的推導結果分別為 2 c M P LH I V C t ≈ (2) 1 c M DD P HL I ) V V ( C t ≈ − (3) 其中 CP 是延時核元電路的輸入電容。
24 I I IC2 IC1 Vo Vin VDD Mp Mn 圖二 延時核元電路 使用延時核元電路接成的PWM電路架構 如圖三所示。 M19 M20 M21 M22 M23 M24 M25 M26 M6 M7 M8 M9 M10 M1 M2 M3 M4 M5 M11 M12 M13 M14 M15 M16 M17 M18 VDD Vout Ip2 Ip2 Ip2 Ip2 Ip1 Ip1 Ip1 Ip1 M27 M28 M29 M30 M33 M31 M32 M35 M38 M39 M34 M36 M37 M40 M41 M42 M43 M45 M46 M44 M47 M49 M48 Vr Vr2 Vr1 Vc I Ip2 Ip1
Pseudo Hyperbola Charge Current Generator VDD
圖三 延時核元電流控制作用週期PWM 電路 圖三是一個以電流控制作用週期的振 盪器,其振盪週期T 與作用週期 D 可分別 表示如下: ⎟ ⎟ ⎟ ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎛ − + + − + = 2 2 1 1 2 2 2 2 p M DD p M p M DD p M P I V V I V I V V I V C T ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎝ ⎛ + = 2 1 1 1 2 p p DD P I I V C (4) T I V I V V C D p M p M DD P 2 2 2 2 − + = 2 1 2 1 1 1 p p p I I I + = (5) 若充電電流與放電流的和等於常數 且等於偏壓電流Iss,則當不同的控制電壓 Vc 控制時,振盪器將無法得到定頻輸出, 因此充電電流與放電電流的和必須以式(4) 與(5)的條件加以補償,吾人以 Pseudo Hyperbola 電路[8]補償使得 = = + DD P p p C V T I I 2 1 1 2 1 常數 (6) 轉換器含有兩個極點與零點[9, 10], 為了達到穩定控制的目的我們必須使用 如圖四所示的電路加以補償,其控制轉移 函數為 ( ) ( )( ) 2 1 2 2 1 1 1 1 C sR C sR C sR s v v i o = + + (7) 由(7)中適當選擇的電阻與電容值即可得 所需的控制要求。 A1 C1 R2 C2 R1 Vi Vo Vref 圖四 頻率補償電路
三、結果與討論
本計畫已成功的完成低功率降壓式 之直流對直流轉換器設計並完成積體電 路之佈局,這個電源處理電路是以TSMC 0.35-µm 2P4M 的元件模型來設計,其功能 是以積體電路模擬軟體加以驗證,轉換器 的電路佈局如圖五所示,電路佈局不含接 點所需的面積為 880×1040 μm2,電路特 性經積體電路模擬軟體加以驗證後,模擬 結果顯示在供電電壓為3.3 V 時可以穩定 的輸出電壓為1.0 to 2.2 V,如圖六所示為 轉換器之階層上升(step-up)為 1.2 V 之輸 出特性,其穩定時間約為 0.36 ms;當輸 出電壓為1.2 V 時,其漣波電壓約為 10 mV其結果如圖七所示;轉換器之最高效率為 百分之九十四,而負載電流由100 mA 變 化 600 mA 時其轉換效率都還可以維持 百分之八十五以上,其結果如圖八所示。 圖五 轉換器電路之佈局,其不含接點所需面積為 880×1040 μm2 圖六 轉換器在供電電壓為VDD = 3.3 V 時之輸出 情況,其輸電壓為1.2V,穩定時間約為 0.36 ms。 圖七轉換器之輸出電壓為 1.2V 時之漣波輸出情 況,其最大漣波約為10 mV。 圖八 轉換器之轉換效率與不同負載電流之變化情 況。
四、結論
小型化與長效性的電壓供電系統是行 動電子產品極為重要的需求之一,利用交 換式電源技術可以有效的達到這項要求, 本計畫以數位 CMOS 技術作為開發類比 積體電路的交換式電源核心電路晶片,已 順利的完成低電壓降壓式直流對直流轉換 器積體電路設計與晶片佈局,應用於多電 壓系統可以大幅度的解決多媒體系統與行 動電子產品供電系統的體積及效率等問 題,對於增長電池的使用時間及產品小型 化有極大的助益,這個計畫的成果可輕易 的被嵌入多媒體與行動電子產品中。本計 畫之部份研究成果已發表[11]或已被接受 [12] 由 IEEE 舉辦的國際性相關研討會 上。 由於時間的限制,部份目標尚在進行 中,如升降壓型轉換技術、電流感測技術、 磁滯電流控制電路與及最佳化控制機制等 技術,都是提高電池的使用效率之極佳論 點,也是未來要繼續努力的方向。 五、參考文獻[1] Smith K. M., Jr., Lai Z., and Smedley K. M.: “A
new PWM controller with one-cycle response,” IEEE Trans. on Power Electronics, Jan. 1999, 14, (1), pp. 142-150.
[2] K. M. Smedley, S. Cuk, “One-cycle control of
switching converters ,” in proc. of Power Electronics Specialists Conference, 1991, PESC '91, June 1991, pp. :888-896.
26
[3] Dongsheng Ma, Wing-Hung Ki, Chi-Ying Tsui,
“An integrated one-cycle control buck coverter with adaptive output and dual loop for output error correction,” IEEE Journal of Solid-State Circuits, vol. 39, no. 1 Jan. 2004.
[4] A. M. Wu, Jinwen Xiao, D. Markovic, S. R.
Sanders, “Digital PWM control: application in voltage regulation modules,“ in proc. of 30th Annual IEEE PESC 99, 1999, vol. 1, pp. 77-83.
[5] Chung-Hsien Tso and Jiin-Chuan Wu, “An
integrated digital PWM DC/DC converter using proportional current feedback,” in proc. of the 2001 IEEE International Symposium on Circuits and Systems, ISCAS 2001, vol. 3, pp. 65-68.
[6] C. F. Lee and P. K. T. Mok, ”A monolithic
current-mode CMOS dc-dc converter with on-chip current-sensing technique,” IEEE Journal of Solid-State Circuits, Vol. 39, No. 1, pp. 3-14, Jan. 2004.
[7] Cheung Fai Lee, and Philip K. T. Mok, “On-chip
current sensing technique for CMOS monolithic switch-mode power converter,” in proc. of IEEE ISCAS, May 2002, PP. V265-V268.
[8] Jiann-Jong Chen, Yeong-Tsair Lin, Hung-Yih
Lin, and Wen-Yaw Chung, ”Integrated
Pulse-width-modulation Circuit Using CMOS
Processes,” in proc. of 2004 35th
IEEE Power Electronics Specialists Conference, PESC’04, June 20-25 2004, Aachen, Germany, pp. 1356-1358.
[9] Lai Z. and Smedley K. M.: “A general
constant-frequency pulse-width modulator and its applications,” IEEE Transactions on Circuits and Systems I: Fundamental Theory and Applications, April 1998, 45, (4), pp. 386-396.
[10] Robert W. Erickson, Fundamental of Power
Electronics. Norwell, MA, Kluwer Academic Punlishers, 1999.
[11] Yeong-Tsair Lin, Wen-Yaw Chung, Dong-Shiu
Wu, Ho-Cheng Lin, and Robert Lin, “A Low Voltage CMOS Bandgap Reference,“ in proc. of
the 3rd IEEE International Northeast Workshop
on Circuits and Systems 2005, NEWCAS 2005, June 19-22 2005, Quebec, Canada, pp. 227-230.
[12] Yeong-Tsair Lin, Wen-Yaw Chung, Dong-Shiu
Wu, Hung-Chan Wang, Hung-Yih Lin, and Jiann-Jong Chen, “A monolithic CMOS step-
down dc-dc converter,” accepted by the 48th
28
晶片系統架構技術及開發平台研究之推動(3/3) -附屬計畫五
使用 FPGA 設計二維封包分類演算法
Use FPGA to design two-dimensional packet classification algorithms
計畫編號:NSC93-2215-E-002-010/005
執行期間:93/8/1~94/7/31
計畫主持人:吳其政 講師 龍華科技大學電子工程系
參與人員:劉治銘、王柏淳
一、中文摘要
由於網際網路(Internet)的快速發展,網 際網路訊務(traffic)的增加需要高速的連 線速度(link speed)和路由器(routers),目前 已有10Gbps OC-192 光纖線路,因此網際 網路訊務的主要瓶頸(bottleneck)已由網路 線路轉移至路由器。另一方面,網際網路 服務提供者(ISP)會希望路由器能提供差 異性服務(differentiated service)的功能。但 是 傳 統 的 路 由 器 主 要 是 查 詢 IP 封 包 (packet)的目的位址(destination address)來 決定封包的下一站(next-hop)位址,因此傳 統的路由器對於所有相同目的位址之封包 的處理並無分別,所以它無法提供差異性 服 務 的 功 能 。 具 有 封 包 分 類(packet classification)的路由器能夠根據封包的目 的 位 址 、 來 源 位 址 、 目 的 埠(destination port)、來源埠(source port)和通訊協定類別 (protocol type)等欄位來分類封包。這種多 欄位(multi-field)封包分類能提供各種不同 的型式的差異性服務;例如:阻擋有危害安 全的封包進出某網路(如防火牆),服務品 質路由(QoS routing),以及資源保留服務 (RSVP)等。然而,在封包的各欄位中,處 理目的位址和來源位址視為主要的瓶頸所 在 , 本 計 畫 使 用 BDD (binary decision diagram)方法設計出二維(來源 IP 位址,目 的IP 位址)的封包分類器演算法,BDD 具 有節點共享的優點,刪除重複的節點,有 效率地降低組合電路的成本,而且運用管 線化(pipelined)的技術提升整體封包分類 的處理速度,是一個適合FPGA 實現的演 算法,我們成功的將它以FPGA 硬體實現。關鍵字
路由器、封包分類、BDD (binary decision diagram)、FPGA。Abstract
The Internet traffic is rapidly growing not only because of the increase of users but also because of the multimedia applications. With the increased traffic, fast link speed and routers are required. Currently, gigabit links are available (such as OC-192). The chief bottleneck of the traffic has moved from the links to the routers. Meanwhile, the Internet Service Providers (ISPs) would like to provide the differentiated services. The traditional routers lookup routing table for next-hop address based on packet’s destination IP address. That is, the routers treat all the packets with the same destination address identically. Thus, the
traditional routers cannot provide the functions of differentiated service. A packet classification router based on multi-field from the packet header fields, such as destination and source IP addresses, destination and source ports, and protocol type. The multi-field packet classification can provide various types of differentiated service include of Virtual Private Networks (VPNs), packet filtering in firewalls, QoS routing, and RSVP. Consequently, multi-field packet classification has become an essential component of next generation routers and firewalls. However, the multi-field packet classification has proved to be far more difficult and take more CPU time. Recently, several methods have been proposed for packet classification. Although some of these methods provide fast packet classify performance, require O(nk) memory.
Warkkhede et al. show a two-field packet classification, a binary tuple-space search method, requires O(log2
w) hashes and only
O(nlog2w) memory. In this project, we
propose a binary decision diagrams (BDDs) based combinational circuit for an efficient implementation of fast two-dimensional packet classification scheme in reconfigurable hardware, FPGA.
Keywords
router, packet classification, binary decision diagrams (BDDs), FPGA.
二、動機與目的
多 欄 位封包 分 類根據 封 包的目 的 位 址、來源位址、目的埠、來源埠和通訊協 定類別等欄位來分類封包。這種多欄位封 包分類可使用於各種網路服務和應用程式 中,包含阻擋有危害安全的封包進出某網 路( 如 防 火 牆 ) 、 服 務 品 質 路 由 (QoS routing)、資源保留服務(RSVP)、以及虛擬 私人網路(VPN)等。因此多欄位封包分類 已經成為新一代路由器及防火牆所必備的 功能。 網際網路原本是使用銅線來當傳輸媒 體,但是現在光纖已漸漸取代了銅線。光 纖傳輸系統提供高頻寬(high bandwidth), 他 傳 送 資 料 的 速 度 高 達 每 秒 鐘 好 幾 個 gigabytes 的速度(OC48 = 2.4Gbps, OC192 = 10Gbps, OC768 = 40Gbps),這個速度稱 為線速度(wire speed)。由於線速度的提 升,網際網路路由器必須增快封包處理的 速度。然而,多欄位封包分類需要花費較 多 CPU 時間,成為路由器主要的瓶頸 (bottleneck),雖然目前已有許多封包分類 演算法的研究[1-8],其中有些演算法雖然 能提供快速的查詢效能,但是需要 O(nk) 的記憶體空間,其中 k 為處理欄位的個 數,n 為封包分類器資料庫規則的個數。 當 n 很大時,這些演算法並不實際。本計 畫 使 用 的 方 法 是 以 binary decision diagram(BDD) [9, 10]的架構來建構封包分 類函數,由於 BDD 具有節點共享(node sharing)的優點,可以省去重複的節點,不 僅有效率地降低了電路的成本而且提升了 封包分類的處理速度。三、研究方法與成果
封包分類依照封包的 K 個標頭欄位來 分類,則稱此分類器(classifier) F (或稱 filter,過濾器)為 K-tuple(F[1], F[2], …, F[K])封包分類器,其中 F[i]可為不同長度的前置位元串(prefix bit string)或是某範圍 (range)。最常見的欄位有 IP 目的位址,IP 來源位址,TCP 目的埠號(port number), TCP 來源埠號和通訊協定型式(protocol