當前位置:
首頁 > 科技 > 數字IC工程師必須關注的開發潮流

數字IC工程師必須關注的開發潮流

數字IC工程師必須關注的開發潮流


不論在半導體圈內圈外,RISC-V可謂火爆異常,從阿里平頭哥發布高性能RISC-V處理器到ARM頻繁的改變市場策略,RISC-V掀起了一股新的潮流。和這股潮流同時到來的,還有敏捷晶元開發。

「敏捷開發」對於IC設計工程師來說似乎比較陌生,但事實上它已經在軟體開發中佔有重要地位,它源自早期美國和日本對於精益生產的理論和實踐,迭代和增量式的開發方法是敏捷的核心思想,在2001年「敏捷軟體開發宣言」發布。之後,「敏捷」開發方法已經被應用到了各個行業和領域。

事實上,晶元開發周期過長已經是阻礙半導體數字設計快速發展的重要瓶頸。Verilog HDL能實現完整的數字電路開發,但是其代碼密度低,許多團隊為了加速開發還必須配合團隊約定的coding style自行開發非標準的Perl/Python腳本以完成部分代碼編寫的自動化,然而這種方式的可移植性存在問題。之前EDA業界也在嘗試把C代碼直接編譯成Verilog的高級語言綜合(High-Level Synthesis),但該嘗試目前僅獲得了有限的成功。U.C. Berkeley在設計和開發RISC-V標準和Core的過程中,引入了Chisel這樣的開發工具,並且很大程度上反哺和改進了Chisel。那麼,U.C. Berkeley這麼做的原因是什麼?給整個數字IC設計領域會帶來哪些改變呢?

先擺事實再講道理,讓我們先跳過過程看下結果吧。

  • SiFive作為Berkeley孵化出的高科技公司,幾乎所有的研發均使用chisel

  • rocket-chip項目在Github上做為標誌性的chisel項目,包含一個可定製型很強的CPU和匯流排等其他IP

  • rocket-chip項目到2018年6月有接近6000次提交

  • 2017年,SiFive在眾籌網站CrowdSupply上發布了Hifive1,板子上搭載的晶元就是基於rocket-chip並添加其他第三方IP的FE310晶元,工藝為TSMC 180nm,這是一塊Arduino兼容的開發板

  • 2018年,SiFive又在CrowdSupply上發布了其4+1核心的可以運行Linux操作系統的HiFive Unleashed開發板,晶元代號FEU540,工藝為TSMC 28nm,這款SoC晶元依然是基於rocket-chip的。

所以在我看來,為什麼用chisel而不用其他語言自然是因為人家覺得好用,Berkeley可以稱得上是在諸多大學裡非常接地氣的大學了,他們似乎除了提出超前的概念之外,更有能力去讓這些想法落地,去看看人家孵化出多少矽谷項目(Spark,Unix/BSD)就知道了。

客觀地說chisel沒打算取代verilog或者systemverilog,而只是希望在這個基礎之上做一個高層次的構建語言,所以我們實際上可以把Chisel叫做Hardware Construction Language,要明白這和高層次綜合(HLS)並無半點關係。(但是或許也可以在Chisel的基礎上構建HLS,這是另一碼事。)

聊到chisel,很多前端工程師就會想到Java和Scala,這是比較常見的誤區,所以不如先聊聊Scala吧。

Scala:天生適合做"新語言"的"高級玩具"

先想像下你有一盒含有MindStorm套件的樂高積木,用它來做了一輛遙控車。Scala就是這樣的"高級玩具"。

Scala是由洛桑聯邦理工學院的Martin Odersky精心設計的一門多範式、函數式和面向對象的編程語言。我們可以不用太關心前面的定語,我們只要記住,Scala很適合做領域特定語言(DSL),這一定程度上是設計出來的,而非偶然。當然,」函數式「這個屬性必須得提一下,因為函數式編程語言往往和硬體模塊存在一些等價轉換關係。

