片上網路NoC為何還沒有得到實際應用?

片上網路,NoC,Network-on-chip,這個術語已經出現快十年了,是用來解決匯流排通信帶來的瓶頸問題,也有了相應的產品晶元,可是為什麼沒有得到應用呢?看paper還是處於理論上的研究比較多,可是理論上的研究感覺也差不多快飽和了

就是很好奇,按照現在的理論研究,感覺NoC確實能夠很好的解決IP核之間的通信問題,但是既然產品出來了,為啥還是沒人用NoC架構的晶元呀?是NoC本身存在缺陷之類的嗎?還是說這就是個為了發paper而挖的科研坑。。。

引用一段百度百科:

片上網路 network-on-chip(NoC)是片上系統 system-on-chip(SoC)的一種新的通信方法。它是多核技術的主要組成部分。NoC方法帶來了一種全新的片上通信方法,顯著優於傳統匯流排式系統(bus)的性能。基於NoC的系統能更好地適應在未來複雜多核SoC設計中使用的全局非同步局部同步的時鐘機制。


首先,NoC已經有商用,只是還沒有大規模應用,有了一些專業的NoC公司,Intel,英偉達,高通等公司也在做相關研究。那為什麼NoC還沒有大規模應用?原因很簡單,就是現在的多核系統核心數還不夠多。

--------------------------------------------------------------------------------------------------------------------------------------------

首先告訴題主,NoC不能算為了發paper而挖的科研坑,NoC本身也沒有特別缺陷,反而他的魅力就是可以不斷增加新的功能,有不斷的research topic。

Intel,英偉達都在做NoC研究,頂會ISSCC每年都有工業界,學術界的NoC展示。看看ISSCC 2014 Intel的報告吧:

再看看英偉達的招聘吧:

再看看專業做NoC的startup:

通過以上這麼多,你應該相信NoC不是忽悠人的坑了吧。

然後我再介紹下為什麼用NoC,優勢在哪。

-----------------------------------------------------------------------------------------------------------------------------------

NoC是用於多核系統的互聯(interconnect),那什麼是互聯呢?

互聯就需要有特定的拓撲結構(topology),那又有哪些互聯topology呢?

我選兩個最典型的topology進行介紹下吧:

Bus是最簡單的互聯,適合small system,當connected nodes太多時,若多個node同時通信,很容易產生contention,bandwidth 太小。所以Bus只適合小系統,一般十個以下的互聯設備。

crossbar也是一種常用互聯機制,每個node能與其他node直接互聯,所以low latency and high throughput.,但 not scalable(可擴展性差), 複雜度是O(N^{2} )。所以Crossbar適合不太大的系統,一般用於幾個到十幾個connected nodes 的系統。

------------------------------------------------------------------------

所以我們需要On-Chip Networks(NoC).

當前多核系統最流行的是Mesh結構。

NoC的誘人之處是可以支持各種擴展功能:

如decouple各模塊;deadlock free(利用routing algorithm, 使用多個virtual channel, circuit switching); flow control(使用credits); QoS(強力推薦TDM NoC,相比priority scheduling能提供hard guarantees); fault tolerance/resilience,容錯機制(利用topology, additional mechanism);congestion management; GALS(全局非同步局部同步,這點在多核系統中很重要,所有router可以是同步,但是每個router所連接的processing element與router非同步,自成一個clock domain,這樣可以動態調整每個模塊的頻率電壓到合適值);等等。

所以只要找對方向,你還是有不少研究可以做的,如下圖:

最後重申一點:NoC是多核系統的最佳互聯機制,不要懷疑。

-----------------------------------------------------------------------------------------------------------------------

補充下NoC領域最經典的教材:Dally W J, Towles B P. Principles and practices of interconnection networks[M]. Elsevier, 2004. Principles and Practices of Interconnection Networks 這本書通俗易懂,覆蓋面很廣,讀了這本書NoC也就懂了

Reference:Onur Mutlu『s slides


瀉藥~

最近學生答辯的什麼事情很多,我就簡短的說兩句,後面再來陸續更新。

首先,片上網路這個詞被提出來不是快10年,而是快20年了。早在1997年Dally等人就在發表文章闡述類似的概念,沒有明確的用Network on Chip這個詞。最早明確提出片上網路這個短語定義的是瑞典皇家理工學院的哥幾位在2000年一篇論文里搞出來的,距今已經15年了。

