高健,崔建明
(山東科技大學 信息科學與工程學院,青島 266590)
?
高健,崔建明
(山東科技大學 信息科學與工程學院,青島 266590)
摘要:對NoC設計技術進行了研究,設計了采用數控分流策略的NoC路由節(jié)點,并基于該節(jié)點建立了NoC模型,該模型采用2DMesh拓撲結構,確定性XY路由算法實現。用Verilog HDL完成了NoC模型的功能設計,并對基于該模型的16核CPU進行了RTL級仿真與測試。測試結果顯示,該模型完全實現了NoC的功能,可應用于多核CPU設計。
關鍵詞:數控分流;2DMesh NoC;FPGA
引言
隨著越來越多的處理機內核以及可重復利用的IP核被集成到單個SoC(System on Chip)芯片上,傳統(tǒng)總線結構時間資源利用率低、可擴展性差的問題越來越突出。在此背景下,基于網絡和路由通信的片上網絡(Network on Chip,NoC)體系結構應運而生。NoC體系結構包括資源節(jié)點、路由節(jié)點和拓撲結構3部分,這也是NoC設計技術主要研究的3個方面。其中路由節(jié)點的任務是接收上一節(jié)點發(fā)來的數據包,根據目的地址將數據包轉發(fā)到下一節(jié)點。本文以此為切入點,設計了數據和控制信號分流的路由節(jié)點。在拓撲結構的研究中,2DMesh雖然不是最優(yōu)的網絡拓撲結構,但其以帶寬高、結構簡單、復用性強的特點受到眾多研究者的青睞。在此基礎上本文搭建了2DMesh NoC模型。
12DMesh拓撲結構
圖1 2DMesh拓撲結構
NoC的拓撲結構有2D、3D等多種類型,本文采用了2DMesh拓撲結構,如圖1所示,該結構由路由節(jié)點、處理單元、互連網絡3個元素組成。其中,路由節(jié)點的主要任務是引導數據的流動并暫時存放流動中的數據,流動中的數據包經過路由節(jié)點的仲裁后決定向哪個方向流動。處理單元為微控制器、DSP處理器或者存儲器等具有一定處理能力或存儲能力的模塊,本文使用了NiosII軟核。互連網絡決定了網絡節(jié)點的連接方式,節(jié)點傳輸必須按照互連網絡的拓樸結構進行。
2路由算法
路由算法可以分為確定性路由、自適應性路由等幾類,其中確定性路由應用最為廣泛。在確定性路由中,數據包的路徑只與源節(jié)點和目標節(jié)點的地址有關,兩個確定的節(jié)點之間傳輸數據包的路徑是確定的,與網絡當前各節(jié)點的狀態(tài)沒有關系。
本文采用確定性XY維路由算法,路由過程為:先沿X方向將數據包送至目的節(jié)點所在的列,再沿Y方向將數據包送至目的節(jié)點所在的行[1]。
3通信協(xié)議及數據包格式
在NoC中,普遍使用的網絡結構是包交換的直接網絡,本文采用的便是基于包交換的虛擬通道數據交換方式。由于在NoC中沒有專門的協(xié)議處理機制,所有的協(xié)議都必須由硬件處理,這就要求片上網絡的網絡協(xié)議不能太復雜。所以通常都要求NoC中的路由算法簡潔、有效,能將數據包完整、無損、順序地發(fā)送出去。
處理單元之間通過片上網絡收發(fā)數據包通信。所有的路由信息和數據信息都被包含在數據包中。本文中,片上網絡中緩存的大小決定了數據包的大小。由于本文中的緩存是FIFO模塊,而且每個FIFO都正好容納一個數據包,所以數據包設計成了寬度為16位、深度為16個字的形式。
數據包由包頭和包身構成,因為一個緩存正好容納一個數據包,為了使設計簡潔,沒有設計包尾。在數據包中,包頭占了3個字,剩余的13個字是包身,最低兩位是每個字的標志位。數據包格式如表1所列。
表1 數據包格式
4路由節(jié)點
圖2 數控分流邏輯
路由節(jié)點的主要任務是執(zhí)行路由算法、接收數據包并轉發(fā)到下一節(jié)點。一個路由節(jié)點需要處理的信號分為兩類,分別為控制信號和輸入/輸出兩路數據信號。如圖2所示,本文將路由節(jié)點的信號分流到兩種邏輯電路進行處理,有效提升了路由的流暢性,降低了節(jié)點的復雜度。其中控制邏輯主要負責路由、交換等控制功能的實現,主導著數據flit的存儲以及控制數據flit前往下一個節(jié)點的方向,而數據邏輯就是flit存儲、傳輸的具體通道和載體。
4.1節(jié)點頂層架構
本文中一個NoC路由節(jié)點主要由輸入緩存、頭地址寄存器、請求發(fā)生器、輪詢仲裁器、預路由模塊、路由選擇器、交叉開關網絡、路由計數器以及輸出緩存(下一節(jié)點的輸入緩存)組成,如圖3所示。其中,頭地址寄存器、請求發(fā)生器、輪詢仲裁器、預路由模塊、路由選擇器為控制邏輯部分,負責路由、交換等控制功能的實現,主導數據包的存儲以及控制數據包傳輸至正確的方向。輸入緩存和輸出緩存,以及交叉開關網絡,便是數據邏輯部分,負責數據包的傳輸通道和載體。
圖3 NoC頂層架構
4.2具體模塊設計
4.2.1控制邏輯模塊
頭地址寄存器的功能是根據標志位檢測存儲在包頭中的目標節(jié)點的地址信息并保存,直至下一個數據包到達,再將寄存器中的信息更新。如圖4所示,其信號分為3類:上一級的寫入使能信號f_en,各個方向的16位輸入數據信號data[15:0],以及從包頭提取出來的7位目標節(jié)點地址信息addr[6:0]。關鍵代碼如下所示:
always @(posedge)
if(data_e[1:0] ==2′b10 &&f_en == 1′b1)
addr<= data[8:2];
請求發(fā)生器的功能是根據輸入FIFO緩存的滿空情況,產生請求送至輪詢仲裁模塊。其信號如圖5所示,除了時鐘和復位信號外,發(fā)送路由請求信號req是由full和empty信號決定的,即輸入緩存的滿空狀況決定的。關鍵代碼如下所示:
always @ (posedgeclk)
if(!rst_n)req<=1′b0;
else if(empty)req<=1′b0;
else if(full)req<= 1′b1;
圖4 頭地址寄存器
圖5 請求發(fā)生器
圖6 預路由模塊
如圖6所示,預路由模塊根據頭地址寄存器提取出的目標節(jié)點的地址信息,分別進行解析和路由判斷,鑒別出此數據包經過路由節(jié)點的目的方向,具體傳輸哪個方向來的數據包,還要由輪詢仲裁器和路由選擇模塊決定。關鍵代碼如下:
always @ (posedgeclk) begin
if(ren ==1) begin
if(addr[5:3]>x0)
(m_en_e,m_en_s,m_en_w,m_en_n)<=6′b10000;
else if(addr[5:3] (m_en_e,m_en_s,m_en_w,m_en_n)<=6′b001000; else if(addr[2:0]>y0) (m_en_e,m_en_s,m_en_w,m_en_n)<=6′b000100; else if(addr[2:0] (m_en_e,m_en_s,m_en_w,m_en_n)<=6′b010000; else (m_en_e,m_en_s,m_en_w,m_en_n)<=6′b000001; 輪詢仲裁器的任務是在接收到路由請求后,采用優(yōu)先級輪轉的方式依次響應E(東)、S(南)、W(西)、N(北)4個方向的請求,其仲裁方式如圖7所示,關鍵代碼如下: case(count) east: if(a_req_e == 1′b1 &&d_fullen_e == 1′b0) ans_e<= 1; else if(a_req_s == 1′b1 &&d_emptyen_s == 1′b1) ans_s<= 1; else if(a_req_w == 1′b1 &&d_emptyen_w == 1′b1) ans_w<= 1; else if(a_req_n == 1′b1 &&d_emptyen_n == 1′b1) ans_n<= 1; else if(a_req_c == 1′b1 &&d_emptyen_c == 1′b1) ans_c<= 1; else (ans_e,ans_s,ans_w,ans_n,ans_c) <= 5′b00000; 圖7 輪詢仲裁 路由選擇模塊是控制邏輯的最后一個模塊,它以預路由模塊和輪詢仲裁器的輸出作為輸入信號,輸出為各個方向的使能信號,即下一級路由緩存的寫使能信號。經過預路由模塊,每個方向都會產生一組至各個方向的使能信號,在正常的路由過程中,每組信號都是one-hot形式的,且下一級只能有一個方向獲得使能,這就對下一級不同方向的路徑進行了選擇。在這種使能組信號的控制下,數據包只可能寫入下一級一個方向的輸入緩存中,至此完成數據包的傳遞過程。 4.2.2數據邏輯模塊 交叉開關網絡如圖8所示,由5選1的多路選擇器組成,每個多選器的輸出通往一個方向。從整體來看,每個方向都有輸入、輸出兩路,分別連接交叉開關網絡和輸入輸出緩存。 圖8 交叉開關網絡 在本文設計的NoC中,緩存模塊分為兩種。一種是路由節(jié)點之間的同步FIFO緩存,如圖9所示。其作用是暫存流動中的數據包,接收前一級路由發(fā)送來的寫入信號進而將數據寫入緩存,在接到本級路由發(fā)來的讀出信號后將數據包讀出,其大小由數據包大小決定(本文中為16×16位),每個路由節(jié)點都有來自東、南、西、北4個方向的輸入和輸出。數據輸入時根據上一節(jié)點的寫使能信號,將數據先緩存至輸入FIFO中,待數據包存儲滿之后,滿使能置位,發(fā)送路由請求,經過輪詢仲裁器的仲裁,得到響應后讀使能有效,將數據包按順序逐個flit傳輸,中間不間斷地讀出。 另一種是與處理器接口相連接的異步FIFO緩存,如圖10所示。由于NoC系統(tǒng)是跨兩個時鐘域的異步系統(tǒng):一個是片上網絡,另外一個是處理單元。這兩個系統(tǒng)之間就是通過處理器接口相連接的,所以處理器接口緩存便是連接這兩個時鐘域的橋梁。因此,在本設計中,采用異步FIFO作為處理器接口的緩存單元。 圖9 同步FIFO 圖10 異步FIFO 5Verilator仿真與測試 為了對NoC模型進行測試,本文在該模型的基礎上搭建了基于NoisII軟核的4×4的16核CPU,其中,NoC在QuartusII 13.0中使用Altera公司的EP2S180F1508C5芯片的綜合結果如表2所列。本文還對該CPU在Verilator上進行了RTL級仿真,利用該CPU實現了PI運算。 表2 NoC綜合結果 5.1Verilator仿真 Verilator仿真是RTL級仿真的一種,這是一個開放的源碼軟件工具,可以把RTL代碼編譯為C++代碼或SystemC模塊進行仿真的工具鏈。仿真過程為:每個軟核通過NoC向0核發(fā)送“hello world!”消息,0核收到消息后打印到GUI,仿真結果略——編者注。 5.2性能測試 本文采用了常用的PI算法對基于NoC模型的16核進行了性能測試。PI的運算體為pi+=W/(1.0+(0.5+i)×(0.5+i)×W2),W=4.0/N,W2=W×W/16.0,N值越大,運算的次數越多,計算結果越接近pi值。軟件算法流程如圖11所示。 圖11 PI運算流程圖 PI運算的測試結果略——編者注。根據T=t2-t1,得到運算時間。當N分別取10、50、100、300、500、1 000、2 000、3 000、4 000、5 000、6 000、7 000、8 000、9 000、10 000時,進行仿真,計算出T1(pi_manycore運算時間)、T2(pi_single運算時間)、加速比T2/T1。 基于NoC模型的16核CPU與單核CPU相比,其加速比如圖12所示,隨著N值的增大,16核CPU的性能更加接近單核的15倍,說明本文設計的NoC模型性能完全滿足多CPU設計的要求。 圖12 16核和單核的加速比 結語 本文設計了一種基于數控分流策略的NoC路由節(jié)點,基于該節(jié)點構建了2DMesh架構的NoC模型,并對使用該模型搭建的16核CPU進行了仿真與性能測試,測試結果表明,該模型完全實現了NoC的功能,可用于多核CPU的設計。 編者注:本文為期刊縮略版,全文見本刊網站www.mesnet.com.cn。 參考文獻 [1] 張澤坤.一種NoC路由架構設計與分析[D].西安:西安電子科技大學,2011. [2] 徐懿,杜高明,李麗,等.基于總線的片上多處理器SoC仲裁算法研究[J].儀器儀表學報,2006,27(6). [3] S Wallentowitz,A Lankes,A Zaib,et al.一個開源的眾核處理器SoC框架[C]//現場可編程邏輯(FPL)第22次國際會議,2012. [4] 納瓦畢.Verilog數字系統(tǒng)設計-RTL綜合測試平臺與驗證[M].李廣軍,譯.北京:電子工業(yè)出版社,2007. [5] 汪偉.片上網絡路由節(jié)點的設計及性能分析[D].上海:上海大學,2008. 高健(碩士),主要研究方向為嵌入式系統(tǒng)及應用;崔建明(副教授),主要研究方向為微電子學與物聯(lián)網技術。 Gao Jian,Cui Jianming (College of Information Science and Engineering,Shandong University of Science and Technology,Qingdao 266590,China) Abstract:A node of Network on Chip(NoC) is designed,which is based on data and control separately strategy.A model based on the node is built,which adopts 2DMesh topological structure and XY way-find algorithm.The functional design of the NoC model is completed with Verilog HDL,and the RTL level simulation and testing of the 16-core CPU based on the model is carried out.The test results show that the model can complete all the functions of the NoC and suitable for a CPU which has multiplecores. Key words:data and control separately;2DMesh NoC;FPGA 收稿日期:(責任編輯:薛士然2015-11-09) 中圖分類號:TP368.1 文獻標識碼:A