DSL意味著他可以像橡皮泥或者積木一樣被組合或者塑造成為新的語言,一個經典的案例就是把Scala捏成BASIC語言。(有興趣的讀者可以參見這個Github Repo: https://github.com/fogus/baysick)

數字IC工程師必須關注的開發潮流

看到了么,因為Scala中幾乎所有的元素都是對象,並且都能夠被賦予新的功能,同時配合大量的語法糖,所以這個無聊的小哥用它來實現了一門新的語言,而且只用了300行。(有興趣的讀者可以參考Code: https://git.io/vhMmO)

Chisel要解決什麼問題?

請允許我舉一個非常不恰當的栗子,我們以設計一個CPU為例吧。

你本科熬了幾年圖書館,擠破了頭進入國內某微電子學院做了研究生,老師進來和你說我有個很好的想法,能夠有效的改進指令效率或者多核性能或者功耗。

老師說你做個5級流水線CPU把,還要把cache、匯流排、外設之類也做了(沒緩存搞什麼多核?)。好吧,我承認你很聰明,不出幾個月你把CPU寫的差不多了,然後cache、匯流排、外設這些大頭還遠著呢。又過了幾個月你天天啃《量化研究方法》,然後終於把cache實現了。然後你寫了個GPIO,又掛了個SRAM,好吧,你終於實現了一個小的CPU了。為了降低難度,你用了學術界最愛的MIPS體系結構,用了最土的wishbone匯流排。然後你開始了擼軟體了,因為用了MIPS,你的難度已然降低了很多,而且你不用考慮編譯器的問題了,你又吭哧了好幾個月,寫了個巨土的bootloader,終於把程序載入了。儘管後面可能還要在FPGA上跑起來,要發頂作的同學還要去申請經費流個片,這估計又要好久好久。但到目前為止你終於可以開始評估下你的設計的好壞了。

你跑了一堆benchmark,得出了一些結果,然後你才開始把導師的idea應用到你的設計中。然後,然後,你就碩士畢業了,放心吧,你的這個攤子,你的學弟們會接鍋的。

這裡儘管很多東西不那麼真實,但是不得不說大學教授的很多項目,都是好幾屆學生慢慢做才做下來的,而且做歸做,評估歸評估。做完了哪裡不好還得繼續改進,因為有了架構,離實現到最後變成晶元還遠著呢。更何況,評估一個設計好壞這件事本身或許難度更大。

以上的故事暴露了一個問題,對於改進硬體架構這件事,反饋環實在太長了。

所以扯了半天,我其實就想說一句話,硬體設計太耗時,Verilog寫的蛋疼,需求要是變一點,那些個介面就得跟著變。要是速度上不去了,我要是想換個架構,又要花好久。

的確,SystemVerilog這些問題也都有類似的解決方案,但似乎chisel的代碼密度更高,面向對象和高級語言特性支持的更好。和SystemVerilog提供的一步到位相比,Chisel首先生成通用的Verilog,然後交由後端處理的方式,降低了對EDA工具的要求。還有更重要的一點,它是開源和免費的。

RISC-V和Chisel的小故事

所以當Berkeley的Krste教授和他的學生們決定要去做一些研究的時候(比如下一代數據中心的CPU架構、後摩爾定律時代的CPU架構或是AI加速處理器的時候),他們當然希望反饋環足夠短啊!儘早評估、快速迭代對一個研究者來說太重要了啊。

差不多在同一時間,Berkeley的Joseph Whitworth教授也正好開始了Chisel的研究和開發工作,那他們自然就要決定聯合起來做些有趣的事情。當他們決定做他們的第五代RISC CPU指令集的時候,他們需要設計一個真實的CPU來評估他們設計指令集過程中的每一個選擇。所以他們從頭用Chisel寫了CPU,因為chisel面向對象的一些屬性,他們能用很少的時間就把設計做好並且評估,chisel只要幾十秒就可以生成verilog或者C++model,然後直接扔進模擬器里去跑benchmark。

就這樣他們沒用多少年就做了一個全新的開源指令集RISC-V,這個指令集有多好呢?我說你肯定不信,我引用一段最近David Ditzel採訪里的話。Dave在Sun參與過SPARC ISA的設計,後面創立了全美達(Transmeta)曾經讓Intel也膽戰心驚。他最近成立了一家新的公司做RISC-V的高性能CPU。以下是採訪內容:

RISC-V wasn"t even on the shopping list of alternatives, but the more Esperanto"s engineers looked at it, the more they realized it was more than a toy or just a teaching tool. 「We assumed that RISC-V would probably lose 30% to 40% in compiler efficiency [versus Arm or MIPS or SPARC] because it』s so simple,」 says Ditzel. 「But our compiler guys benchmarked it, and darned if it wasn"t within 1%.」

「RISC-V最開始甚至不在我們可考慮範圍之內,但是我們Esperanto的工程師越深入的了解它,就越發現RISC-V不僅僅是個玩具或者教學用的工具。我們還假定說RISC-V在編譯器效率上相比Arm/MIPS/SPARC會損失30%到40%左右,因為它實在是太簡單了。但我們的編譯器工程師對他進行了評測,發現只損失了可恨的不到1%。」Ditzel如是說

基於這幾個事實我得出的推論就是,當我能夠更快的評估我的硬體時,我就能更快的改進它,也就是能比別人更早的靠近不斷變化中的有效邊界。

這裡其實引出了一個更有意義話題,如果沒有Chisel這樣的工具,RISC-V作為一個標準,能夠如此快的成熟並且達成諸多成就么?(如:短短几年內就被Linux/GNU Toolchain/LLVM/Qemu... 等併入主線)

Chisel的未來

當我們看待一件新事物的時候,千萬不要用他現有的狀態去預測它的未來。你一定得想想,Chisel未來會發展成什麼樣。

Chisel仍然是一門不斷發展和進化中的項目,我能夠看到的一個重要的節點就是chisel開始分離成為兩個項目,chisel和firrtl。簡單講,如果把chisel理解為把chisel代碼轉化為verilog的話,那麼這個步驟被分為了兩步:

1.從chisel到firrtl(一種硬體描述中間表達)

2.從firrtl到verilog

在筆者看來這個思路就是LLVM的思路,熟悉編譯器的朋友或許知道,LLVM設計了一種描述清楚的中間表達llir,編譯器前端可以將任何語言轉化為llir,而所有的中間優化步驟會一級級的處理llir,優化過的內容仍然是llir表達的,最終的llir會被編譯器後端(Backend)轉化為到目標機器彙編代碼。我們可以說幾乎大部分編譯器都是這樣工作的,但是當llir足夠開放並且易於被他使用的時候,就會有更多的人來加入這個陣營,發揮他們各自的專業優勢來實現更好的編譯器PASS。這也是為什麼LLVM本質上是編譯器基礎設施(compiler infrastructure)而非僅僅是編譯器軟體。

所以請允許我用下面的圖不專業的理解一下LLVM所做的事的話。

數字IC工程師必須關注的開發潮流

那麼讓我再次發揮一下想像力,想像一下chisel+firrtl想要做的。

數字IC工程師必須關注的開發潮流

這裡我不想解釋太多,但我會問個問題:如果RISC-V會抹平過去高昂的CPU授權費,那麼昂貴的EDA工具這個山頭誰來抹平呢?

不要小看開源的力量!

請保持開放的心態

Chisel也並不完美,很多早期的用戶都對Chisel有各種各樣的抱怨,但要記住,開源世界的生存法則永遠都不是抱怨,而是將抱怨化為前進的動力。如果你覺得我做的不好,請幫我做的更好,這才是正確的思路。

冷靜的看待chisel的話,我認為這是就是未來或者是未來路上的一站,原因是它能提高生產力,我們也必須抱著同樣包容的心態去看待其他類似的方法和途徑。誰也看不清未來是怎樣的,但是你要明白,當未來到來的時候,要想領先別人,你現在就得去做些什麼對自己未來有利的事情。

事實上,在John Hennessy and David Patterson最新的圖靈獎演講上,同時提到了"DSA"和"Agile Chip Development",而chisel,或許就是開啟這個新黃金時代的先鋒。

所以,當你和我抱怨chisel是scala寫的,我不會scala的時候,看我的大白眼!(第二版,2019年7月修訂)

數字IC工程師必須關注的開發潮流

看完我的大白眼之後,是時候說點正事了,8月3-4日在復旦大學將會舉辦中國Chisel社區大會(Chisel Community Conference,簡稱CCC)。嚴格意義上來說這是第二屆CCC,上一次是去年12月在加州伯克利舉辦。

主辦人員費力把CCC開到中國的目的其實很簡單,儘管Chisel依然在成長,也有很多不足,但我們堅信它所代表的理念是未來的中國IC設計者所需要的,這或許不是一次完美的會議,但我們希望播下種子,等待它慢慢發芽!

如果你已經在使用Chisel並想和大家分享,歡迎提交3分鐘左右的Poster演示!(https://chisel-community-conference.org/)

不論你對Chisel感興趣還是對它持有懷疑態度,都歡迎報名參會,你的關注和使用都是我們期待的,你的疑問和質疑都是我們想了解的。

數字IC工程師必須關注的開發潮流

*免責聲明:本文由作者原創。文章內容系作者個人觀點,半導體行業觀察轉載僅為了傳達一種不同的觀點,不代表半導體行業觀察對該觀點贊同或支持,如果有任何異議,歡迎聯繫半導體行業觀察。

今天是《半導體行業觀察》為您分享的第2020期內容,歡迎關注

半導體行業觀察

半導體第一垂直媒體

實時 專業 原創 深度

回復 投稿,看《如何成為「半導體行業觀察」的一員 》

回復 搜索,還能輕鬆找到其他你感興趣的文章!

數字IC工程師必須關注的開發潮流

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 半導體行業觀察 的精彩文章:

?羅姆所倡導的SiC技術有何妙處?|半導體行業觀察
英飛凌101億美元收購賽普拉斯背後

TAG:半導體行業觀察 |