隨著現今積體電路技術及製程的演進,一個系統晶片(SoC)已足夠容納多個矽智財(IP)於同一晶片上同時運作。並且,一個晶片的效能瓶頸也漸漸地從每一個處理單元(Processing Element, PE)本身之運算時間,轉移至系統晶片上不同處理單元間資料傳輸的效率。也因此,傳統的晶片上匯流排(On-Chip Bus)架構無論在功率消耗、傳輸時間及系統的擴充性等方面都難以跟上目前多核系統晶片(MP-SoC)的腳步。
為了達到晶片內部各模組溝通的需求,一種利用網路封包交換技術實現的網路晶片(Network-on-Chip, NoC)傳輸架構近年來也就逐漸地受到學界及各研究單位的重視。
市場因勢利導 網路晶片突起
系統晶片上的電晶體數量隨著製程進步而增加的同時,也相對帶來更複雜的系統整合挑戰。傳統的晶片上匯流排架構,雖然可以達到現今大部分系統晶片上處理單元間資料傳輸的目的,但隨著設計規模的上升,晶片內的匯流排架構可能因為本身設計上無法同時應付多個處理單元的要求而產生阻塞的現象,亦即沒有被配置到傳輸資源的處理單元只能繼續等待。
為了解決這個問題,現今的晶片上匯流排設計通常須要針對不同的系統應用,依照工程師對於系統應用的了解,而以人工的方式對晶片上匯流排做最佳化的設計,例如增加多階層的匯流排等方法,但是這些方法會大幅度提高系統晶片設計的複雜度。而且這些傳統的單晶片設計通常只著重在計算能力的增進,而忽略晶片上之通訊架構的改進。
為排除上述的問題,網路晶片是一種將晶片上之各個處理單元,利用類似區域網路概念所設計的路由器(Router)節點連結起來的一種晶片內部之網路系統。相較於傳統的晶片上匯流排架構,這種網路晶片架構可更容易處理多對多運算架構的資料傳輸,而其易伸縮(Scalable)的傳輸架構和介面設計,也較不會因為製程的進步而須時常修改,進而縮短產品從設計到上市的時程。
在網路晶片上,資料的傳輸是以封包(Packet)的概念透過多個路由器自我決定資料的傳輸路徑。而網狀拓撲(Mesh Topology)為目前網路晶片中最廣受採用的結構。使用這種容易擴充並簡單可靠的架構時,網路晶片上的節點間通常存在多個路徑通道,因而增加資料傳輸路徑的彈性及可減少資料傳輸競爭晶片上匯流排的嚴重性。另外,由於網路晶片讓各個路由器擁有獨立的判斷能力,晶片的設計也更能達到模組化,並達到重複利用的目的。
路由器決定資料傳輸路徑
網路晶片的設計流程以及會遇到的問題,從軟體層面到硬體層面來看,包含處理單元的映射配置、應用程式任務的排程、傳輸資料路徑的選擇等等。而本文將著重於晶片上路由器的設計,及如何在有限的硬體資源下提高可利用的頻寬,並達到良好的服務品質要求。
圖1是一個最典型的以網狀架構為基礎的網路晶片架構設計,所有的處理單元,一對一地經由路由器以封包交換(Packet Switch)的方式相連。當有一筆資料要由一個起點處理單元傳送到終點處理單元時,則須要一步一步地經由傳送的路由器決定資料傳輸的方向。
|
圖1 網狀架構網路晶片及晶片上的路由器 |
如圖2所示,在路由器內,資料的傳輸經由虛擬通道流量控制(Virtual Channel Flow Control)的方式傳輸,可以有效地避免因為蟲洞流量控制(Wormhole Flow Control)可能造成的前方資料阻塞(Head-of-line Blocking)問題。
|
圖2 虛擬通道流量控制示意圖 |
基本的路由器設計可參考圖3示意圖。當資料進入到路由器後,首先會存在輸入緩衝器內,接著經由路徑計算(Routing Computation)模組依當時晶片上資料傳輸的情況決定路由方向,並交由虛擬通道分配(Virtual Channel Allocation)模組選擇傳輸至下一個路由器的虛擬通道,最後由開關分配(Switch Allocation)模組決定傳輸的實體通道而完成一個節點的資料傳輸。
|
圖3 虛擬通道流量控制路由器示意圖 |
動態調整傳輸方向
以網狀架構為基礎的網路晶片的設計流程,正如同都市規畫會遇到的問題一般,如何讓資料流在網路晶片上流通順暢是一個很重要的問題,決定資料流通的過程,就像是車子行進時總是希望能避開所有塞車的路段一樣。
如果仔細觀察每天開車遇到塞車的情況,很容易就能發現,上班時間大部分的人進城工作,所以進城方向的道路總是特別壅塞,而下班時間大部分的車流就又轉移至出城方向的道路上。
如果上下班的方向能跟大部分的人相反,自然可以免受塞車之苦,然而事與願違,所以在許多容易塞車的路段都可以發現雙向車道的設計,也就是在塞車的時候利用臨時的交通號誌來改變原本單向車道的行進方向,如此一來變換方向後的車道即可用來疏解壅塞的車流狀況。
同樣的道理一樣可以應用到網路晶片的架構上。任兩個相鄰的路由器之間相連的兩條實體通道,可以看成是交通上的兩條單向車道,路由器則好比十字路口。首先,為了解網路晶片是不是也有著一樣的問題,針對網路晶片上的頻寬使用進行模擬分析(圖4)。
從圖4中可以看出,在三種不同的傳輸資料下,每個單位時間真正使用到的頻寬頂多只有40%左右,這個數值相對於整體頻寬很低。於是,再仔細觀察這個行為的原因,可以發現在兩個相鄰的路由器正在傳輸資料的前提下,其中一個實體通道正在處理,而另一個實體通道是閒置的比例可以高達80%(圖5)。倘若此時可以如交通控管一樣臨時調撥閒置的車道讓擁擠的車流來使用(圖6),約有15%的機會可達到疏解交通的作用。
|
圖4 網路晶片頻寬使用率分析一 |
|
圖5 網路晶片頻寬使用率分析二 |
|
圖6 網路晶片頻寬使用率分析三 |
BiNoC效能表現突出
具雙向傳輸通道之網路晶片(Bidirectional Network-on-Chip, BiNoC)為了讓網路晶片達到類似調撥車道的作用,如圖7-(甲)所示,在原本的路由器設計上多加一塊雙向通道控制模組。此控制模組主要的功能在於接受及發出資料輸入/輸出的要求,並動態地依實際資料傳輸情況調撥可使用的實體通道供傳輸使用。
|
圖7 可動態調整傳輸方向之網路晶片路由器 |
此外,為了讓此雙向通道的設計不致於產生資料傳輸時間無窮等待(Starvation Problem)的問題,任兩個相鄰的路由器之間的兩組雙向通道,如圖7-(乙)所示,將分別由兩對事先設計好高低優先權相對稱的有限狀態控制器來決定通道的使用權。
為了方便比較BiNoC與傳統網路晶片(Typical-NoC, T-NoC)效能上的區別,圖8比較兩個架構同樣使用四個虛擬通道,而每個虛擬通道深度為八個暫存空間大小之下,以圖4所示的regional測試資料所做的摸擬情形。
|
圖8 可動態調整傳輸方向之網路晶片路由器效能分析 |
由圖8-(甲)可以看出,在頻寬使用率上,BiNoC確實達到較高的使用率,並且在同樣的資料輸入率(Flit Injection Rate)情況下,由圖8-(乙)的分析也看出BiNoC較傳統的網路晶片有更好的傳輸延遲(Latency)。而更明顯的是,由圖8-(丙)可以看出,當改變虛擬通道深度時,BiNoC也比傳統的網路晶片能更有效地利用虛擬通道資源而在較小的暫存空間下達到較好的傳輸延遲。
BiNoC服務質量均佳
由於目前大部分的應用都須要考慮服務品質(Quality-of-Service, QoS)的需求,亦即不同的資料型態在網路晶片上傳輸時,若發生資源的競爭可能會有不同傳輸優先權。所以,同樣地在網路晶片的設計上,也必須考量到如何能夠在有限的硬體上達到不同交通資料的服務品質。
為了簡化這個問題,可以簡單地把交通資料分為兩個大的類型,也就是須要保證服務品質的交通資料(Guaranteed Service, GS),以及只須達到傳輸要求而較不注重傳輸延遲的交通資料(Best Effort, BE)。
|
圖9 網路晶片上配合服務品質的設計方法 |
為了在網路晶片上提供不同層級的服務給這兩種不同的交通資料型態,有兩種主要的實現方法。第一種是以事先在資料傳輸前先建立好傳輸路徑的方式來達到服務品質的要求(Connection-oriented Mechanism),如圖9-(甲)所示,須要保證服務品質的資料流可以避開原本須要的競爭,由事先在每一個路由器節點上保留的虛擬通道將資料做直接的傳輸。此種方法可以100%的保證拿到最多的資源,但相對地在資料傳輸前必須先對各個節點做通道保留的動作,卻是相當浪費硬體或軟體時間。
為了減少電路實作上的複雜度,第二種方法如圖9-(乙)所示,則是對所有的交通資料類型預先做好定義,接著讓這些不同服務品質需求的交通資料流,實際地在電路上的各個節點做競爭(Connection-less Mechanism)。此種方法相較於第一種方法來說雖然不能保證達到一定的服務品質要求,可是卻能有效提高資源使用的效率,並且讓網路晶片的設計擴充性更好。所以,大部分在網路晶片上考量服務品質的研究,還是以此種方法為發展的基礎。
然而,配合傳統網路晶片的設計,交通資料在網路上的動態競爭都還是只能在路由器的內部處理由不同方向進入此路由器的交通資料流間的競爭,因此即使帶進相鄰的路由器的資訊,所有的競爭還是只能局部地在路由器內部實現。
從圖10-(甲)可以發現,在傳統網路晶片上的競爭,當有超過一個以上的GS交通資料流須要行進同一個方向傳輸時,即使另一個方向的單向通道沒有人使用,或者只有BE交通資料流在使用,也必須捨棄一個GS交通資料流。
|
圖10 BiNoC服務品質的設計方法 |
如果將服務品質的這個概念應用到BiNoC的雙向通道上,則如圖10-(乙)所示,將能夠輕易地透過路由器間的競爭讓兩個GS的交通資料流,同時通過一個路由器到達另一個路由器,而有效地達到更高的服務品質需求。
由圖11的分析結果可以看出,在不同的GS交通資料流比例和輸入率下,無論是GS或BE交通資料流的傳輸延遲表現,BiNoC都比傳統的單向網路晶片來得好。
|
圖11 BiNoC服務品質的分析 |
網路晶片發展方興未艾
自2000年初起,以網路晶片為主題的研究報告在各學術單位和研究中心逐漸受到重視。大部分的研究結果都顯示,以網路晶片為基礎的設計方法,由於其具有較傳統晶片上匯流排架構更高的可伸縮、高效能及低功耗等特性,網路晶片已逐漸成為下一世代晶片設計的首選。
網路晶片這種以類似網路協議(OSI)堆疊設計為基礎的設計概念,也分別為軟硬體工程師提供更便利的設計流程,使得矽智財的配置更加容易。然而,網路晶片的研究仍有許多待解決的問題,本文提出以BiNoC之雙向通道為骨架的網路晶片架構,有效地提高一般網路晶片的處理效能和服務品質。
(本文作者籃英誠、蔡文宗為台大電子所博士生;陳少傑為台大電機系/電子所教授)