解密一顆芯片設計的全生命周期算力需求
對廣大半導體設計公司而言,算力資源規劃和現金流之間的平衡,嘖嘖,是一門藝術。
多一分是浪費,少一分則崩潰。
我們曾經在初創型IC企業必備白皮書和成長型IC企業必備白皮書里分別畫過以下兩張圖:
左圖名字叫做:守護現金流
這年頭現金流的重要性,不必多說。
右圖名字叫做:人生就是一場豪****
不管是初創IC設計公司還是成熟公司,新開始一個項目,總是面臨著前路未知的情況:
1. 周期性存在突發算力高峰需求,涉及到先進制程問題更加顯著;
2. 每次調整制程,都面臨新的資源預估,永遠估不準;
3. 可能需要某些內部不可用的內存和計算資源。
我們今天認真盤一盤,怎么把這門藝術拉下神壇。
先給大家一個直觀感受。
下圖是我們某客戶全生命周期月度算力實際用量曲線:整個芯片項目全流程為18個月,涉及前端、驗證、后端三大團隊。
1. 前4個月,只涉及到前端布局與架構,對于算力需求不高,因此月度算力需求較少;
2. 從5月開始,前端、驗證、后端均開始工作,算力開始逐步提升,第11個月達算力小高峰,在第16個月達算力最高峰,月度調度峰值達到百萬級核時以上;
3. 算力波峰和波谷的核數差距在20倍以上;
4. 算力在第16個月達到最高峰后,迅速下降。
Part 1 小白版算法
Part 2 老司機版算法
Part 3 全年現實算力需求折算
Part 4 一個并不艱難的選擇

Part 1 小白版算法針對的是:項目全新,團隊人員也比較新,需要從零計算Part 2 老司機版算法針對的是:項目全新,但有類似經驗的老人在團隊,可以憑經驗值估算PS:Part 1和Part 2 二選一閱讀即可
為了簡化計算,我們根據現實情況作以下假設:
1. 研發團隊總人數為100;
Part1 :小白版算法
這套小白版算法是我們根據N家客戶的實際情況,得出的經驗參考值:包括不同階段,不同團隊的人員配比與人力占用比例,每人job數,每人每job峰值核數。因實際團隊并非全程在此項目中,部分階段人力需折算,即人力占用比例。在我們的參考值基礎上略做調整,大家就能大致得出自己公司的相應數值啦。
這套算法通過估算不同階段內、各個團隊所需的算力峰值之和,得出每階段的算力峰值。各團隊的峰值計算公式為每人每job峰值核數(多臺機器則為每臺核數*機器數)*團隊人數*每人job數(每個階段計算方式一致)。
Stage 1:前期階段(第1-4個月)
① 階段工作詳情:前端從事設計相關工作,驗證團隊同步參與,工作狀態都較為穩定,此階段每月峰值核數趨于一致;② 涉及團隊:前端、驗證團隊;③ 資源并發需求:前端團隊每人1臺10核、驗證團隊每人1臺20核。
該階段峰值核時計算(計量單位:核小時):1月:10核*50人*1job=5002-4月:前端團隊峰值核數=10*50*1=500 ;驗證團隊峰值核數=20*25*1=500;峰值核數總計為500+500=1000;則該階段的峰值核數在2-4月,為1000(下同,不再詳述這一計算過程)

