服務(wù)熱線(xiàn)
0755-83044319
發(fā)布時(shí)間:2025-07-10作者來(lái)源:薩科微瀏覽:674
作者 Simon Sabato為Cognichip公司聯(lián)合創(chuàng)始人兼首席架構(gòu)師 | 前谷歌員工 | 前英特爾員工 | 前思科員工 | 前Cadence員工 | 方法論、架構(gòu)、設(shè)計(jì)。
以下是他剛剛發(fā)表的一篇關(guān)于AI的文章:
一圖勝千言……真的是這樣嗎?
我在20世紀(jì)90年代于加州大學(xué)伯克利分校學(xué)習(xí)芯片設(shè)計(jì),那是一個(gè)芯片通過(guò)“門(mén)級(jí)設(shè)計(jì)”(與門(mén)、或門(mén)等)組合在一起的時(shí)代。我是一個(gè)愛(ài)好者和書(shū)呆子,從我記事起就開(kāi)始擺弄電池和燈泡。在上大學(xué)的至少六年前,我就已經(jīng)開(kāi)始使用隨處可見(jiàn)的“74xx”芯片構(gòu)建電子設(shè)計(jì),這些芯片在任何一家信譽(yù)良好的電子商店都能買(mǎi)到。當(dāng)然,在大學(xué)里,事情變得更加嚴(yán)謹(jǐn)。我們學(xué)習(xí)如何將門(mén)電路組合在一起,以創(chuàng)建任意功能(如二進(jìn)制加法器、交通信號(hào)燈控制器等),使用臭名昭著的“卡諾圖”。然后,我們學(xué)習(xí)如何優(yōu)化這些設(shè)計(jì),使用[敏感詞]批邏輯優(yōu)化算法(比如伯克利分校自己的“Espresso”)。
想象一個(gè)電路,當(dāng)按下“開(kāi)始”按鈕且我們沒(méi)有按下“停止”按鈕,并且處于“就緒”和“待命”狀態(tài)時(shí),會(huì)產(chǎn)生一個(gè)“開(kāi)始”信號(hào)。多年來(lái),這種電路的門(mén)級(jí)設(shè)計(jì)是通過(guò)類(lèi)似這樣的圖形用戶(hù)界面以原理圖的形式輸入的:
它看起來(lái)足夠簡(jiǎn)單,但在得出上述設(shè)計(jì)之前,其實(shí)已經(jīng)做出了一些選擇。我們可以將兩個(gè)與門(mén)合并以節(jié)省一些面積。我們也可以將“停止”信號(hào)進(jìn)一步推到下游,作為靠近輸出端的“最終檢查”。然后,在我們決定采用上述電路設(shè)計(jì)之后,我們還需要從每個(gè)門(mén)的幾十種功耗/性能/面積變化中進(jìn)行選擇。
為了做出所有這些選擇,“時(shí)序約束”被用來(lái)規(guī)定諸如“開(kāi)始”導(dǎo)致“運(yùn)行”之間允許的時(shí)間、處理“停止”信號(hào)的[敏感詞]時(shí)間,以及如果“停止”和“開(kāi)始”信號(hào)幾乎同時(shí)接收時(shí)的預(yù)期行為等規(guī)則。
硬件描述語(yǔ)言(HDL)自20世紀(jì)80年代中期以來(lái)就已經(jīng)存在,并且最近被納入了伯克利分校的課程體系。HDL是一種類(lèi)似于普通編程語(yǔ)言(如C或Python)的書(shū)面語(yǔ)言,但它增加了邏輯設(shè)計(jì)所需的額外概念——并行計(jì)算、嚴(yán)格的事件時(shí)序以及對(duì)任意數(shù)據(jù)類(lèi)型的支持。在我的[敏感詞]門(mén)計(jì)算機(jī)體系結(jié)構(gòu)課程中,我們使用HDL來(lái)捕捉我們的門(mén)級(jí)設(shè)計(jì)——幾個(gè)門(mén)組合起來(lái)實(shí)現(xiàn)兩位數(shù)相加的電路被稱(chēng)為“全加器”,然后32個(gè)這樣的全加器就構(gòu)成了一個(gè)“32位加法器”,以此類(lèi)推。
在選擇了每個(gè)門(mén)的確切變體后,用硬件描述語(yǔ)言(HDL)編寫(xiě)的上述設(shè)計(jì)可能看起來(lái)像這樣:
module launch_control ( input armed, ready, stop, go, output launch ); wire systems_go, not_stopped; AND2_4X gate1 ( .IN1(armed), .IN1(ready), .OUT(systems_go) ); NOT_2X gate2 ( .IN(stop), .OUT(not_stopped) ); AND3_16X gate3 (.IN1(systems_go), .IN2(not_stopped), .IN3(go), .OUT(launch) );endmodule
用“代碼”來(lái)表達(dá)設(shè)計(jì)可以節(jié)省大量原本會(huì)花在圖形用戶(hù)界面中繪制導(dǎo)線(xiàn)上的時(shí)間(相信我,我兩種方式都試過(guò)?。?。如果你覺(jué)得“我覺(jué)得看圖更容易理解”,你并沒(méi)有錯(cuò)!只是代碼更容易編寫(xiě),而且維護(hù)起來(lái)更是難以估量地便捷。硬件描述語(yǔ)言(HDL)利用了為軟件代碼編寫(xiě)的全部基礎(chǔ)設(shè)施——編輯器、版本控制系統(tǒng)、補(bǔ)丁格式等。在那門(mén)課程中,每個(gè)小型學(xué)生團(tuán)隊(duì)都構(gòu)建了一個(gè)32位RISC CPU內(nèi)核:一個(gè)具有算術(shù)邏輯單元、寄存器文件和緩存的全流水線(xiàn)設(shè)計(jì)。
在20世紀(jì)90年代初,硬件描述語(yǔ)言(HDL)開(kāi)始被用于測(cè)試設(shè)計(jì)。HDL具備像C這樣的軟件語(yǔ)言的所有功能:讀寫(xiě)文件、生成隨機(jī)輸入、計(jì)算預(yù)期輸出等。除此之外,它們還增加了用于建模高度并行系統(tǒng)(如上述電路放大數(shù)百萬(wàn)倍)所需的硬件特定功能。
HDL還被用于在更高層次上對(duì)硬件設(shè)計(jì)進(jìn)行原型開(kāi)發(fā)。大多數(shù)硬件模塊執(zhí)行的算法相對(duì)簡(jiǎn)單,只是執(zhí)行速度非??臁Mǔ:苋菀自诟邔哟紊暇帉?xiě)所需的函數(shù)。我們的火箭發(fā)射控制器可以被原型化為:
module launch_control ( input armed, ready, stop, go, output launch ); assign launch = (go && !stop && armed && ready);endmodule
這相當(dāng)簡(jiǎn)單!它沒(méi)有捕捉到具體的門(mén)電路組織和門(mén)類(lèi)型的選擇,但它確實(shí)代表了最終版本將要做的事情。這在編寫(xiě)測(cè)試用例、用原型化的部件構(gòu)建并測(cè)試更大型系統(tǒng)等方面非常有用。與此同時(shí),設(shè)計(jì)師會(huì)根據(jù)這種高層次的描述以及“時(shí)序約束”開(kāi)始進(jìn)行門(mén)級(jí)設(shè)計(jì)。通常,兩種版本都會(huì)被保留下來(lái)——高層次的代碼會(huì)運(yùn)行得更快、更容易閱讀,也更容易調(diào)試……而門(mén)級(jí)設(shè)計(jì)才是你實(shí)際要構(gòu)建的物理對(duì)象。
1994年:機(jī)器在芯片設(shè)計(jì)中擊敗人類(lèi)?
我清楚地記得我[敏感詞]次聽(tīng)到“綜合”這個(gè)詞的情景。在那門(mén)計(jì)算機(jī)體系結(jié)構(gòu)課程快結(jié)束時(shí),我和一位助教出去喝了一杯。我們討論了用代碼構(gòu)建設(shè)計(jì)比用原理圖要方便得多,以及從“高級(jí)”代碼開(kāi)始,然后在看到整個(gè)CPU工作之后再將其轉(zhuǎn)換為門(mén)電路是多么酷的一件事。他隨口提到:“你知道嗎,現(xiàn)在有一家公司開(kāi)發(fā)了一種工具,可以自動(dòng)將高級(jí)代碼轉(zhuǎn)換為門(mén)電路……他們叫Synopsys,他們把這叫作‘綜合’……它有個(gè)很無(wú)聊的名字,叫‘設(shè)計(jì)編譯器’……”
我的[敏感詞]反應(yīng)是震驚,緊接著意識(shí)到這其實(shí)很有道理(“我怎么沒(méi)想到呢?這其實(shí)就是一個(gè)‘編譯器’……”)。下一個(gè)想法是,機(jī)器在將“高級(jí)”描述轉(zhuǎn)換為特定情境下的完美解決方案方面超越人類(lèi),肯定還需要很長(zhǎng)時(shí)間。
在當(dāng)時(shí),大約是1994年,人們?nèi)匀恢饕渴止ぞ帉?xiě)大多數(shù)對(duì)性能要求極高的軟件代碼,盡管高級(jí)語(yǔ)言和編譯器已經(jīng)存在了幾十年。我以為芯片設(shè)計(jì)是最“性能敏感”的領(lǐng)域,所以也許我們會(huì)永遠(yuǎn)在門(mén)級(jí)設(shè)計(jì)芯片!一般來(lái)說(shuō),硬件,尤其是芯片,建造成本極高——難道有人會(huì)為了節(jié)省一些工資而最終得到一個(gè)劣質(zhì)產(chǎn)品嗎?
在酒吧的那次談話(huà)之后不久,我開(kāi)始了我在3Com公司的[敏感詞]份全職工作,負(fù)責(zé)構(gòu)建一款LAN+調(diào)制解調(diào)器接口卡。這項(xiàng)工作涉及設(shè)計(jì)一塊密布芯片的印刷電路板(PCB),以及設(shè)計(jì)一個(gè)現(xiàn)場(chǎng)可編程門(mén)陣列(“FPGA”)中的邏輯電路,以協(xié)調(diào)我們卡片的兩項(xiàng)功能。FPGA本質(zhì)上是一種可編程芯片。它比“真正的”芯片更昂貴、速度更慢,但它是一種現(xiàn)成的部件,可以直接購(gòu)買(mǎi),而不需要花費(fèi)大量的時(shí)間和金錢(qián)去制造定制芯片。在許多情況下,F(xiàn)PGA正是你所需要的。在3Com,我們的情況就是這樣——我們不需要太多的門(mén)電路,也不需要它們運(yùn)行得很快。我們只需要一個(gè)交通警察,來(lái)引導(dǎo)流量通過(guò)一個(gè)三岔路口。
我知道我可以使用FPGA設(shè)計(jì)工具在圖形用戶(hù)界面中連接門(mén)電路,從而在門(mén)級(jí)完成這個(gè)設(shè)計(jì)。另一位設(shè)計(jì)師被分配來(lái)指導(dǎo)我。他來(lái)自走廊盡頭的ASIC團(tuán)隊(duì),他們最近剛剛完成了Etherlink III中的芯片設(shè)計(jì),那是一款開(kāi)始瘋狂暢銷(xiāo)的卡片……“互聯(lián)網(wǎng)泡沫”已經(jīng)開(kāi)始了。
那個(gè)產(chǎn)品中的ASIC是使用Synopsys設(shè)計(jì)編譯器構(gòu)建的,這個(gè)名字讓我想起了什么。我的導(dǎo)師問(wèn)我是否已經(jīng)學(xué)過(guò)Verilog——“學(xué)?,F(xiàn)在都在教這個(gè),這是一種用代碼而不是繪制門(mén)電路來(lái)設(shè)計(jì)硬件的方法”——我回答說(shuō)我用這種方法構(gòu)建過(guò)一個(gè)32位CPU?!疤昧?,”他回答道,接著說(shuō)“那你就不需要培訓(xùn)了?!闭f(shuō)完,他拿走了我最初精心繪制的幾張?jiān)韴D,開(kāi)始用Verilog將它們“重寫(xiě)”。代碼看起來(lái)完全陌生,但我太不好意思承認(rèn)這一點(diǎn)了(又過(guò)了一年我才意識(shí)到,伯克利分校教的是VHDL,一種不同的語(yǔ)言)。
我仍然沒(méi)有被說(shuō)服這個(gè)工具能設(shè)計(jì)得比我好,而且我不喜歡這種陌生的語(yǔ)言。我非常想放棄使用硬件描述語(yǔ)言(HDL)——我可以直接畫(huà)出門(mén)電路,然后就完成了。我的導(dǎo)師一直勸我不要這樣做;我記得有一次在掙扎的時(shí)候,我建議干脆放棄整個(gè)東西,花整個(gè)周末用原理圖重新繪制設(shè)計(jì),我還記得他的話(huà)(“我不會(huì)希望任何人那樣做。我寧愿去打籃球”)。
隨著產(chǎn)品的演變,F(xiàn)PGA變得越來(lái)越復(fù)雜,空間也越來(lái)越緊張。高效設(shè)計(jì)變得越來(lái)越重要——也許我們對(duì)緊湊、高效設(shè)計(jì)的需求能讓我在這場(chǎng)與這個(gè)可惡的工具的較量中獲勝?!
我決定手工構(gòu)建一個(gè)關(guān)鍵的狀態(tài)機(jī)。它只有幾十個(gè)門(mén)電路,但它必須運(yùn)行得非???,以便在罕見(jiàn)情況下捕捉到一個(gè)短暫的事件。它必須被放置在FPGA的一個(gè)小的、未被使用的角落里。我精心設(shè)計(jì)了我的電路。我的導(dǎo)師總是喜歡接受挑戰(zhàn),他很快就回來(lái)展示了一個(gè)更好的版本。我沒(méi)有氣餒,進(jìn)一步完善了我的設(shè)計(jì),直到我確信不可能做得更好為止。然而,這個(gè)工具又找到了一個(gè)更好的解決方案。我開(kāi)始懷疑綜合生成的版本可能無(wú)法正常工作,因?yàn)樗闪艘恍╇y以辨認(rèn)的門(mén)電路。我浪費(fèi)了寶貴的時(shí)間去檢查它,希望它犯了錯(cuò)誤,結(jié)果卻發(fā)現(xiàn)它只是非常巧妙。盡管我對(duì)此表示欽佩,但另一個(gè)改進(jìn)版本又出現(xiàn)了。我放棄了檢查它的成果,轉(zhuǎn)而繼續(xù)優(yōu)化自己的設(shè)計(jì)。然而,又一個(gè)新版本出現(xiàn)了。
我放棄了,得出結(jié)論:“這玩意兒遲早會(huì)搶走我們的所有工作……”
這種想法,夾雜著一絲羞愧,在我的腦海中揮之不去。就好像我的同事有一根魔法棒,可以對(duì)設(shè)計(jì)編譯器說(shuō):“專(zhuān)注于讓這個(gè)設(shè)計(jì)更快……現(xiàn)在讓它更小……”,而它就像施展魔法一樣,飛速地篩選出數(shù)千種可能的解決方案。這感覺(jué)就像是他并不是在設(shè)計(jì),而是在告訴它該設(shè)計(jì)什么。我怎么可能與之競(jìng)爭(zhēng)呢??最終,我逐漸冷靜了下來(lái)。畢竟,當(dāng)一個(gè)袖珍計(jì)算器比我乘法算得更快時(shí),我也沒(méi)有自責(zé)過(guò),不是嗎?你知道他們是怎么說(shuō)的——如果你無(wú)法戰(zhàn)勝他們:那就全力以赴,轉(zhuǎn)到ASIC團(tuán)隊(duì),成為一名全職的Verilog編碼員。
有趣的是,Synopsys使用Verilog作為其工具的輸入語(yǔ)言。Verilog并不是為編譯成門(mén)電路而設(shè)計(jì)的,它可以表達(dá)許多綜合工具無(wú)法轉(zhuǎn)換成門(mén)電路的內(nèi)容。我們最早學(xué)到的一件事就是語(yǔ)言的“可綜合子集”,這是一個(gè)不斷變化的邊界,并且包含一個(gè)相當(dāng)大的灰色地帶(“它也許能做到,但你并不希望它做到”)。Verilog的表達(dá)能力意味著Synopsys(以及后來(lái)的其他公司)可以逐步擴(kuò)展這個(gè)“可綜合子集”。Verilog逐漸演變?yōu)楦鼜?qiáng)大的SystemVerilog,就像C語(yǔ)言演變?yōu)镃++一樣。
總體而言,我認(rèn)為綜合技術(shù)將生產(chǎn)力提高了大約1000%。讓我們來(lái)思考一下,在這段時(shí)間里芯片設(shè)計(jì)發(fā)生了多大的變化,以及事情變得多么復(fù)雜。
現(xiàn)代芯片可不是鬧著玩的
芯片設(shè)計(jì)團(tuán)隊(duì)過(guò)去可能只有十幾個(gè)人,現(xiàn)在通常有大約一百人(范圍很廣——許多仍然由十幾個(gè)人的核心團(tuán)隊(duì)完成,而有些則需要數(shù)百人)。過(guò)去,制造一塊芯片的成本是5萬(wàn)美元,現(xiàn)在這個(gè)數(shù)字大約是2000萬(wàn)美元。我設(shè)計(jì)的[敏感詞]塊FPGA有3000個(gè)門(mén),我的[敏感詞]塊ASIC有5萬(wàn)個(gè)門(mén)——相比之下,現(xiàn)代芯片的門(mén)電路數(shù)量達(dá)到了數(shù)十億。
我們應(yīng)該把芯片視為一臺(tái)機(jī)器。這臺(tái)現(xiàn)代機(jī)器的齒輪被稱(chēng)為“門(mén)”:
2輸入端與非門(mén)
上圖是一個(gè)簡(jiǎn)單的門(mén),包含四個(gè)晶體管。在紙上,導(dǎo)線(xiàn)看起來(lái)大約有5毫米寬,不同顏色代表不同的“層”——現(xiàn)代芯片大約有15層這樣的結(jié)構(gòu)。
當(dāng)我們說(shuō)一款新手機(jī)配備了“5納米芯片”時(shí),我們說(shuō)的就是這些導(dǎo)線(xiàn)。這意味著我們的圖是按照1,000,000:1的比例繪制的(5毫米:5納米)。一塊典型的CPU芯片大約是12毫米×12毫米,按照這個(gè)比例繪制的話(huà),它將是一個(gè)12公里×12公里的門(mén)電路陣列。
為了感受這些芯片處理數(shù)字的速度有多快,請(qǐng)考慮以下情況。在2025年,我們的手機(jī)通常有6個(gè)CPU核心,每個(gè)核心在2.5GHz的時(shí)鐘頻率下每秒執(zhí)行約4條指令,這意味著它們每納秒可以處理60條指令。納秒是十億分之一秒,比光子以光速?gòu)氖謾C(jī)傳播到我們臉部所需的時(shí)間還要短……芯片是一臺(tái)超高速的機(jī)器。
如今回看芯片設(shè)計(jì),很難想象如果沒(méi)有邏輯綜合這一革命性技術(shù),它們是如何被設(shè)計(jì)出來(lái)的。老實(shí)說(shuō),綜合確實(shí)取代了大部分涉及原理圖級(jí)設(shè)計(jì)的工作:它不僅做得更好、更快,還讓我們能夠?qū)W⒂谠O(shè)計(jì)更大、功能更豐富的芯片。作為回報(bào),它為我們帶來(lái)了如今蓬勃發(fā)展的半導(dǎo)體行業(yè),該行業(yè)目前雇傭了33.8萬(wàn)名員工,并且支持了300個(gè)下游經(jīng)濟(jì)領(lǐng)域,為美國(guó)提供了超過(guò)2600萬(wàn)個(gè)工作崗位[^SIA^]。
急需新的“綜合”時(shí)刻
盡管取得了令人印象深刻的增長(zhǎng)和創(chuàng)新,半導(dǎo)體行業(yè)正面臨另一個(gè)轉(zhuǎn)折點(diǎn)。設(shè)計(jì)成本過(guò)高,且仍在上升。開(kāi)發(fā)周期過(guò)長(zhǎng),且仍在增加。與此同時(shí),就業(yè)市場(chǎng)數(shù)據(jù)預(yù)測(cè),進(jìn)入這一行業(yè)的工程師數(shù)量將出現(xiàn)巨大缺口。令人意外的是,芯片設(shè)計(jì)師的短缺問(wèn)題比人工智能數(shù)據(jù)科學(xué)家更為令人擔(dān)憂(yōu)。
人們已經(jīng)多次嘗試尋找芯片設(shè)計(jì)生產(chǎn)力的下一個(gè)飛躍:
寄存器傳輸級(jí)(RTL)設(shè)計(jì)主要由SystemVerilog主導(dǎo),但也有VHDL以及一些較小的“現(xiàn)代”語(yǔ)言,它們從根本上都處于“同一水平”——也就是說(shuō),編寫(xiě)一個(gè)程序在它們之間進(jìn)行轉(zhuǎn)換相對(duì)容易(與將RTL轉(zhuǎn)換為門(mén)電路不同)。
相比之下,高級(jí)綜合工具接受多種輸入語(yǔ)言(如C/C++、Python等),并將代碼“展開(kāi)”,通常轉(zhuǎn)換為SystemVerilog。這種方法有其支持者和成功案例,但現(xiàn)實(shí)情況是,大多數(shù)主要芯片并不是這樣設(shè)計(jì)的。從根本上說(shuō),這種方法似乎能夠?qū)崿F(xiàn)更快的設(shè)計(jì)周期,但代價(jià)是犧牲性能。在競(jìng)爭(zhēng)激烈的市場(chǎng)中,我們通常不會(huì)選擇犧牲性能。
現(xiàn)在是時(shí)候在設(shè)計(jì)中邁向更高層次的抽象了,如果你愿意的話(huà),可以稱(chēng)之為新的“綜合”時(shí)刻。最近在人工智能領(lǐng)域取得的進(jìn)步正在促使我們思考,自然語(yǔ)言是否可以成為我們的下一個(gè)“高級(jí)語(yǔ)言”。就像上次一樣,這將很快從同事隨意提及的事情,轉(zhuǎn)變?yōu)橐粤钊穗y以置信的結(jié)果直面我們。
那么……人工智能會(huì)搶走我們的所有工作嗎?
回顧早期綜合工具的使用,我現(xiàn)在可以自信地回答:不會(huì)。
如果沒(méi)有綜合工具,確實(shí)我們需要更大的團(tuán)隊(duì)來(lái)設(shè)計(jì)當(dāng)今的芯片,但芯片市場(chǎng)的規(guī)模也會(huì)小得多——產(chǎn)品種類(lèi)更少,成本更高,性能更低。大多數(shù)芯片設(shè)計(jì)工作將是單調(diào)、重復(fù)且薪酬較低的。一小部分人會(huì)負(fù)責(zé)高級(jí)設(shè)計(jì)工作,然后一大群人來(lái)完成剩下的工作——就像在好萊塢大片中,一群動(dòng)畫(huà)師團(tuán)隊(duì)負(fù)責(zé)“按部就班地填充顏色”。
芯片設(shè)計(jì)師會(huì)更愿意一直從事門(mén)級(jí)設(shè)計(jì),而不是綜合出定義了21世紀(jì)的驚人芯片嗎?不,他們不會(huì)。
綜合工具推動(dòng)了一個(gè)自1990年以來(lái)收入增長(zhǎng)數(shù)倍的行業(yè)。出于類(lèi)似的原因,我預(yù)計(jì)人工智能增強(qiáng)的芯片設(shè)計(jì)將增加工作崗位數(shù)量,并使工作更具吸引力。很快,將會(huì)有更多芯片被設(shè)計(jì)出來(lái),每個(gè)芯片都更精準(zhǔn)地針對(duì)其應(yīng)用場(chǎng)景,具備更多功能,且成本更低、功耗更少。人工智能模型將使我們能夠構(gòu)建更多我們想要的芯片,而不僅僅是那些我們能夠設(shè)計(jì)出來(lái)的芯片。
友情鏈接:站點(diǎn)地圖 薩科微官方微博 立創(chuàng)商城-薩科微專(zhuān)賣(mài) 金航標(biāo)官網(wǎng) 金航標(biāo)英文站
Copyright ?2015-2025 深圳薩科微半導(dǎo)體有限公司 版權(quán)所有 粵ICP備20017602號(hào) 粵公網(wǎng)安備44030002007346號(hào)