芯片架構(gòu)師到底該干什么
這年代“芯片架構(gòu)師”多如牛毛,最近正好在做相關(guān)工作,加之對如何收尾軟硬件接口設計一直沒想法,那就聊聊傳統(tǒng)上負責芯片架構(gòu)設計的芯片架構(gòu)師到底該干什么吧。 1. 確定芯片feature和規(guī)格 一般來講,芯片立項時的規(guī)格定義應該是marketing的工作,對于芯片架構(gòu)設計而言更多的是一種輸入。當然在這個過程中芯片設計者可以為芯片定義提供有效的輸入,譬如說PPA的預估和spec的可實現(xiàn)行評估。 2. 完成block功能劃分 把芯片支持的feature和功能合理的分配到不同的block上,是芯片架構(gòu)設計過程中思考的第一項工作。它既包括芯片的軟硬件劃分,又包括芯片硬件block之間的劃分。芯片設計歸根結(jié)底是一個算力分配的問題,芯片上的邏輯門和memory都是用于承載算力的基本資源。因此哪些工作給圖靈完備的CPU做,哪些工作給GPU這類加速器做,哪些工作需要設計專用的DSA/HWA來承載,需要在架構(gòu)設計的時候想明白。一般來說CPU的通用性強,升級能力強,但是性能差;專用的HWA加速能力強,通用性和升級能力就差了;而各類DSA則處于CPU和HWA之間。具體怎么分配,本質(zhì)上取決于對業(yè)務的認識和對未來的判斷,需要沖擊性能的就得想辦法實現(xiàn)絕對加速,業(yè)務可能發(fā)展變化的就需要考慮可編程和升級能力。 3. 定義數(shù)據(jù)結(jié)構(gòu) 芯片抽象看起來,無非是搬移數(shù)據(jù)和處理數(shù)據(jù)這兩個任務。因此設計靈活的、方便處理的、減少搬移需求的、適合軟硬件和芯片間交互的數(shù)據(jù)結(jié)構(gòu)就是下一步該做的事情。數(shù)據(jù)結(jié)構(gòu)設計沒有固定的套路可尋,且不同出身的架構(gòu)設計者設計出的數(shù)據(jù)結(jié)構(gòu)往往大相徑庭。一般來講,方便軟件使用、方便硬件設計,能達到PPA均衡、具備靈活配置能力的數(shù)據(jù)結(jié)構(gòu)就挺好。 4. 設計總線架構(gòu) 有了block劃分和數(shù)據(jù)結(jié)構(gòu),接下來需要設計合適的總線架構(gòu)讓數(shù)據(jù)在block之間高效的流動起來。既需要節(jié)省寶貴的連線資源,又需要突破存儲墻的限制保證block能夠被盡量喂飽。常見的總線無非是crossbar和mesh等寥寥幾種,根據(jù)帶寬需求和數(shù)據(jù)結(jié)構(gòu)特定進行合理的設計其實不難。 5. 完成核心block的功能和架構(gòu)定義 這是芯片架構(gòu)設計的最后一步,也是block架構(gòu)師設計工作的起點。有了明確的起點,mem架構(gòu)師、hsio架構(gòu)師、power架構(gòu)師、security架構(gòu)師......才可以開始更詳細的block架構(gòu)設計。當然,和接收芯片spec定義一樣,這個過程也可能是互相成就不停迭代的。 一名合格的芯片架構(gòu)師,能完成上面的五項工作就已經(jīng)很不錯了。以前以為coding和cr是架構(gòu)師水平的體現(xiàn),現(xiàn)在倒是覺得那些事情當個興趣就可以了,架構(gòu)設計能力歸根結(jié)底比的是見多識廣,多看多讀多寫多畫多講多聽才是真正該干的事情。