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