第一篇 回到定義
讓我們先從一個小游戲開始,
仔細觀察上面的幾個圖形,其中哪些是直線呢?可能很多人會毫不猶豫的回答是”G”。其實,要回答這個問題,我們就要先弄清楚“直線”的定義,直線必須滿足三個條件,第一,是直的;第二,是線,也就是必須是一維的,第三,直線沒有端點。那么上面有哪個是同時滿足這三個條件的圖形呢?沒有!A不是一維的,B/C不是直的,D/E/F有端點,G不是一維的,因為一維的直線是沒有寬度的,而G之所以能夠被我們?nèi)搜劭吹?,說明它是有寬度的。
這里說這個小游戲的目的是為了引入一種非常重要的思維方式:回到定義。在我看來,我們平時遇到的很多問題,大部分可以通過“回到定義”來獲得一個快速的模糊的答案。為了說明這種思維方式的強大之處,我們來看幾個問題。
“這件衣服漂亮嗎?”
“我做的飯好吃嗎?”
“你覺得這個人勇敢嗎?”
“你覺得這個事情好不好做?”
“這個解決方案的成本高不高?”
“這個方案和那個方案,哪個好?”
“從這里去公司,開車快還是做地鐵快?”
“……”
無論是生活還是工作當中,我們無時無刻都會面臨上面類似的問題,這些問題可能來自家人,可能來自同事,也可能來自路人。要回答這些問題,同樣,也可以使用“回到定義”的思維方式,當我們弄明白定義之后,以上問題就迎刃而解了。
“什么是漂亮?”
“什么是好吃?”
“怎么定義勇敢?”
“怎么定義好做?”
“成本怎么定義?”
“怎么定義方案的好壞?”
“怎么定義快?”
你會發(fā)現(xiàn),如果我們搞清楚了這幾個定義,其實那些問題也就自有答案了。
我們平時的工作,其本質(zhì)是選擇,即,每時每刻要做出有利的選擇。針對芯片行業(yè)來說,可具體化為我們要選擇性能高(P),功耗低(P),面積小(A),復雜度低(C)的方案。一般情況下,大家在這個目標上是沒有分歧的,分歧的產(chǎn)生在于每個人對PPAC的預估值不同,或者在于每個人所站的角度不同。然而,一個方案的好壞不止PPAC這四個指標,還有很多其它的參數(shù),有時候也需要考慮進去。還有,上面的提到的“有利的選擇”,對不同的人的含義也可能是不同的。最后,以上討論大多都是基于人是理性的這個假設(shè),然而事實并非如此,這就使事情變得越來越復雜,難以有顯而易見的結(jié)論。
大道至簡,面對這紛繁復雜的多彩世界,我認為“回到定義”是我們可以利用的一把利器,“回到定義”一般不是為了解決某個問題,而是過濾那些價值不大的問題。
第二篇 排列組合
排列組合的本質(zhì)是降維。
面對一個復雜的問題,當這個問題的復雜性已經(jīng)超出我們解決問題的能力時,就會變得很棘手。一般情況下,出現(xiàn)這種情況是因為這個問題的維度超過了我們認知的維度,這時,我們可以采用“排列組合”的思維方式來嘗試解決。
比如“如何設(shè)計一個AI加速器”,這是一個很大的問題,我們可能很難在短時間內(nèi)得到答案,因為這個問題的復雜性已經(jīng)超出了很多人的認知范圍。這時,我們可以將這個問題進行降維處理,變成多個較簡單的,維度低一些的子問題:
“如何設(shè)計AI加速器的memory hierarchy?”
“如何設(shè)計AI加速器的data path?”
“如何設(shè)計AI加速器的control path?”
“如何設(shè)計AI加速器的運算單元?”
“如何使以上幾個子系統(tǒng)協(xié)同工作?”
我們仔細觀察發(fā)現(xiàn),以上幾個問題是最開始問題的子問題,以及這些子問題之間的關(guān)系的問題。也就是原始的問題被降低到了更低的維度。如果發(fā)現(xiàn)個別子問題仍然不能解決,那么,可以采用同樣的方式,將這個子問題采用“排列組合”進行拆解。這里,我們假設(shè)“如何設(shè)計AI加速器的運算單元”這個子問題還是太復雜,超出了我們的能力,那么,我們可以進一步將其降維:
“如何設(shè)計AI加速器的Tensor processor?”
“如何設(shè)計AI加速器的Vector processor?”
“如何設(shè)計AI加速器的Scaler processor?”
同樣,我們也可以繼續(xù)拆解:“如何設(shè)計AI加速器的Tensor processor?”
“AI加速器的Tensor processor 負責完成哪些功能?”
“AI加速器的Tensor processor 的sequence如何選擇?”
“AI加速器的Tensor processor PPA budget是怎樣的?”
“AI加速器的Tensor processor 帶寬需求是怎樣的?”
“AI加速器的Tensor processor 需要的data format是怎樣的?”
“……”
每個人解決問題的能力不同,所需要拆解到的問題的維度也不同,能力強的人,需要拆解的層數(shù)少一些,能力弱一些的人,可能需要將問題拆解到較低的維度時才能解決。
排列組合,除了可以將問題降維之外,還可以彌補腦容量不足所帶來的問題。平時工作當中,有一類問題難度太高,一時無法下手,可以采用排列組合來解決,正如上面剛剛提到的例子;還有另外一類問題,其本身難度并不高,在我們解決問題能力范圍之內(nèi),但問題比較繁雜,怎奈腦容量有限,一時難以將所有情況都考慮周全。對于這樣的問題,也可以采用“排列組合”來防止遺漏。這個時候,“好記性不如爛筆頭”就會發(fā)揮作用,當我們列出所有排列組合之后,然后用大腦依次分析,就能得出結(jié)論了。
第三篇 論數(shù)據(jù)
當今時代是一個信息爆炸的時代,天量的數(shù)據(jù)無時無刻的被生產(chǎn),收集,傳播開來,數(shù)據(jù)分析與篩選技能已經(jīng)是一個人最基本的技能之一了,經(jīng)過常年的學習與訓練,關(guān)于數(shù)據(jù)的能力很多都已經(jīng)變成了我們的前意識記憶,甚至是在非意識范圍內(nèi)影響著我們。這一點對于IT從業(yè)者尤其明顯,在平時的工作中,無論是誰,每天都會面臨很多“選擇題”,而我們要做出選擇,大多是出于理性的,而理性本身需要數(shù)據(jù)支撐。
“為什么采用這個方案,有什么好處嗎?”
“這個方案的PPAC怎么樣?”
“如果采用這個方案,會有什么代價?”
“……”
在做出以上選擇之前,大多需要準備一些數(shù)據(jù),而一個沒有任何數(shù)據(jù)支撐的問題的決定能力是一個人重要的技能,對兩個或者多個方案,數(shù)據(jù)上難分伯仲時的決策能力也是一個人重要的技能。
另外,數(shù)據(jù)有結(jié)論之前的數(shù)據(jù)和結(jié)論之后的數(shù)據(jù)之分。前者使我們自信,后者使我們開心。全面的數(shù)據(jù)使我們柳暗花明又一村,走出泥潭,片面的數(shù)據(jù)使我們不識廬山真面目,誤入歧途?!皩嵤虑笫?,不先入為主”是SOL, “求全責備,所有決定都要有數(shù)據(jù)支撐”也是SOL,需要知道的是SOL我們?nèi)祟愖霾坏降摹?/p>
給紛繁的世界建模以獲取數(shù)據(jù)是困難的,在天量的數(shù)據(jù)中做出正確的決定也是不易的。數(shù)據(jù)不會騙人,騙人的是使用數(shù)據(jù)的人而已。我建議的是,工作中80%的決定要基于收集到的數(shù)據(jù),20%的決定要基于內(nèi)心。生活中20%的決定要基于收集到的數(shù)據(jù),80%的決定要基于內(nèi)心。類似模擬退火。理性是可貴的,但感性也不是一文不值。智慧是好的,但我們也不能倚靠自己的聰明。追求完美,大多數(shù)情況是褒義詞,但有時候也可以是貶義詞。
第四篇 正反合(A=A=!A)
A=A=!A這個式子可以先拆成兩個簡單一點的式子來看:
A=A 和A=!A,為了便于描述,我稱第一個式子為“A向左運動”,第二個叫“A向右運動”。
無論是在工作還是在生活中,我們的核心工作就是解決這樣或那樣的問題。以上提到的幾種方法之所以有用,很大程度上是因為我們發(fā)現(xiàn)了問題的矛盾點。如果把“A向左運動”看成是“證明方案A是對的(矛)”的話,那么“A向右運動”就是“證明方案A是錯的(盾)”。矛與盾相互否定,推動盾與矛互相肯定,這個過程反復出現(xiàn),實現(xiàn)了問題的瓦解,即,問題的解決,達到了新的穩(wěn)態(tài),新的合理,新的存在。
比如,我們要新加一個具體的feature,最開始,我們會提出一個方案,假設(shè)就叫方案A,方案A的提出過程,其實就是“A向左運動”,這個過程中,最重要的是要確定“方案A確實可以解決這個問題”,就是A的肯定。一旦方案A提出之后,隨之而來的是“為什么方案A有這個缺點”或者“為什么不選擇方案B”,這個過程就是“A向右運動”的過程,即方案A的否定。接下來,就又是“A的肯定”過程,即,要完善最開始的方案A,完善之后可能還有反對者提出問題,如此往復,經(jīng)過幾個回合的拉鋸之后,方案A漸趨成熟,而這時方案A還是方案A,方案A也是方案A的否定了?!白非鬅o我,成就自我”,“無知者是不自由的”,每一次的否定自我,就是一次自我的肯定,每一次的自我肯定,都是向?qū)α⒛吧囊淮吻斑M。
A=A=!A就是“正”,“反”,過程是螺旋上升的,目的是“合”。然而,世界是復雜的,我們偶爾也會遇到一時沒有矛盾,但仍然需要我們解決的問題,這個時候,用我們?nèi)祟愖钊彳浀膬?nèi)心與這個問題握手。
第五篇 關(guān)于芯片架構(gòu)
以上討論了幾種個人解決實際問題的方式方法,接下來說一下對芯片結(jié)構(gòu)工作的體會。
芯片架構(gòu),大體上可分為三個事情:Architecture, Algorithm和Association。顯然,架構(gòu)工作,是要生產(chǎn)一些架構(gòu)(Architecture)作為產(chǎn)品的,作為設(shè)計人員的參考與指導。架構(gòu)本身并不是無根之木,是需要一些數(shù)據(jù)支撐的,而這數(shù)據(jù)的來源,主要是算法分析,所以架構(gòu)工作還應(yīng)包括一些算法分析的內(nèi)容,此外,為了發(fā)揮所做架構(gòu)的效力,應(yīng)該提供一些基本的工具來幫助用戶。
三者之間,相輔相成,不同階段,不同情況,重要程度不同。算法分析者可以提供必要的信息,比如算法發(fā)展趨勢,所關(guān)心領(lǐng)域算法特點等重要內(nèi)容,架構(gòu)者基于這些內(nèi)容,可以提出合適的硬件架構(gòu)來,而另外一些人可以提供合適的工具來彌補架構(gòu)和客戶之間的gap。三者之間不是單向影響的,是互相關(guān)聯(lián)的,架構(gòu)者可以提出在做架構(gòu)時的痛點,以影響算法發(fā)展和工具提供者。
芯片架構(gòu)工作,很像是玩打地鼠游戲,目的不是把從某個洞里出來的地鼠全部打死,而是能夠權(quán)衡,使總體得分最高,而權(quán)衡中的原則是,如果自己與非自己有沖突時,或者正義與利益有沖突時,盡量使非自己開心。
審核編輯:劉清
-
加速器
+關(guān)注
關(guān)注
2文章
796瀏覽量
37838 -
sol
+關(guān)注
關(guān)注
0文章
7瀏覽量
10285 -
AI加速器
+關(guān)注
關(guān)注
1文章
68瀏覽量
8634
原文標題:甄建勇: 芯片架構(gòu)方法學
文章出處:【微信號:gh_cb8502189068,微信公眾號:網(wǎng)絡(luò)交換FPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論