其次,沒有產品用到NoC是不對的,@Ji QI 中提到的 Arteris和Sonics其實都是片上網路IP提供商,而且兩家公司都有成功案例,而且還不少。比如Sonics的IP就被用到了TI的OMAP3、4、5等產品中。Sonics公司的產品案例還可以參考這個鏈接:選擇Sonics NoC技術的10個理由。另外ARM和Altera實際上也有類似於NoC的IPcore,只不過他們不叫這名。ARM的叫Network Interconnect,鏈接:用於 AMBA AXI 的 CoreLink Network Interconnect。其實這就是很類似於Fat Tree結構的片上網路了。Altera在2012年發布Qsys的時候,就已經宣稱其支持NoC,鏈接:Altera發布最新版Quartus II開發軟體(文字比較多,建議直接搜索關鍵詞NoC)。

那麼為什麼大家會覺得NoC沒有怎麼用起來呢,我覺得主要是這麼幾點:

1、畢竟面向的對象太少了。這個世界上,總是簡答的東西佔大多數。單細胞動物千千萬,老虎、大象可沒有幾隻。NoC說到底是為了解決複雜SoC片上通信這一問題的。但是要到多複雜才算複雜SoC?可以參考以上幾個成功案例。在半導體晶元市場上所佔大頭的還是存儲器之類的標準器件或者ASSP這類基本功能器件。玩大一點的有各種類型的中低端的MCU。這些都和NoC沒有一毛錢的關係。(不過隨著現在提倡設計所謂的「智能」晶元,這類晶元倒是有可能裝一個小的CPU系統進去,做做控制管理什麼的,搞成個SoC樣)。好歹在片上要有10來個Master(不一定要是CPU哦,DMA、協處理器、專用加速器都可以),用用NoC還說得過去。

2、學術界對NoC的宣揚造成的刻板印象與實際被使用到的NoC形態差距較大。這個問題比較大,後續慢慢講。現在只簡單說一下:學術界的人為了發文章,也為了文章被發表以後能有更多的引用率,必須要用比較通用架構/軟體模擬器。而這類東西,大多數是假設NoC是用於互聯多處理器的,通常使用Tile結構和Mesh拓撲。而真正現在被用起來的NoC,是用於互聯相對專用的MPSoC(多處理器片上系統,我覺得這個名字不太好,但是我也沒有想到太好的名稱),用於原來的多個獨立SoC再集成的時候(典型應用就是現在的高端智能機晶元,內部其實有好多子系統原來都是作為獨立SoC晶元),通過合理的互聯結構優化、共享類似於片上存儲器這樣的資源。所以其實學術界經常討論的那種NoC,確實沒有怎麼被用到……

3、NoC的內涵和外延已經發生了很大變化,需要考慮對其重新進行定義。這個問題也很大,後續有機會再詳細談……

分割線————————————————————————————————————

推薦一個小廣告,我的博客:老莫的博客 - 社區

裡面是我多年來寫的一些小結,也有一部分是關於NoC的。

分割線—————————————————————————————————————

最後總結一下:

片上網路是一個非常有局限的領域,其應用範圍也是極為受限的。但是之所以在過去了15-20年內成為「顯學」,我想原因主要有兩點:

1、它沒有明顯的研究門檻,相比於動輒就要做生物實驗的生物/醫療類集成電路,需要有比較強的演算法背景的通信/圖像類集成電路,片上網路的研究門檻實在是太低了,以至於只要是方向沾邊的人都能進來比劃比劃,灌灌水發發文章。

2、其實這也反應了在深亞微米時代,純粹數字集成電路的研究已經做無可做……

本來說只說兩句的,沒想到說了這麼多……我得抓緊時間改卷子登成績去了。


現在的大規模NoC(幾十~幾百個核)的商用產品大部分是Mesh結構吧 ,其他網路拓撲還停留在研究階段,貌似很少見商用。幾十個核以下的NoC性能貌似還沒匯流排結構好。。。

NoC確實提供了新穎的,promising的IP核間通信方式,但代價可能很高,得不償失。

比如比Mesh網路數據傳輸更高效的網路結構,有,但一般複雜度都更高,物理實現更難,很多時候也會導致功耗/面積更大,不值得;

