以FPGA實現適用於NoC平台上主動型態硬體加速電路-以大尺寸FFT為例
62
0
0
全文
(2) 中文摘要. 中文摘要 本論文主要是提出一個硬體架構可以將主動型態硬體加速電路在 Network on Chip(NoC)平台上實作,不同於以往採用被動型態硬體電路在 System on Chip (SoC) 平台上實作,可以避免在 SoC 上會遭遇搶匯流排(Bus)等問題以及利用主動型態 硬體加速電路的特性將資料存放於動態隨機存取記憶體(Dynamic Random Access Memory, DRAM)中。最後利用實現大尺寸的快速傅立葉轉換(Fast Fourier Transform ,FFT)作為例子,以驗證電路的正確性與實用價值。. 本硬體電路中使用 IEEE 754 浮點數格式進行運算,且透過 SDRAM Controller 將資料存取在 SDRAM 中,最後以現場可程式化邏輯閘陣列(Field Programmable Gate Array ,FPGA)為開發平台實現且實際測量硬體電路的資源消耗。實驗的結果 顯示我們可以降低 FPGA 上資源的消耗,使其可以處理更大的資料量,與提高電 路的重複使用性來降低電路設計的複雜度。. 關鍵字:NoC、SoC、DRAM、FPGA、主動型態電路. i.
(3) 誌謝. 誌謝. 首先,要非常感謝我的指導教授 黃文吉 教授,在碩士班求學期間對我不辭 辛勞地指導,讓我有機會去學習研究的方法以及待人處世的態度,當我遇到困難 時與我討論並引導我通往正確方向,使得我在這段學習的時間獲得了許多的成長 與寶貴的經驗,在此獻上最誠摯的謝意。同時也感謝楊士萱 教授、熊博安 教授 歐謙敏 副教授撥冗來參加我的碩士論文口試,並給予論文上的建議,跟研究的 改進方向。 接著,很榮幸能夠來到國立臺灣師範大學資訊工程研究所就讀,並在多媒體 通訊暨系統晶片實驗室這個大家庭和大家一起學習成長。我要感謝已畢業的學長: 建廷、清志、國璿、翰逸、任軒、聖穎,謝謝你們的教導,同時也感謝在我碩士 求學生涯與我一起奮鬥的同學們:奇恩、光耀、煥元、皓棠、思淮、雅姿、烝祺。 最後,更要感謝家人與所有關心我的朋友,有了你們的支持、關懷與鼓勵, 讓我有勇氣去面對各種的挫折與壓力,並順利地完成學業。謹將此論文成果獻給 所有關心我的人,希望大家與我分享這份喜悅與榮耀。. ii.
(4) 目錄. 目錄 第一章 緒論................................................................................................................... 1 研究背景與動機目的..................................................................................... 1 全文架構......................................................................................................... 7. 1.1 1.2. 第二章 基礎理論及技術背景介紹 .............................................................................. 8 2.1 SYSTEM ON CHIP ................................................................................................ 8 2.1.1 SoC 的發展 ................................................................................................ 8 2.1.2 SoC 的系統架構 ........................................................................................ 9 2.2 NETWORK ON CHIP .......................................................................................... 10 2.2.1 NoC 的發展 .............................................................................................. 10 2.2.2 NoC 的架構 .............................................................................................. 10 2.3 FPGA 系統設計 .............................................................................................. 12 2.4 主動型態 .......................................................................................................... 14 2.4.1 主動型態的簡介....................................................................................... 14 2.4.2 主動型態 Read 的工作流程 .................................................................... 16 2.4.3. 主動型態 Write 的工作流程................................................................... 18. 2.5 SDRAM CONTROLLER .................................................................................... 20 第三章 系統架構......................................................................................................... 21 3.1 ACTIVE READ ............................................................................................... 21 3.2 ACTIVE WRITE ............................................................................................. 27 3.3 主動型態硬體加速電路............................................................................... 32 3.4 在主動型態硬體加速電路加入 FFT ............................................................... 36 第四章 實驗數據與效能比較..................................................................................... 42 4.1 開發平台與實驗環境介紹........................................................................... 42 4.2 實驗數據呈現與討論 ........................................................................................ 46 第五章 結論................................................................................................................. 53 參考文獻....................................................................................................................... 54. iii.
(5) 目錄. 附表目錄. 表 1.1 SoC 與 NoC 的比較 ............................................................................................ 2 表 1.2 On-Chip RAM 與 Off-Chip RAM 的比較 ....................................................... 4 表 1.3 主動型態與被動型態的比較 ............................................................................ 5 表 1.4 FPGA 與 ASIC 的比較 ...................................................................................... 6 表 2.1 各訊號的簡介................................................................................................... 15 表 4.1 Stratix III EP3SL150 (DE3-150) 開發版規格表........................................... 43 表 4.2 主動型態 FFT 硬體加速電路在不同維度時各元件之 ALMs 消耗表 ........ 47 表 4.3 主動型態 FFT 硬體加速電路在不同維度時各元件之 Block Memory Bits 消耗表........................................................................................................................... 47 表 4.4 主動型態 FFT 硬體加速電路在不同維度時各元件之 DSP Blocks 消耗表48 表 4.5 主動型態 FFT 硬體加速電路在各維度的資源消耗 ..................................... 49 表 4.6 各維度下軟體與硬體的 2D FFT 執行時間 ................................................... 50 表 4.7 維度為 256X256 下的 2D FFT 與其他文獻的資源消耗與速度比較 .......... 51 表 4.8 2D FFT 文獻數據比較表 ................................................................................. 52. iv.
(6) 目錄. 附圖目錄. 圖 2.1 共享匯流排......................................................................................................... 9 圖 2.2 NoC 架構圖 ....................................................................................................... 11 圖 2.3 Qsys 系統架構圖[2] .......................................................................................... 12 圖 2.4 Qsys 開發流程 .................................................................................................. 13 圖 2.6 主動型態 read 之時序圖 ................................................................................. 16 圖 2.7 主動型態 write 之時序圖 ................................................................................. 18 圖 3.1.1 Active Read 電路架構圖(1) ......................................................................... 21 圖 3.1.2 Active Read 電路架構圖(2) ......................................................................... 22 圖 3.1.3 Active Read 電路時序圖(1) ......................................................................... 22 圖 3.1.4Active Read 電路架構圖(3) .......................................................................... 24 圖 3.1.6 Active Read 電路時序圖(2) ......................................................................... 25 圖 3.1.7Active Read 電路架構圖(5) .......................................................................... 26 圖 3.1.8Active Read 電路時序圖(3) ........................................................................... 26 圖 3.2.1 Active Write 電路架構圖(1) ......................................................................... 27 圖 3.2.2 Active Write 電路架構圖(2) ....................................................................... 27 圖 3.2.3 Active Write 電路時序圖(1) ......................................................................... 28 圖 3.2.5 Active Write 電路架構圖(4) ......................................................................... 30 圖 3.2.6 Active Write 電路架構圖(5) ......................................................................... 30 圖 3.2.7Active Write 電路時序圖(2) .......................................................................... 31 圖 3.3.1 結合 Active Read 與 Active Write 電路架構圖(1) .................................... 32 圖 3.3.2 結合 Active Read 與 Active Write 電路架構圖(2) .................................... 33 圖 3.3.3 結合 Active Read 與 Active Write 電路架構圖(3) .................................... 34 圖 3.3.4 結合 Active Read 與 Active Write 電路架構圖(4) .................................... 35 圖 3.4.1 NoC 平台下主動型態 FFT 硬體加速電路 .................................................. 36 圖 3.4.2 FFT Circuit 架構圖 ....................................................................................... 37 v.
(7) 目錄. 圖 3.4.3 FFT Controller 的流程(1) ............................................................................ 38 圖 3.4.4 FFT Controller 的流程圖(2) ........................................................................ 39 圖 3.4.5 FFT Controller 的流程圖(3) ........................................................................ 39 圖 3.4.6 FFT Controller 的流程圖(4) ........................................................................ 40 圖 3.4.7 FFT Controller 的流程圖(5) ........................................................................ 40 圖 4.1 Stratix III EP3SL150 FPGA 開發版外觀 ...................................................... 42. vi.
(8) 第一章 緒論. 第一章 緒論 本章節主要在探討本論文的研究背景與動機、研究目的與方法,並大略說明 各章節的主要內容與重要特性。. 1.1. 研究背景與動機目的. System on chip(SoC)就是在單一晶片上包含完整系統並有嵌入電路的全部內容。 他具有以下幾方面的優點:提升系統效能、降低功率消耗、縮小體積、提高速度、 節省成本。由於可擴展性差、Bus 地址空間的困難擴張以至於限制了元件的連接 數目,使得傳統 SoC 已漸漸地不能滿足需求。且當單一晶片上的功能與元件數量 愈來愈多時,就需要大量的內部連線(Interconnection),而傳統 SoC 是採用共享匯 流排(Shared Bus)的概念,且使用廣播(Broadcast)的方式,這樣使得一條 Bus 無法 同時支援一組以上的元件相互傳輸。舉個例子來說,當有一組以上的元件想要互 相通訊時,由於是使用廣播來傳輸資料,除了會使不需要此資料的元件接收到, 也必須等待上一組元件傳輸完成後才可以執行下一組,會使得資源的浪費與額外 的等待時間,進而造成目前通訊的瓶頸。 經過上述的討論,可以得知傳統 SoC 已經無法滿足現今設計的需求,於是發 展了一個新的架構 Network on chip(NoC)。NoC 不但有傳統 SoC 的優點且改進了 傳統 SoC 上的不足。那 NoC 的架構是如何呢?又是怎樣改進傳統 SoC 上的不足 1.
(9) 第一章 緒論 呢?首先利用網路封包傳輸(packet switched communication)的概念使不同元件組 之間的資料得以交換,這種利用網路模式的傳輸的方式,就可稱為 NoC。NoC 的 系統內部通常包含了 IP(Intellectual Properties) cores、網路介面(Network interface, NI)、和路由器(Router)。 不同於傳統 SoC,NoC 利用 Router 與 NI 來取代以往的 Bus,NI 的功能為將 資料做封包化與建立各元件之間的連線。而 Router 的用處是將封包化後的資料傳 送到指定的目標,並且在 NoC 架構下不會去限制 Router 的數量,因此,Router 在 NoC 中扮演了非常重要的角色。此外,在 NoC 架構下的各元件之間,可以獨 立的運作,這樣不但可以解決傳統 SoC 所造成的資源浪費,也可以節省必須等待 前一組元件執行完的時間,使我們可以更有效的利用資源與達到更好的執行速度。 除此之外,相對於傳統 SoC,由於 NoC 的各元件之間可以獨立運作使其更適合使 用在實現多核心的系統。. SoC. NoC. 擴展性. 差. 優. 傳輸方式. 藉由 Bus 以廣播的方式. 利用 NI 與 Router 以封包 化的方式. 各元件間的獨立運作. 不可以. 可以. 多核心系統. 不適用. 適用. 表 1.1 SoC 與 NoC 的比較 2.
(10) 第一章 緒論 無論在 SoC 或是 NoC 中,記憶體皆扮演了很重要的角色,因為記憶體負責 儲存資料。而記憶體有兩種形式,分為 On-Chip RAM 與 Off-Chip RAM。On-Chip RAM 在儲存速度上有相當大的優勢,但是若要處理大資料量的問題時,如以大 尺寸 FFT(Fast Fourier Transform,FFT)為例,就會遇到 On-Chip RAM 不足的窘境。 但又因為 On-Chip RAM 的造價是相當昂貴的,這樣會產生一個嚴重的問題,就 是當所設計的電路只採用 On-Chip RAM 時,若要大量的 RAM 支援,就表示需要 大量 On-Chip RAM,而 On-Chip RAM 愈大,所要花費的 cost 就愈高。. 相對於 On-Chip RAM,Off-Chip RAM 的造價就相對便宜許多。我們想要享 受這個優點也不是沒有代價的,就是存取時間的增加,但是為了解決記憶體空間 不足的問題,採用 Off-Chip RAM 是有它的必要性的。又 Off-Chip RAM 一般可以 分為兩種,動態隨機存取記憶體(Dynamic Random Access Memory, DRAM)與快閃 記 憶 體 (Flash Memory) , 其 中 因 為 Flash 在 現 場 可 程 式 化 邏 輯 閘 陣 列 (Field Programmable Gate Array ,FPGA)無法支援讀取寫入(Write)所以我們必須選用 DRAM 才有辦法支援寫入與讀取(Read)以達到我們的需求。因此,本論文使用了 DRAM 來盡可能地降低 cost 並且更有效的利用記憶體以達到處理大量資料的問 題。. 3.
(11) 第一章 緒論 On-Chip RAM. Off-Chip RAM. 每 bit 所花費的金額. 高. 低. 容量. 小. 大. 存取的時間. 快. 慢. 表 1.2:On-Chip RAM 與 Off-Chip RAM 的比較. 若在 SoC 或是 NoC 中加入自己的電路,這些電路也需要存取記憶體。而存 取記憶體的方式可分為兩種,分別為:主動型態(Master)與被動型態(Slave)。這兩 種最主要的區別是在於只有主動型態可以對被動型態發起傳輸。在被動型態中, 由於不需要去考慮存取地址的產生所以在設計上會比主動型態來的簡單許多,但 是需要 CPU 額外的支援才有辦法發起傳輸,這樣不但會增加 CPU 的競爭而且會 使執行時間增加,更重要的是需要一份跟資料量大小一樣的 On-Chip RAM 加上 額外的設定時間,才有辦法利用直接記憶體存取(Direct Memory Access,DMA)將 資料傳輸至 Off-Chip RAM。. 更進一步來討論,由於 DMA 一次只能傳送一個區間的資料,若我們想要處 理二維(2-dimension,2-D)FFT,在其執行行(column)運算時,需要每次存取非連續 區間記憶體位址的資料,就算我們花時間與資源去設定 DMA,還是無法達到硬 體加速器的功能。 4.
(12) 第一章 緒論 相對於被動型態,主動型態本身就可以發起對 Off-Chip RAM 的傳輸,也就 是說不再需要透過 DMA 才能傳輸資料,如此可以避免 CPU 的競爭、設定的時間 與減少 On-Chip RAM 的使用率,且可以存取非連續記憶體位址的資料以解決 2-D FFT 的行運算的問題,使我們能夠得到硬體加速器的效果。在這些好處的背後, 我們也必須克服設計複雜所衍生的問題。. 被動型態. 主動型態. 額外設定時間. Yes. No. 額外 CPU 的支援. Yes. No. 額外的 RAM. Yes. No. 存取非連續位址資料. NO. YES. 設計複雜度. 低. 高. 表 1.3 主動型態與被動型態的比較. FPGA 是一種有效替代 ASIC (Application Specific Intergrated Circuit)的 硬體實現,相對於 ASIC,FPGA 提供了較低的 NRE cost,而 FPGA 可以縮短研 發的時間且更具有彈性,只要通過簡單的繞線佈局與合成,就可以在實驗室中重 複的燒錄至 FPGA 中來進行測試,而不需要真的下線後才有辦法驗證電路是否正 確,已成為現在 IC(Integrated Circuit)設計的主流。 5.
(13) 第一章 緒論 FPGA. ASIC. NRE cost. 低. 高. 研發時間. 短. 長. 彈性. 高. 低. 表 1.4 FPGA 與 ASIC 的比較. 根據上述幾點,本論文的目的為提出一個適用於 NoC 平台上利用主動型態 元件主動存取 RAM,並以大尺寸 FFT 為例。而此主動型態硬體加速電路可以直 接與 DRAM Controller 溝通,以避免在大尺寸 FFT 應用時,所產生的記憶體不足 或是 cost 過高的問題。. 6.
(14) 第一章 緒論. 1.2. 全文架構. 本篇論文共分為五個章節,以下為各章節內容概述: 【第一章】緒論 說明本論文的研究背景、動機、目的、方法及本文架構。. 【第二章】基礎理論及技術背景介紹 對本論文中有使用之基礎理論、技術背景做詳細的說明與介紹。 【第三章】系統架構 說明所提出的主動型態硬體加速電路與將其加入大尺寸的 FFT 後的設計架 構、並提供各電路內部的討論與說明。 【第四章】實驗數據與效能比較 包含了系統環境的說明、相關實驗數據分析以及與其他文獻的效能比較。 【第五章】結論 對於以上所介紹硬體架構及應用結果進行總結。. 7.
(15) 第二章 基礎理論及技術背景介紹. 第二章 基礎理論及技術背景介紹 本章節將介紹本論文所使用到的基本理論與技術背景,首先利用前兩節來介 紹 SoC 與 NoC 接著在第三節中說明 FPGA 和整合 FPGA 與 Qsys 的設計架構與開 發流程。最後用第四節與第五節分別討論主動型態與 SDRAM Controller。. 2.1 System on Chip 2.1.1. SoC 的發展 SoC 就是利用一些元件做組合以達到特定的功能並將其放在單晶片上。. 這種將系統放在單晶片中有什麼好處呢?如提升系統效能、降低功率消耗、縮小 體積、提高速度與節省成本等。由於將系統中的 IC 數目降低,所以縮小體積與 減少成本是可以的預期的,而將電路濃縮到單晶片上使得各個元件之間的距離變 得更近以達到提升系統效能與降低功率消耗。另外現今的 IP 設計大部分都是以 模組化為主,其好處可以提供重複利用性,這個特性將會成為影響開發時間與成 本的重要因素之一。 達到這些優點的前提是將各個功能放在單一晶片上,又單晶片上的面積有限 而我們想要放入的功能是無限的,隨著製程的進步使可以放入的功能愈來愈多, 但是伴隨而來的就是 IC 設計的複雜度與驗證(Verification)的難度也就愈來愈高。. 8.
(16) 第二章 基礎理論及技術背景介紹. 2.1.2. SoC 的系統架構. 一般常見的 SoC 架構,是以處理器為中心,加上 RAM、Bus、客製化電路等 等的一起運作。其中 Bus 的功能是提供 SoC 中各個元件之間的資料傳遞與溝通的 管道,且採用的是 Shared Bus 的方式如下圖 2.1 所示,另外圖中的 PE (Processing element)可以代表 CPU、DMA、RAM 或是客製化電路等。. PE_A. PE_B. Shared Bus. PE_C. PE_D. PE_E. 圖 2.1 共享匯流排 舉個例子來說明此圖,當有 PE_A 想要傳遞資料給 PE_B 時,首先 A 會將資 料用廣播的方式放在 Bus 上,接下來 B 會在 Bus 抓取需要的資料,即可完成資料 的傳輸。但是若有一組以上 PE 想要相互溝通,如在 PE_A 與 PE_B 互相傳送的 時候,PE_C 也想與 PE_D 溝通,這時,PE_C 與 PE_D 就必須等待 PE_A 與 PE_B 完成後將 Bus 釋出才有辦法進行動作,如此會使之產生額外的等待時間,進而造 成目前的通訊瓶頸。 9.
(17) 第二章 基礎理論及技術背景介紹. 2.2 Network on Chip 2.2.1. NoC 的發展. 由於 SoC 的設計愈來愈複雜,Shared Bus 的結構已不敷使用,而 NoC 的誕 生就是為了解決這個問題。NoC 最核心的概念就是將電腦網路架構的方式移植到 單晶片的設計上,與分散式系統的網路概念有點類似,且每個元件之間有各自連 接的通道,使之擁有較好的擴展性。 隨著製程的進步,在各元件之間因為 Shared Bus 結構所造成溝通的延遲已經 成為整體性能的瓶頸, NoC 中,會利用 Router 將各元件之間連接起來使得大幅 度的降低彼此溝通所造成的延遲以解決 SoC 中遇到的困難與瓶頸。當 NoC 系統 有擴展的需求時,只要再設計一個新的 NI 來配合該元件即可將其加入網路架構 中以完成擴展的動作。由於 NoC 中有全域非同步局部同步(GALS;Globally Asynchronous Locally Synchronous)的概念使得 NoC 比 SoC 擁有更好的擴展性。. 2.2.2. NoC 的架構 一般 NoC 的系統內部通常包含了 PE、網路介面(Network interface,NI)、. 和路由器(Router),架構如下圖 2.2。NI 為元件與 Router 之間連接的橋樑,每個 NI 會分為兩個部分,分別為 request 與 response,當發出 request 才會產生相對應 的 response 並且這兩個部分為 loosely coupled 的關係。另外 Router 為各元件之間 10.
(18) 第二章 基礎理論及技術背景介紹 連接的中介,只要配合 NI 就可以使元件與元件之間可以建立起連線,使資料可 以傳送到指定的目標位置,且在 NoC 中不會限制 Router 的數量,使我們有更好 的擴展性。. R. R NI. NI. PE R. R. NI. PE. PE. R NI. R. NI. PE. PE. R NI. PE. R NI. node. node. R NI. PE. Interconnection. NI. PE. PE. R:Router PE:Processing element. 圖 2.2 NoC 架構圖 不同於 Shared Bus,NoC 利用了 NI 與 Router 來建立連線與傳送資料以取代 以往 Shared Bus 的結構且是採用網路封包傳輸的概念使各元件之間可以獨立的運 作,這樣不但可以解決 Shared Bus 所造成的資源浪費,也可以節省等待時間,使 我們可以更有效的利用資源與達到更好的執行速度。除此之外,相對於傳統 SoC, 由於 NoC 的各元件之間可以獨立運作使其更適合使用在實現多核心的系統。而 若要實現多核心的概念時,也僅僅需要將每個各自獨立 PE、NI 與 Router 視為一 個節點(Node)[1]並利用 Interconnection Network(也稱為 NoC Network)將每個節點 中的 Router 連接起來即可。如圖 2.2 中,Router 與 Router 之間的所有連線組成 Interconnection Network,而 node 是由 Router、NI 與 PE 等三項組合而成的。. 11.
(19) 第二章 基礎理論及技術背景介紹. 2.3. FPGA 系統設計 由於 IC 產品的設計週期愈來愈短,且所要求的功能愈來愈多也愈來愈複雜,. 與 ASIC 相比 FPGA 擁有較低研發成本、較短的研發時間與高度彈性等優點,使 得愈來愈多開發人員選用 FPGA 做為開發的平台。另外使用硬體描述語言 (Hardware Description Language, HDL)搭配 FPGA 來設計電路,只要經過簡單的合 成(Synthesis)與繞線佈局(Routing and Placement)可快速的重複燒錄至 FPGA 中來 進行測試。根據上述的優點,使得 FPGA 已成為 IC 設計的主流。 Altera 公司根據不同使用者的需求,提供許多不同系列的 FPGA 開發板,本 論文是使用 Stratix III EP3SL150 (DE3-150)系統開發版作為開發平台以實現主動 型態硬體加速電路。. 圖 2.3 Qsys 系統架構圖[2] 12.
(20) 第二章 基礎理論及技術背景介紹 Altera 除了提供開發版也提供了 NIOS 與 Qsys 等軟體作為開發人員的開發工 具。圖 2.3 為一個 Qsys 系統架構圖,當中的 Avalon Bus 是 NIOS 在 Qsys 上用以 內部互聯(Interconnect)使得 NIOS processor 與其他設備端口連接再一起的匯流排 架構。開發人員設計出的硬體電路被視為一個客製化邏輯電路(Custom Logic Circuit),透過此匯流排上的各個訊號線,將電路掛在 Avalon Bus 上與整個系統溝 通。另外 Qsys 系統的開發分硬體和軟體開發兩個部份,其流程如下圖 2.4[3]。. Hardware Development. Software Development. Design Custom Logic. Project Configure. Add Custom Logic. Write a C program. Add IP. Compile. Connect Custom Logic and IP. Execute Code. Generate. Get the results. Top Design. Verification. Compile. 圖 2.4 Qsys 開發流程 13.
(21) 第二章 基礎理論及技術背景介紹. 2.4 主動型態 2.4.1. 主動型態的簡介. 在 Qsys 中,PE 可分為兩種:主動型態(Master)與被動型態(Slave),若 PE 代 表了記憶體的存取裝置,則主動 PE 可以主動地向其他 PE 要資料,而被動 PE 會 被動地提供資料,也就是說被動 PE 為接受主動 PE 所提出的要求,而主動 PE 要 主動的產生 address 與告知被動 PE 現在要執行 read 或是 write。以被動 PE 觀點來 看,當 read 時,被動 PE 接收 address 而提供 data;反之在 write 時,被動 PE 接 收 address 與 data。不同於被動 PE,主動 PE 需要產生存取的位址與 read 或 write 的要求,所以在設計上主動 PE 會比被動 PE 複雜許多,經過上述的討論,我們可 以發現被動 PE 與主動 PE 最大的差別在於只有主動 PE 可以對被動 PE 發起傳輸 與被動 PE 在設計上會較為簡單。. 此外在 Master 中會提供 waitrequest 的訊號,該訊號扮演了我們在設計 Master 電路中的很重要的角色。相反的在 Slave 中,並沒有提供 waitrequest 這條訊號, 是因為 Slave 大都屬於 On-Chip 的,所以大部分的情況下都不會使用到。由於我 們採用的是 Altera 所生產的 FPGA 開發板作為實作的平台,所以在設計上必須遵 守該公司所提出的 Avalon Interface Specification[4]中所提出各訊號的規範與要 求。. 14.
(22) 第二章 基礎理論及技術背景介紹 有鑑於 waitrequest 的重要性,將詳細介紹此訊號。當 Master 發出 read 或是 write 的要求時,Slave 就會回傳 waitrequest 給 Master,若此 Slave 正在處理別的 Master 的要求或是尚未處理完上次的工作,則 Slave 會將 waitrequest 設定為 1 並 且回傳給 Master,反之則將 waitrequest 設定為 0。根據上述 waitrequest 的特性, 我們在設計電路時若遇到 waitrequest=1 的情況就必須將要給 Slave 的控制訊號與 資料保持不變,直到 waitrequest=0 時才可以換下個動作,否則會因為 Slave 處於 busy 的狀況下,無法接收 Master 當下的要求,等到 waitrequest=0 的時候,所給 的資訊已經不是正確的,進而導致電路出現錯誤。其他如 address、read、write、 byteenable、readdata、writedata 與 readdatavalid 等用下面表 2.1 來說明。. address. 用來指定目前命令(read 或 write)的位址。. read. 若為 1,則表示目前命令為 read。. write. 若為 1,則表示目前命令為 write。. byteenable. 用來決定要忽略 writedata 或 readdata 的 byte 數。. readdata. 當 read 執行時,所得到指定位址的資料。. writedata. 當 write 執行時,所要寫入指定位址的資料。. readdatavalid. 當 readdata 有效時會被設定為 1。 表 2.1 各訊號的簡介. 15.
(23) 第二章 基礎理論及技術背景介紹. 2.4.2. 主動型態 Read 的工作流程. 在主動型態 Read 中,工作流程如下: Step1:在 reset=0 的 clk rising edge 之後,會將 address 與 byteenable 設定好, 並觀察 waitrequest 在同一個 clk 之內是否有被設定為 1。若 waitrequest=1 則在下 個 clk rising edge 時必須將 address、read 與 byteenable 等三個訊號保持原樣。 Step2:當 Slave 已經提供正確的 readdata 時,readdatavalid 就會被設定為 1 並且在同一個時間點會將 waitrequest 設定成 0。 Step3:經過上面兩個步驟,已經完整的完成讀取的流程。由於接下來的 waitrequest=0 且 readdatavalid=1,我們可以停止或是開始新的讀取動作,若要執 行下個讀取就將 read 設定為 1 並且提供新的 address 與 byteenable 即可。. clk reset address. addr1. addr2. read byteenable. 1111. waitrequest readdatavalid readdata. data1. data2. 圖 2.6 主動型態 read 之時序圖 16.
(24) 第二章 基礎理論及技術背景介紹 下面用圖 2.6 做為例來說明主動型態 Read 的工作流程 a:因為 reset=0 則在 clk 的 rising edge 後,會將 addr1 與 byteenable 設定好, 並且觀察到 waitrequest=0(Step1)。 b:由於 read=1 且 readdatavalid=1 則表示 data1 為正確的,並且 Slave 會將 waitrequest 設定為 0,到此完成讀取 addr1 的動作(Step2)。又此 clk rising edge 後 read=1 表示還有讀取的動作尚未結束,並設定下個 read 的位置(addr2)與 byteenable 並且觀察到 waitrequest=1(Step1)。 c:由於 waitrequest=1,須維持 addr2、read 與 byteenable(Step1)。 d:由於 read=1 且 readdatavalid=1 表示 data2 為正確的,並且 Slave 會將 waitrequest 設定為 0,到此完成讀取 addr2 的動作(Step2)。因為此 clk 後 read=0, 表示沒有下個讀取的動作。. 17.
(25) 第二章 基礎理論及技術背景介紹. 2.4.3. 主動型態 Write 的工作流程. 在主動型態 Write 中,其工作流程如下: Step1:在 reset=0 的 clk rising edge 之後,會將整個電路 reset。,會將 address、 byteenable 與 writedata 設定好,並觀察 waitrequest 在同一個 clk 之內是否有被設 定為 1。若 waitrequest=1 則在下個 clk rising edge 時必須將 address、write、byteenable 與 writedata 等四個訊號保持原樣。 Step2:若 waitrequest=0 則 Slave 得到 writedata,且將 writedata 寫入指定的 address 上。 Step3:經過上面兩個步驟,已經完整的完成寫入的流程。由於 waitrequest=0, 我們可以停止或是開始新的寫入動作,若要執行下個寫入就將 write 設定為 1 並 且提供新的 address、byteenable 與 writedata 即可。. clk reset address. addr1. addr2. write byteenable. 1111. waitrequest writedata. data1. data2. 圖 2.7 主動型態 write 之時序圖 18.
(26) 第二章 基礎理論及技術背景介紹 下面利用圖 2.7 做為例來說明主動型態 Write 的工作流程 a:因為 reset=0 則在 clk rising edge 後,會設定 addr1、byteenable 與 data1, 並且觀察到 waitrequest=0(Step1)。 b:由於 waitrequest=0 表示此時會將 data1 寫入 addr1 中,到此完成寫入的動 作 (Step2)。又此 clk 後 write=1 表示還有 write 的動作尚未結束,並設定下個 write 的位置 addr2、byteenable 與 data2 並且觀察到 waitrequest=1(Step1)。 c:由於 waitrequest=1,須維持 addr2、byteenable 與 data2 (Step1)。 d:由於 waitrequest=0 表示此時會將 data2 寫入 addr2 中,到此完成將 data2 寫到 addr2 的動作 (Step2)。因為此 clk 後 write=0,表示整個寫入的動作結束。. 19.
(27) 第二章 基礎理論及技術背景介紹. 2.5 SDRAM Controller 在 Qsys 中,常見的主動 PE 為 CPU,而被動 PE 為 SDRAM Controller[5]。由 於我們後續的電路會存取 SDRAM,而存取 SDRAM 需要用到 SDRAM Controller, 所以在此對 SDRAM controller 作介紹。那為什麼在存取 SDRAM 時需要用到 SDRAM controller 呢?因為 SDRAM 為 Off-Chip RAM 而非放在 FPGA 上,所以 每當我要讀寫 SDRAM 時,就必須透過 SDRAM controller 來使 SDRAM 與 FPGA 得以相互交換資料。相同的道理,我們在 Qsys 中若要存取 SDRAM 也必須用 SDRAM controller 才有辦法接受讀或寫的要求。. 也因為是透過 SDRAM controller 來與存取 SDRAM,使得我們不需要了解整 個 SDRAM 內部的運作流程也能存取 SDRAM。若要讀取 SDRAM 中的資料,則 就將想要讀取的位址傳送給 SDRAM controller,而在寫入的方面,需要提供寫入 的位址與欲寫入的資料給 SDRAM controller,如圖 2.8 所示。圖中的 address 是代 表要 read 或 write 的位址;request 表示要執行 read 或 write;read_buffer 是儲存由 SDRAM 中抓到的 readdata;write_buffer 是暫存要寫入 SDRAM 中的 writedata。. 20.
(28) 第三章 系統架構. 第三章 系統架構 本章會詳細介紹本論文所提出的主動型態硬體加速電路之設計架構,首先利 用第一節、第二節與第三節分別介紹主動型態讀(Active Read)、主動型態寫(Active Write)與結合 Active Read 與 Active Write 而成的主動型態硬體加速電路的運作流 程與設計概念。最後在第四節中介紹如何在主動型態硬體加速電路中加入 FFT 與 其電路運作流程與設計概念。. 3.1 Active Read 在 Active Read 中,將其分成四個部分,分別為 NoC Network、NI、Circuit Interface For Active Read 與 Custom Circuit。其中 Circuit Interface For Active Read 是負責產生讀取位置與輸出必要的訊號給 NI,Custom Circuit 負責的是暫存所得 到的 readdata。其架構如下圖 3.1.1 所示。. NoC Network. Circuit Interface For Active Read. NI. 圖 3.1.1 Active Read 電路架構圖(1) 21. Custom Circuit.
(29) 第三章 系統架構 在 NI 與 NoC Network 之間,NI 會將 read 與其他指令封包化後利用 Router 與 NoC Network 建立起的連線傳送給 Slave,並且 readdata 也是透過此連線傳送 給 Master。而 NI 與 Circuit Interface For Active Read 的關係如下圖 3.1.2 所示,而 其時序分析如圖 3.2.3。. clk. read_rst m_address. NoC Network. NI. m_readdata m_read m_waitreques m_readdatavalid. Circuit Interface For Active Read. 圖 3.1.2 Active Read 電路架構圖(2). 圖 3.1.3 Active Read 電路時序圖(1). 22. Custom Circuit.
(30) 第三章 系統架構 圖中 m_address、m_readdata、m_read、m_waitrequest 與 m_readdatavalid 分 別代表在本論文第二章所介紹過的:address、readdata、read、waitrequest 與 readdatavalid。而 read_rst 指的就是 reset。接下來將利用圖 3.1.3 來詳細說明 Active Read 的動作流程。. a:由於 read_rst=0,導致系統不會執行讀取的動作。但是經過此 clk rising edge 後 m_read 與 read_rst 被設定為 1,且會在下個 clk rising edge 前準備好 m_address。 b:read_rst 與 m_read 為 1 並提供了 m_address=addr1 且 m_readdatavalid=1, 表示了在 b 這個 clk 會去執行讀取的動作並且得到有效的 data1。同時由於 m_read=1、m_waitrequest=0 與 m_readdatavalid=1 則就可以去設定下次的 m_address=addr2。 c: read_rst 為 1 並且提供了 m_address=addr2,但是因為 m_waitrequest=1 表 示此時無法提供 read 的要求且必須將 m_address、m_read 保持不變。 d:同 b,可以得到 data2 且設定了下次的 m_address=addr3。 e:雖然 m_waitrequest=0,但又因為 m_readdatavalid=0,表示此時的提供的 readdata 為無效的。 f:m_read=0,表示不執行 Read 的動作。另外 m_readdatavalid=1,則表示此 時的 data3 為有效的。. 23.
(31) 第三章 系統架構. Circuit Interface for Active read clk read_rst m_address m_read m_waitrequest m_readdatavalid. addr_out r_en m_waitrequest m_readdatavalid. Custom Circuit. rd_en. AGU_r m_readdata. m_readdata. 圖 3.1.4Active Read 電路架構圖(3) 圖 3.1.4 表示 Circuit Interface For Active Read 與 Custom Circuit 之間的詳細關 係。由圖中可得知 Circuit Interface For Active Read 中包含一個 AGU_r 來產生要 讀取的位址 addr_out 與是否要執行 read 動作的 r_en。利用圖 3.1.5 來介紹 AGU_r 的架構。當中的 addr_out 與 r_en 會分別傳送給 Circuit Interface For Active Read 中 的 m_address 與 m_read。. Circuit of AGU_r m_readdatavalid rd_en. m_waitrequest. clk. upperbound for read. Comparator (<). en. addr_out 4. +. D-FF. 圖 3.1.5Active Read 電路架構圖(4) 24. r_en. addr_out.
(32) 第三章 系統架構 AGU_r 的運作方式如下,在 read_rst=0 時會使整個電路 reset,且在每次 clk rising edge 時會去檢查 rd_en 是否為 1 與 addr_out 有無滿足終止條件。如果 rd_en=1 且 addr_out 尚未滿足終止條件,則 addr_out=addr_out+4,相反的當 addr_out 已經 滿足終止條件與 rd_en=1(最後一次 Read 完成),則設定 r_en=0。接下來以下圖 3.1.6 為例子(設定 addr=addr3 為終止條件)來詳細說明其流程。. 圖 3.1.6 Active Read 電路時序圖(2). a:由於 read_rst 為 0,則將整個電路 reset 將設定 addr_out=addr1 與 r_en=1。 b:因為 read_rst 為 1 且 rd_en=1,又 m_address 尚未到達 addr3 則會將 addr1+4 而產生新的 addr_out=addr2 與 r_en=1。 c:此時 rd_en=0,則將維持 addr_out 與 r_en。 d:同 b,將產生新的 addr_out=addr3 與 r_en=1。 e:因為 addr_out 滿足終止條件與 rd_en=1 則將 r_en 設定為 0。 25.
(33) 第三章 系統架構. Custom Circuit clk. m_readdaata. clk. 32. clk. 32. clk. 32. clk. 32. clk. DFF_0. DFF_1. DFF_2. DFF_3. DFF_n-1. en. en. en. en. en. rd_en. 圖 3.1.7Active Read 電路架構圖(5) Custom Circuit 的設計架構如圖 3.1.7,當中主要的目的為利用 rd_en 當作 enable 將 readdata 存於 DFF 中。我們可以透過圖 3.1.8 的時序圖來了解其運作流 程。. 圖 3.1.8Active Read 電路時序圖(3) a:由於 rd_en=0,所以不會將 m_readdata 存入 DFF_0 中。 b:由於 rd_en=1,將 data1 存入 DFF_0 中。 c:由於 rd_en=0,所以不會將 m_readdata 存入 DFF_0 中。 d:由於 rd_en=1,將 data2 存入 DFF_0 中同時將 DFF_0 存入 FF_1。 26.
(34) 第三章 系統架構. 3.2 Active Write 在 Active Write 中,將其分成四個部分,分別為 NoC Network、NI、Circuit Interface For Active Write 與 Custom Circuit,其中 Circuit Interface For Active Write 是負責產生寫入位置與資料與輸出必要的訊號給 NI。其架構如下圖 3.2.1 所示。. NoC Network. Circuit Interface For Active Write. NI. Custom Circuit. 圖 3.2.1 Active Write 電路架構圖(1) 在 NI 與 NoC Network 之間,NI 會將 write、writedata 與其他指令封包化後利 用 Router 與 NoC Network 建立起的連線傳送給 Slave。而 NI 與 Circuit Interface For Active Write 的關係如下圖 3.2.2 所示,而其時序分析如圖 3.2.3。. clk write_rst. NoC Network. m_address. NI. m_write m_writedata. Circuit Interface For Active Write. m_waitrequest. 圖 3.2.2 Active Write 電路架構圖(2) 27. Custom Circuit.
(35) 第三章 系統架構. 圖 3.2.3 Active Write 電路時序圖(1) 圖中 m_address、m_write、m_writedata 與 m_waitrequest 分別代表在本論文 在第二章所介紹過的:address、write、writedata 與 waitrequest。而 write_rst 指的 就是 reset。接下來將利用圖 3.2.3 來詳細說明 Active Write 的動作流程。 a:由於 write_rst=0,則將整個電路 reset 使 m_ write 與 write_rst 設定為 1, 且會在下個 clk rising edge 前準備好 m_address=addr1 與 m_writedata=data1。 b:write_rst=1 與 m_write=1 並且提供了 m_address=addr1 與 m_writedata= data1, 表示了在 b 這個 clk 會去執行寫入的動作將 data1 寫入 addr1 中。同時由於 m_waitrequest=0 則就可以去設定下次的 m_address=addr2 與 m_writedata=data2。 c: write _rst 為 1 且 m_write=1、m_address=addr2 與 m_writedata=data2,但 是因為 m_waitrequest=1 表示此時無法提供 write 的要求且必須將 m_address、 m_write 與 writedata 保持不變。 d:同 b,將 data2 寫入 addr2 中並設定了下次的 data3 與 addr3。 28.
(36) 第三章 系統架構 e:m_write=0,表示不執行 Write 的動作。. Circuit Interface for Active Write clk write_rst m_address m_write m_waitrequest. addr_out. w_trig. w_en. Custom Circuit. m_waitrequest. AGU_w m_writedata. data_out. 圖 3.2.4 Active Write 電路架構圖(3) 由圖 3.2.4 中可得知 Circuit Interface For Active Write 中包含一個 AGU_w 來 產生要寫入的位址(addr_out)與是否要執行 Write 動作的 w_en。利用圖 3.2.5 來介 紹 AGU_w 的架構,當中的 addr_out、w_en 會分別傳送給 Circuit Interface For Active Write 中的 m_address 與 m_write。另外 w_trig 會傳給 Custom Circuit 使其產生 data_out 並傳送給 Circuit Interface For Active Write 中的 m_writedata,如圖 3.2.6。. 29.
(37) 第三章 系統架構. w_trig. 圖 3.2.5 Active Write 電路架構圖(4). Custom Circuit w_trig. clk. data_out. en. D-FF. +. 4. data_out. 圖 3.2.6 Active Write 電路架構圖(5) AGU_w 的運作方式如下,在 write_rst=0 時會使整個電路 reset,且在每次 clk rising edge 時會去檢查 m_waitrequest 是否為 0 與 addr_out 有無滿足終止條件。如 果 m_waitrequest=0 且 addr_out 尚未滿足終止條件,則更新 addr_out,相反的當 addr_out 已經滿足終止條件與 m_waitrequest=0,則設定 w_en=0。另外 w_trig 會 傳給 Custom Circuit 使其產生 data_out 並傳送給 Circuit Interface For Active Write. 30.
(38) 第三章 系統架構 中的 m_writedata。。接下來以下圖 3.2.7 為例子(設定 addr=addr2 為終止條件)來 詳細說明 AGU_w 與 Custom Circuit 的流程。. 圖 3.2.7Active Write 電路時序圖(2) a:由於 write_rst 為 0,則將整個電路 reset 並設定 addr1 與 w_en。又在同個 clk 中 m_waitrequest=0 與 w_en=1 所以將 w_trig 設為 1,也就會同時設定了 data1。 b:因為 write_rst 為 1 且 m_waitrequest=0 與 w_en=1,則會將 data1 寫入 addr1 中。又未滿終止條件(addr_out=addr2)則會將 addr_out 更新為 addr2。同時因為 w_trig=1,也會將 data_out 更新為 dada2。 c:此時 m_waitrequest=1,所以 addr_out、data_out 與 w_en 保持不變。 d:同 b,將 data2 寫入 addr2 中,又此時滿足終止條件(addr_out=addr2)且 m_waitrequest=0 則將 w_en 設定為 0 來終止 Write 的動作。. 31.
(39) 第三章 系統架構. 3.3 主動型態硬體加速電路 在結合 Active Read 與 Active Write 後成為完整的主動型態硬體加速電路,將 其分成六個部分,分別為 NoC Network、NI_R、NI_W、Circuit Interface For Active Read、Circuit Interface For Active Write 與 Custom Circuit,其中 NI_R 代表 Active Read 的 NI,相同的 NI_W 代表 Active Write 的 NI。其架構如下圖 3.3.1 所示。. NI_R. NoC Network. NI_W. NI. Circuit Interface For Active Read. Circuit Interface For Active Write. Custom Circuit. 圖 3.3.1 結合 Active Read 與 Active Write 電路架構圖(1) 電路的運作流程如下:首先經由 Active Read 取得指定位址的 data 後將其存 於 Custom Circuit 中,之後 Active Write 會去 Custom Circuit 抓取該 data 並寫入指 定的位址。 32.
(40) 第三章 系統架構 clk read_rst m_address NI_R. m_readdata m_read m_waitrequest. Circuit Interface For Active Read. m_readdatavalid. NoC Network. Custom Circuit clk write_rst m_address NI_W. m_write m_writedata m_waitrequest. Circuit Interface For Active Write. NI 圖 3.3.2 結合 Active Read 與 Active Write 電路架構圖(2). 由圖 3.3.2 中可以發現,在結合 Active Read 與 Active Write 後,不管是 Active Read 或 Active Write 在對應其 NI 時,與本論文中 3.1 與 3.2 節介紹的訊號並沒有 不同,所以僅提供架構圖而不再詳細說明。 接下來討論 Circuit Interface For Active Read、Circuit Interface For Active Write 與 Custom Circuit 之間的關係。觀察下圖 3.3.3 後,可以發現 Circuit Interface For Active Write 與 Custom Circuit 跟上節介紹的有些不同. 33.
(41) 第三章 系統架構. Circuit Interface for Active read clk read_rst m_address m_read m_waitrequest m_readdatavalid. addr_out r_en m_waitrequest rd_en m_readdatavalid. Custom Circuit. AGU_r m_readdata. Circuit Interface For Active Write clk write_rst m_address m_write. m_waitrequest. start_write w_trig. addr_out w_en. w_trig_from_write. AGU_w. m_waitrequest. read_data_to_write. m_writedata. 圖 3.3.3 結合 Active Read 與 Active Write 電路架構圖(3) 由圖中可以發現 AGU_w 已經不再產生 m_writedata 與發出 w_trig 的訊號。 這兩個不同處皆與 Custom Circuit 有關,而 Custom Circuit 的架構圖如下圖 3.3.4, 其中利用 Buffer_a 來儲存由 Active Read 所讀取到特定位址的資料(readdata), Buffer_b 來提供 writedata 給 Active Write,最後再利用 Counter 配合 Comparator 來判斷是否已經完成 read 或是 write 動作。 34.
(42) 第三章 系統架構. Custom Circuit clk m_readdaata rd_en. Buffer_a (SIPO). clk read_end. Buffer_b (PISO). read_data_to_write. w_trig_from_write size_of_read clk. Comparator (=). Counter rd_en. read_end. size_of_read. Comparator (>). 圖 3.3.4 結合 Active Read 與 Active Write 電路架構圖(4). 35. start_write.
(43) 第三章 系統架構. 3.4 在主動型態硬體加速電路加入 FFT 經過了前三節的討論,我們對主動型態硬體加速電路有了初步的了解,接下 來將利用 1D FFT 為例子來說明該如何使用本論文所提出的主動型態硬體加速電 路。如圖 3.4.1 所示,電路分為 FFT Circuit、Active Read、Active Write、Buffer & Status Registers、SDRAM Controller 與 CPU 等七個部分。. FFT Circuit. Active Read. Buffer & Status Registers. Active Write. NI_R. NI_W. NI_Slave. NI. NoC. NI. NI. SDRAM Controller. CPU. 圖 3.4.1 NoC 平台下主動型態 FFT 硬體加速電路 36.
(44) 第三章 系統架構 圖 3.4.1 中的主動型態 FFT 硬體加速電路運作流程如下:當啟動 Active Read 後,使 Active Read 透過 SDRAM Controller 抓取 SDRAM 中的資料並且將其輸出 給 FFT 做運算,接著利用 Active Write 將得到的結果回寫 SDRAM 中,最後藉由 CPU 將 SDRAM 中的值讀出來做驗證。. Controller. Status Registers. FFT 1D. Buffers. Buffers of Active Read & Active Write Interface 圖 3.4.2 FFT Circuit 架構圖 圖 3.4.2 為 FFT Circuit 的架構,當中 Buffers 是由兩個 Buffer:Buffer_a 與 Buffer_b 所組成的,分別負責儲存欲給 FFT 運算的資料與 FFT 運算後所得到的結 果;Status Registers 是透過改變內部的值來控制 Controller 的動作;1D FFT(Fast Fourier Transform,FFT)為使用 Altera 公司提供的 Quartus II 13.1 Megawizard Plug-In Manager 所產生的 Megafunction IP Core [5]。此模組為單一複數資料輸入 及單一複數資料輸出的形式,若資料轉換長度為 N,並且選用資料流(Streaming) 37.
(45) 第三章 系統架構 的模式,此種模式可以連續的將 N 筆資料輸入到 FFT 模組中,並且待轉換完成 後也能連續的將結果輸出。資料流模式的 FFT 模組輸入與輸出皆為浮點數 (Floating Point)格式;Controller 其功能為依據 Status Registers 中的值來決定整個 FFT Circuit 的動作。 FFT 的運作是隨著 FFT Controller 的指令,接下來將詳細介紹 FFT Controller 各步驟的運作流程,其中假設 Active Read Buffer 已經儲存由 Active Read 所抓取 的資料。 Step1:當 Buffer 存滿由 Active Read 來的資料時會去改變 Status Registers 內 部的值,另外 Controller 會一直去檢查 Status Registers 是否符合條件。所以當 Active Read Buffer 得到所需的資料後,會使 Status Registers 改變內部的值並且使 Controller 得知已經將資料存於 Buffer 中。. Controller. Status Registers. FFT 1D. Buffer. Buffer of Active Read Interface 圖 3.4.3 FFT Controller 的流程(1). 38.
(46) 第三章 系統架構 Step2:當 Controller 經由 Status Registers 得知已取得欲給 FFT 運算的資料後, Controller 會使 Buffer 中的資料依序的送給 FFT 並且在同一個時間點告知 FFT 開 始運算。. Controller. Status Registers. FFT 1D. Buffer. Buffer of Active Read Interface 圖 3.4.4 FFT Controller 的流程圖(2) Step3:FFT 運算完後會通知 Controller 與將運算結果儲存到 Buffer 中。. Controller. Status Registers. FFT 1D. Buffer. Buffer of Active Write Interface 圖 3.4.5 FFT Controller 的流程圖(3). 39.
(47) 第三章 系統架構 Step4:當 Buffer 滿時會去改變 Status Registers 內部的值,另外 Controller 會 一直去檢查 Status Registers 是否符合條件。所以當 FFT 的運算結果皆存於 Buffer 後,會使 Status Registers 改變內部的值。. Controller. Status Registers. FFT 1D. Buffer. Buffer of Active Write Interface 圖 3.4.6 FFT Controller 的流程圖(4) Step5:Controller 告知可以利用 Active Write 將 Buffer 中的運算結果寫入指定 到位址。. Controller. Status Registers. FFT 1D. Buffer. Buffer of Active Write Interface 圖 3.4.7 FFT Controller 的流程圖(5) 40.
(48) 第三章 系統架構 雖然上述的電路是將影像資料放在 SDRAM 中做 1D FFT,但是可以在不需 要修改電路的情況下推廣到 2D FFT,主要是因為 2D FFT 是由執行一連串的 1D FFT 而組成的,所以可以使我們利用電路的重複使用以達到 2D FFT 的的功能。 更進一步來說,由於我們是將影像資料放於 Off-Chip 的 SDRAM 中並且利用上 述的電路不斷的重複執行,在推廣到大尺寸的 FFT 時,可以達到低的電路設計複 雜度與不在受限於 FPGA 開發版上的 On-Chip RAM 大小限制的優點。. 41.
(49) 第四章 實驗數據與效能比較. 第四章 實驗數據與效能比較. 本章節將呈現本論文所提出的主動型態硬體加速電路之實際效能量測與比 較、資源消耗以及介紹實驗的環境。. 4.1 開發平台與實驗環境介紹 本論文所提出的主動型態硬體加速電路是以 Altera 公司的 Stratix III EP3SL150 (DE3-150) FPGA 開發版作為開發平台,如下圖 4.1 所示。而會選用 FPGA 開發板來實現與驗證硬體電路是因為可程式化系統晶片(System on a Programmable Chip, SoPC)可以快速也很容易地將自己設計的電路掛載到 FPGA 中,且具有可重複修改、快速上市與低研發成本等優點,所以以 FPGA 當作開發 平台是非常適合的。. 圖 4.1 Stratix III EP3SL150 FPGA 開發版外觀 42.
(50) 第四章 實驗數據與效能比較 下表4.1為Stratix III EP3SL150 (DE3-150) 開發版的詳細規格資訊,而本論文 所提出的主動型態FFT加速電路的資源消耗會在後面做介紹。. Feature. Stratix III. Device. EP3SL150F1152C2N. Adaptive Logic Modules (ALMs). 56800. Combinational ALUTs. 113600. Memory ALUTs. 56800. Dedicated Logic Registers. 113600. M9K Memory Blocks. 355. M144K Memory Blocks. 16. Total block memory bits. 5630976. DSP block 18-bit elements. 384. Total PLLs. 8. Total DLLs. 4. Total Pins. 744. 表 4.1Stratix III EP3SL150 (DE3-150) 開發版規格表. 43.
(51) 第四章 實驗數據與效能比較 本論文的實現環境分為硬體與軟體實現兩種: 硬體實現環境: Device:Altera Stratix III EP3SL150F1152C2N CPU:NIOS II 4GHz Memory:64-MB DDR2 SDRAM 軟體實現環境: CPU:Intel® Core™ i7-3770 CPU @ 3.40GHz Memory:DDRIII 32.0 G. 本論文使用了 Altera Quartus II 13.1 作為撰寫 Verilog 硬體描述語言的平台, 其提供了語法檢查、邏輯元件的自動配置、電路合成與繞線布局等功能,使我們 在設計上節省了不少時間。另外利用 Modelsim 產生模擬訊號波形圖來驗證電路 的正確性。待系統架構設計完成後,就可以將其掛載到 Qsys 系統中,再利用 Quartus II 將掛載完畢的 Qsys 系統燒錄至 FPGA 開發版中,就可以利用 FPGA 來 得到實質的硬體運算結果進而驗證硬體電路架構設計的正確性與其效能。. Qsys 系統是由 CPU、客製化電路(這邊是指主動型態硬體加速電路)與 SDRAM 等等的元件來組成一個完整的系統,而這套系統是利用 Altera Qsys Builder 這套介面所配置而成的。另外 Altera 公司也提供了以 Eclipse 為基礎的 44.
(52) 第四章 實驗數據與效能比較 NIOC II 軟體供開發人員設計軟體開發(Software Development)的部分。由於 NIOS II 系統提供了完整的開發工具、應用程式、函式庫與驅動程式,當開發人員利用 NIOS II 系統與 Altera FPGA 開發版之間溝通互動時,只要善加利用 NIOS II 所提 供的功能,便可輕易地上手以增加 Qsys 系統的開發速度。. 45.
(53) 第四章 實驗數據與效能比較. 4.2 實驗數據呈現與討論 本節將探討本論文所提出的主動型態 FFT 硬體加速電路,在不同維度時資源 的消耗以及效能分析。首先先對電路做資源的分析接著再利用實際硬體資源消耗 來相互驗證;最後再將本硬體架構與其他文獻進行比較與討論,進一步的歸納出 本論文的優勢。 本硬體加速電路是以 FFT 為例,其架構主要是由 Active Read、Active Write 與 FFT 所組成的,下面即針對這三個元件來進行分析與比較。而各元件的設計主 要由加法器(Adders)、乘法器(Multipliers)以及暫存器(Registers)架構而成。又在實 際的 Qsys 系統上,硬體資源可以分為三大部分,分別為 ALMs、Block Memory Bits 以及 DSP Blocks。其中 ALMs 是被用來實現暫存器與運算單元;Block Memory Bits 則是用於實現暫存器或是記憶體元件;而 DSP Blocks 是被用於實現數值運算中像 是加法器以及除法器等元件。以下利用表 4.2、表 4.3 與表 4.4 針對不同維度下各 元件的資源消耗。 表 4.2 為主動型態 FFT 硬體加速電路在不同維度時各元件之 ALMs 消耗表。 在 Active Read 中存在兩個 Buffer,分別暫存要傳送給 FFT 執行的圖像資料與 FFT 運算後的結果,所以在 FFT 維度增加時,ALMs 的消耗也會增加。接著在 FFT 的部分,觀察表 4.2 中可以得知其未隨著維度增加而變大,其原因是因為 FFT 的 ALMs 並未被用來設計儲存輸入或是輸出資料的暫存器。最後在 Active Write 中, 由於 Active Write 的功能在於產生寫入位址與寫入的動作,而寫入的資料是在存 46.
(54) 第四章 實驗數據與效能比較 於 Active Read 中,所以也不會隨著維度的變化而改變。因此,每當維度增加的 時候,因為 Active Read 必須擁有夠多的暫存器才有辦法將要給 FFT 運算與運算 結果儲存起來,所以 Active Read 的 ALMs 就必須隨之增加。. Size. Active Read. FFT Unit. Active Write. 128. 11442. 11557. 231. 256. 20490. 11867. 239. 512. 33912. 11371. 225. 表 4.2 主動型態 FFT 硬體加速電路在不同維度時各元件之 ALMs 消耗表. Size. Active Read. FFT Unit. Active Write. 128. 0. 39704. 0. 256. 0. 47902. 0. 512. 0. 172344. 0. 表 4.3 主動型態 FFT 硬體加速電路在不同維度時各元件之 Block Memory Bits 消 耗表. 47.
(55) 第四章 實驗數據與效能比較 表 4.3 為主動型態 FFT 硬體加速電路在不同維度時各元件之 Block Memory Bits 消耗表,首先觀察表 4.3 中的 Active Read,組合此元件的運算單元並未使用 到 Memory Block Bits,因此在 Active Read 中的 Memory Block Bits 資源消耗在各 維度下皆為 0,如表 4.3 所示。而在 FFT 中,由於 FFT 在不同維度時需要不同大 小的資料暫存空間來存放欲處理的影像資料與處理完成的結果,又 Memory Block Bits 即是用來組成 FFT 的暫存器,如此使得 Memory Block Bits 會隨著不同維度 而有增加的趨勢。最後在 Active Write 的部分,其與 Active Read 一樣沒有使用 Memory Block Bits 來組成運算單元,所以一樣皆為 0。. Size. Active Read. FFT Unit. Active Write. 128. 0. 48. 0. 256. 0. 48. 0. 512. 0. 64. 0. 表 4.4 主動型態 FFT 硬體加速電路在不同維度時各元件之 DSP Blocks 消耗表. 表 4.4 為主動型態 FFT 硬體加速電路在不同維度時各元件之 DSP Blocks 消耗 表,由表我們可以得知在不同維度下的 Active Read 中其 DSP Blocks 消耗皆為 0, 可以推測在 Active Read 中沒有用此單元來組合元件,所以不會隨著維度增加而 增多,相同的在 Active Write 中,其 DSP Blocks 消耗也都為 0,也都與維度增加 48.
(56) 第四章 實驗數據與效能比較 沒有關係。而在 FFT 中,可以發現在維度為 128 與維度為 256 時擁有相同的 DSP Blocks 消耗,但是在維度為 512 時,DSP blocks 增加到 64,由此結果我們可以瞭 解在組成 FFT 時,DSP blocks 會依當時的維度來使用對應的數量來合成。. Block. Size. ALMs. 128. 23230. 39704. 48. 256. 32596. 47902. 48. 512. 45508. 172344. 64. Memory Bits. DSP Blocks. 表 4.5 主動型態 FFT 硬體加速電路在各維度的資源消耗. 由表 4.5 可以得知將 Active Read、FFT 與 Active Write 所整合起來後所得的 整體電路之資源消耗。在表中我們可以觀察到 ALMs 與 Block Memory Bits 皆會 隨著輸入不同維度的影像資料而有不同,其原因為當輸入的影像資料愈來大時, 所需要 ALMs 所組成的暫存器就愈多且需要 Block Memory Bits 所組成來暫存 FFT 輸入與輸出資料的容量需求就愈高,所以這兩項會隨著維度增加而上升。而 在 DSP Blocks 方面,其為組合 FFT 元件中的加法器與乘法器,所以會隨著當時 的維度而變化成相對應的數量。 49.
(57) 第四章 實驗數據與效能比較 本論文所提出的大尺寸 FFT 在多個學術期刊上皆有討論,其中以 2D FFT 的 討論為大宗,又因為我們所提出的電路架構是可以在不修改電路的情況下就可推 廣到 2D FFT,而在實現 2D FFT 時,由於只需要改變寫入與讀取的位址即可完成, 所以在 2D FFT 時的資源消耗跟上面所討論的基本上不會有太大的不同。由於我 們在實現 2D FFT 時,是使用了一連串的 1D FFT 去重複執行所得到的結果,所 以可以歸納出 1D FFT 的執行時間會與 2D FFT 的執行時間呈現倍率的關係。. 表 4.6 為 2D FFT 在各維度下與軟體(Matlab)產生的時間作比較,另外在硬體 方面是電路實際在 FPGA 平台上執行時,利用 NIOS CPU 進行量測,另外在使用 NIOS CPU 進行測量時,必需透過 NICO CPU 開啟或是關閉計時器,所以可能會 有些微的誤差。 單位:ms. N=128. N=256. N=512. Matlab. 2.279. 3.670. 10.477. Ours. 0.081. 0.306. 1.126. 表 4.6 各維度下軟體與硬體的 2D FFT 執行時間. 50.
(58) 第四章 實驗數據與效能比較 ALMs. Block Memory Bits. DSP Blocks. Runtime (ms). Ours. 32596. 47902. 48. 0.306. [7]. 12444. 4279364. 48. 0.2652. 表 4.7 維度為 256X256 下的 2D FFT 與其他文獻的資源消耗與速度比較. 表 4.7 為比較被動型態的 2D FFT 與本論文所提出主動型態的 2D FFT 之資源 消耗與執行時間比較表,由表中可以得知本論文的架構在 Block Memory Bits 方 面遠小於[7],其主要的原因是我們採用了 ALMs 所組合而成的暫存器來存放一組 即將要傳給 FFT 做運算的影像資料與 FFT 運算完的一組結果,而在[7]中是使用 了 Block Memory Bits 組合成存放上述兩種全部數量資料的暫存器。舉個例子來 說,若輸入影像為𝑁 × 𝑁則本論文所提出的架構只需要 2N 個暫存器即可,但在[7] 中,則需要一組與影像大小一樣大(𝑁 × 𝑁)的暫存器才有辦法保存所有資料,如此 容易造成電路設計上的瓶頸。我們也可以發現本論文所提出的架構在 Runtime 方 面是略慢於[7]的,其原因為我們是採用 Off-chip SDRAM 來存取資料,而[7]是使 用 On-chip RAM 作為存取單元,所以會造成這樣的差距。相對於 Runtime 略慢於 架構[7],我們更希望的是犧牲一點速度來達到處理更大的影像資料,所以本論文 有它存在的意義與價值。. 51.
(59) 第四章 實驗數據與效能比較 表 4.8 為 2D FFT 在不同文獻上的執行時間比較表,主要是將本論文所提出 的電路架構與其他幾篇進行比較。在這些文獻中,雖然都是執行 2D FFT,但是 可能由於架構、維度、Clock Rate、精準度與實現平台等不同而影響其執行的速 度。. 單位:ms. Source. Runtime (ms). Platfrom. Dimension. Precision. Ours. 1.126. Stratix III. 512X512. 32 (single). [8]. 102.6. Virtex-5 LX155. 1024X1024. 32 (single). [9]. 62.5. Virtex-E. 1024X1024. 16 (fixed). [10]. 21. ASIC (180nm). 1024X1024. 32 (single). [11]. 5.5. Virtex-5 FX. 1024X1024. 16 (fixed). [12]. 6.1. Stratix IV. 1024X1024. 64 (double). (bits). 表 4.8 2D FFT 文獻數據比較表. 52.
(60) 第五章 結論. 第五章 結論. 本論文為實現主動型態硬體加速電路並且利用大尺寸的 FFT 當作例子來驗 證其正確性。經過以上幾節的討論,本論文所提出的架構有以下幾點優勢,分別 為低 Block Memory Bits 消耗與高的電路重複使用性。其中以低 Block Memory Bits 消耗最為重要,我們是透過將影像資料經由 SDRAM Controller 存放於 Off-chip 的 SDRAM 中,使我們可以降低對 FPGA 開發版上 On-Chip RAM 的依賴以達到 降低 Block Memory Bits 的消耗,使我們可以對 Block Memory Bits 有更好的規劃 與利用,以發揮該 FPGA 開發版的最大效能。此外高的電路重複使用性可以大幅 度的降低電路設計複雜度,加速系統開發的時間使滿足愈來愈短的系統開發週 期。 整體而言,因為本論文所提出的主動型態硬體加速電路是基於 NoC 架構下, 又提供了上述低的記憶體資源消耗與電路的重複使用性的優點,使得我們在利用 此電路架構時,可以更容易的掛載與掛載更多數量的客製化電路,使達到在相同 的 FPGA 開發版下,可以處理更大的系統與降低設計的時間。. 53.
(61) 參考文獻. 參考文獻. [1] 林郁軒, 基於網路介面之可重構網路單晶片路由器設計, 國立成功大學電機 工程學系, 2006. [2] Altera Corporation, Avalon Bus Specification Reference Manual, 2003. [3] Altera Corporation, Avalon Interface Specification, 2014. [4] Altera Corporation, SOPC/NIOSII 設計與實作課程, 2007. [5] Altera Corporation, DDR and DDR2 SDRAM Controller Compiler User Guide, 2009. [6] Altera Corporation, FFT MegaCore Function User Guide, 2011. [7] 林烝祺, 以FPGA實現可自動對焦之3D數位全像圖重建系統, 國立臺灣師範 大學資訊工程研究所, 2014. [8] C.-L. Yu et al., Multidimensional DFT IP generator for FPGA platforms, IEEE Transactions on Circuits and Systems, 2010. [9] I. S. Uzun et al., FPGA implementations of fast Fourier transforms for real-time signal and image processing,”in IEEE Conference on Field-Programmable Technology (FPT), 2003. [10] PowerFFT ASIC, http://www.eonic.com/. [11] C.-L. Yu et al., FPGA architecture for 2D discrete Fourier ransform based on 2D 54.
(62) 參考文獻 decomposition for large-sized data, Journal of Signal Processing Systems, 2011. [12] C.-L. Yu et al., Memory Bandwidth Efficient Two-Dimensional Fast Fourier Transform Algorithm and Implementation for Large Problem Sizes, 2011.. 55.
(63)
相關文件
由圖可以知道,在低電阻時 OP 的 voltage noise 比電阻的 thermal noise 大,而且很接近電阻的 current noise,所以在電阻小於 1K 歐姆時不適合量測,在當電阻在 10K
[r]
請繪出交流三相感應電動機AC 220V 15HP,額定電流為40安,正逆轉兼Y-△啟動控制電路之主
3、 輸入文字(Input Text):所產生的文字框具固定寬度,可以讓
由於 Android 作業系統的開放性和可移植性,它可以被用在大部分電子產品 上,Android 作業系統大多搭載在使用了 ARM 架構的硬體設備上使裝置更加省電
為主要的積體電路單元元件,此元件同時利用電子與電洞兩種載子,來進行電流的傳
其硬體架構如圖 9.3 所示。本實驗最主要的目的是要將之前學長所做的 GPS/INS 整合 部分中的加速儀用
針對 WPAN 802.15.3 系統之適應性柵狀碼調變/解調,我們以此 DSP/FPGA 硬體實現與模擬測試平台進行效能模擬、以及硬體電路設計、實現與測試,其測 試平台如圖 5.1、圖