Stage 2:中期階段(5-8月)
① 階段工作詳情:涉及到前端仿真、驗證和部分模塊的版圖工作。6月在前仿最后階段做一次大仿真,是算力小波峰,隨后算力下降;② 涉及團隊:前端、驗證和后端團隊;③ 資源并發需求峰值:5月:前端團隊每人1臺18核節點,每人1個job;驗證團隊每人4個job,每個job約18核(人力占用比例:75%);后端團隊每人1臺18核節點;6月:前端團隊每人1臺24核節點,每人1個job;驗證團隊每人6個job,每個job約24核(人力占用比例:75%);后端團隊每人1臺18核節點;7月:前端團隊每人1臺18核節點,每人1個job(人力占用比例:40%);驗證團隊每人3個job,每個job約18核;后端團隊每人1個job,每job約4臺18核節點;8月:前端團隊每人1個job,每個job18核(人力占用比例:40%);驗證團隊每人2個job,每個job18核;后端團隊每人1個job,每個job約4臺24核節點。
計算結果如下
Stage 3:后期階段(9-12月)
① 階段工作詳情:主要涉及后端仿真相關工作;② 涉及團隊:驗證和后端團隊;③ 資源并發需求:9月:驗證團隊,每人4個job,每個job約18核;后端團隊每人1-2個job,每個job約4臺24核節點(后端人均完成1.6個job,取值1.6);10月:驗證團隊每人6個job,每個job約24核;后端團隊每人1-2個job,每job約6臺24核工作節點(后端人力占用比例:80%,每人2個job);11月:驗證團隊每人6個job,每個job約24核;后端團隊每人1個job,每job約4臺24核工作節點;12月:驗證團隊每人6個job,每個job約18核;后端團隊每人1個job,每job約3臺24核工作節點。
計算結果如下


1. 和文章開頭的實際用戶算力曲線趨勢一致;2. 不同月份間的峰值算力差異很大,能達到20倍左右;3. 不同團隊在不同月份的峰值算力需求差異明顯。
Part2 :老司機版算法
如果對于未來芯片項目,你們有過來人能預估出不同團隊不同階段的算力需求,這套老司機版算法將完全適配你。這套算法是我們根據有項目經驗的芯片研發團隊的實際情況,通過填入各月每job峰值核數、每月最大并行job數,計算出各團隊每月所需的算力峰值。
下面為大家奉上這份《XXX芯片項目-資源需求調研模板》:

Step 1:將不同組、每個job所需核數或內存的峰值需求,依次填入中間的“每job峰值核數”和“每job峰值內存”欄目下,負責人填入“團隊負責人”欄目下
例如:每個job需要的峰值核數為10,每個job需要峰值內存為20(據經驗值統計),前端負責人為Andy。
Step 2:在每月欄目下,填入各團隊預期的每月并行最大job數(簡稱:job數)
Job數可根據研發內部統計,也可根據job數=每人最大并行job數*人數進行計算,如團隊并非全程在此項目中,人力還需折算統計。
例如:2022年2-5月,前端團隊每人最大并行job數為1,團隊有50人,均100%投入在此項目中,則填入下表的job數均為:50*1*100%=50。

Step 3:計算各團隊當月峰值算力并相加,得出峰值算力總計(計量單位:核小時)
各團隊的峰值計算公式:每job峰值核數*job數(每個階段計算方式一致)。
計算過程如下前端團隊:2-5月:10*50=500驗證團隊:3-5月:20*25=500將各團隊每月算力峰值相加,得到每月項目的算力峰值,計算得出項目各月算力峰值表
Part3 :全年現實算力需求折算
不管是小白版算法還是老司機版算法,都是一個月每天全部按峰值需求跑任務的前提下進行計算的。但實際情況下,肯定不需要一直按峰值頂格跑。
我們折算一下:全月全資源峰值用量:峰值核數*30天*24小時全月實際用量可能是:峰值核數*22天*8小時
用小白版算法的數據來調整:6月算力小波峰:后端按30天*18小時估算,驗證按30天*16小時估算;10月算力大波峰:后端按30天*24小時估算,驗證按照30天*16小時估算。
得出下表,并繪制成相應曲線圖:

Part4 :一個并不艱難的選擇
好了,全生命周期算力需求算完了。到了算賬的環節了。
綠色代表本地資源,必須按這一階段需求峰值準備,也就是按灰色來準備。買不到峰值,肯定會影響到芯片項目進度。
如果是純本地,就是按綠色這根線買。現金流是必須要動用一大筆的了,采購周期也是必須要考慮的。按照本文開頭我們某客戶全生命周期月度算力實際用量曲線,波峰、波谷間差距可高達20倍,月調度核時峰值能達到百萬級以上。頂格買……
綠色線和橙色線中間的差距(圖中陰影部分),各人可能有各人的體會。算力資源規劃VS現金流
芯片項目周期VS市場競爭格局具體怎么權衡和取舍,還是要看企業自己。
一顆芯片設計完整生命周期下,不同階段,不同應用場景,對算力更精細的需求差異,我們相應的推薦和建議,以后再聊。
*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。