另外大規模NoC的應用,應該是希望充分運用每一個IP核協同進行高效,大規模,高數量級的運算,但充分利用每個核所帶來的頻繁的核間網路通信(network communication),可能使得整體的耗能過高,每個IP核的內存設定也是個問題,內存太小,數據傳輸更頻繁,通信傳輸的耗能更高,內存設大了,面積增加得又太多,很難找到一個很好的平衡點。

路由演算法(routing algorithm)可以改善網路通信的耗能表現,任務分配演算法(task mapping algorithm)可以更好地分配NoC每個IP核資源,更充分利用網路資源,但他們是NP-hard問題,必須針對特定結構以及特定性能要求進行定製設計,基本沒法得到一個通用的演算法可以對各種情況各種結構都有良好的表現,這種需要定製的特點使得設計出滿意的NoC變得很困難。

說白了,現階段企業設計好用的商業大規模NoC代價大,成本高,得不償失。不但要根據不同需求設計不同的網路結構/路由方式/IP核結構等等,還要對這些設計prototyping/測試性能什麼的,成本又高,設計周期又長,得到的成品適用性還不廣。

據我所知,現在的NoC商用產品製造商,比如Arteris和Sonics,儘管商用有段時間了,也還是生產製造針對特定情況和特定情境下使用的NoC,距離取代現有匯流排結構還有很長一段距離吧。

一家之言,不當之處請指正,歡迎討論。


實驗室有同學做noc的 簡單總結為:現代noc性能太超前,理論吞吐量巨大,在平時運行程序的時候基本無壓力,且瓶頸基本都不在noc上,所以很多架構能用簡單的就用簡單的結構,就跟汽車為啥不用i7一樣。

哎呀,話說出來有點後悔。估計要挨揍...

順帶補充一下,好多時候測noc throughput現有的benchmark都沒啥用,測不出區別,就是因為沒有Push noc到瓶頸,所以需要弄個灌包器...你想想多蛋疼....


NoC在複雜處理器裡面已經用了好多年,代表intel xeon,ibm power8,oracle sparc,cavium thunderx, amd seattle,只不過功能簡單,核數少,不需要複雜NoC。16核以下用ring,16-100核用2d mesh,夠了。現在問題都在L3和ddr memory controller上,interconnect不是瓶頸


去百度去看了看詞條,再回來重答。

這個NoC是on chip interconnection 的一種方式,借用computer network的概念,看到routing logic,雖然沒再去看鏈接中的資料,延遲怕是很高了。

理論上很好的東西、現實中,如果節點數目大於16(或者32)以後,才會用比ring(雙ring)更複雜的技術吧。

有些東西,簡單但是高效,能用則用。

例如ARM的CCN(cache coherent network),目前公布出來的還都是Ring結構。

Mesh也能撐住好長一段時間。

真正的Networking,核數怕要上200,300才能用得上。


能解決的問題很多,全局時鐘帶來的延時不能忍,匯流排中斷效率好低,但是在實現方面有很大的問題。首先沒有成熟的工藝能夠實現現有的設計,目前來說預想的工藝是tsv,然並卵不成熟成品率低。還有問題就是現在多處理器的多並沒有很多,採用noc性能提高並沒有高多少,研發成本與效益提高來說並不不划算。

未來肯定是有的,總有多核多到忍不了的時候,在那之前大概水平一直都是實驗室水準吧


贊同大頭的觀點,arteris sonics在複雜soc中都快普及了。


已經有應用了


是你沒關注過吧。

tilera的眾核不是基於NOC的嗎?

以前聽說百度在用,現在不知道是什麼情況。

team好像是成都那邊的。

基於MIPS,但是不是MIPS。


實現複雜,面積大。


沒有應用?我會告訴你xx牌子的soc都用了幾年嗎,不過基本上只是低速外設IP而已


推薦閱讀:

集成電路的工作原理是什麼?
人類歷史上第一個集成電路使用什麼儀器製作的?
集成電路晶元電極如何引出來?
碳納米管能否拯救摩爾定律?
晶元、半導體、晶體管之間的關係?

TAG:現場可編輯邏輯門陣列FPGA | 微電子 | 晶元集成電路 | SoC |