比表怎么建?從架構(gòu)框架到選型實(shí)戰(zhàn))
我最早在搜索引擎里翻Cortex-A處理器對(duì)比表的時(shí)候以為只要把主頻、核心數(shù)、制程堆在一起選型就有答案了。結(jié)果真到項(xiàng)目評(píng)審會(huì)上被問(wèn)到“你這顆A55和A510到底差在哪”“為什么不用更新的核心做常駐任務(wù)”時(shí)我基本答不上來(lái)。后來(lái)我花了兩三周把框架架構(gòu)手冊(cè)、白皮書、實(shí)測(cè)數(shù)據(jù)和各種公開(kāi)資料交叉核對(duì)了一遍自己做了一張真正能回答決策問(wèn)題的Arm Cortex-A處理器對(duì)比表。這篇文章想把這張表的構(gòu)建思路、核心列含義和使用方法講清楚適合正在做嵌入式主控選型、移動(dòng)終端方案評(píng)估或者想系統(tǒng)理解Cortex-A系列差異的開(kāi)發(fā)者參考。一張對(duì)比表的價(jià)值不在于列了多少參數(shù)而在于能不能幫你把“選哪個(gè)核”這個(gè)問(wèn)題想明白。所以我先聊聊為什么現(xiàn)成的表不好用再拆解Cortex-A家族的代際邏輯給出我常用的對(duì)比列和壓縮版表格最后用三個(gè)真實(shí)選型案例演示怎么把表格用起來(lái)。1. 為什么網(wǎng)上現(xiàn)成的Cortex-A對(duì)比表我越看越不敢用1.1 現(xiàn)成表格的三大坑版本斷檔、維度錯(cuò)位、口徑不一網(wǎng)上常見(jiàn)的Cortex-A對(duì)比表第一眼看上去確實(shí)整齊A5、A7、A9、A15、A53、A57列得清清楚楚。但真正拿進(jìn)項(xiàng)目里用你會(huì)發(fā)現(xiàn)它解決不了幾個(gè)實(shí)際問(wèn)題。第一個(gè)坑是版本斷檔。很多熱門的對(duì)照表停留在A76、A77、A78、X1那一代再往后的A510、A710、A715、A720、A520、X2、X3、X4很少被收錄。但你現(xiàn)在買一塊主流開(kāi)發(fā)板或評(píng)估算力平臺(tái)拿到的基本都是這些新核心。表格停在上一代等于你在地圖上看不到新修的立交橋?qū)Ш阶匀粵](méi)法用。第二個(gè)坑是維度錯(cuò)位。面向手機(jī)SoC的表格喜歡堆核心數(shù)、最高主頻、GPU型號(hào)和跑分名次??汕度胧?、車載、邊緣設(shè)備這些場(chǎng)景真正關(guān)心的是流水線結(jié)構(gòu)、順序執(zhí)行還是亂序執(zhí)行、L1/L2緩存怎么組織、架構(gòu)框架是否兼容老指令、軟件棧要不要重新編譯。這些信息在大路貨表格里往往是缺失的。這就好比買車只看最高車速不問(wèn)油耗、不問(wèn)低速扭矩結(jié)果拖房車時(shí)才發(fā)現(xiàn)根本拉不動(dòng)。第三個(gè)坑是口徑不一。有的表寫“典型頻率”實(shí)際是某家SoC廠商超頻后的極限值有的表標(biāo)稱“IPC”其實(shí)是某個(gè)跑分工具倒推出來(lái)的間接結(jié)果。這些數(shù)值放在同一張表里橫向比較誤差會(huì)非常大。表格最怕的就是“看起來(lái)精確其實(shí)不可比”。所以我的結(jié)論是不是表格沒(méi)用而是現(xiàn)成表格的構(gòu)建邏輯不是以決策為中心的。真正好用的對(duì)比表應(yīng)該自己按需維護(hù)。1.2 從“參數(shù)陳列”到“決策導(dǎo)向”表格是給選擇用的我后來(lái)把思路換了一下不再先列參數(shù)而是先把我會(huì)遇到的決策問(wèn)題寫出來(lái)再倒推表格需要哪些列。核心問(wèn)題就三個(gè)這顆核是拿來(lái)做主任務(wù)還是做常駐低功耗后臺(tái)從舊核換到新核軟件棧要不要?jiǎng)觿?dòng)了多少性能提升是靠頻率硬頂上去的還是靠每周期指令數(shù)IPC實(shí)打?qū)嵦嵘倪@三個(gè)問(wèn)題表面上簡(jiǎn)單實(shí)際覆蓋了絕大多數(shù)選型場(chǎng)景。舉個(gè)常見(jiàn)例子某開(kāi)發(fā)者看到A76能跑到3.0GHz覺(jué)得它和A720差不多。但他沒(méi)注意到A720的IPC比A76高出一大截在更低頻率下就能完成同樣的工作功耗和發(fā)熱反而更低。對(duì)比表里如果沒(méi)有IPC這種相對(duì)變化信息只看主頻很容易做錯(cuò)決策。這也是我后來(lái)堅(jiān)持在表里保留“相對(duì)上一代關(guān)鍵變化”這一列的原因。2. Cortex-A家族的代際邏輯A5x、A7x、X系不是按數(shù)字排隊(duì)2.1 從ARMv7到ARMv9架構(gòu)框架比型號(hào)數(shù)字更關(guān)鍵看Cortex-A對(duì)比表第一件事不是看A后面的數(shù)字而是看這些核心掛在哪個(gè)架構(gòu)框架下。數(shù)字相鄰不代表同代架構(gòu)才代表真正的代際關(guān)系。大致脈絡(luò)是這樣的ARMv7時(shí)代A5、A7、A8、A9、A15、A17都算這一撥主要面向32位。ARMv8-A是第一批引入AArch64即64位指令集的核心典型代表是A53和A57。ARMv8.2進(jìn)一步演進(jìn)A55、A76、A77、A78、X1都屬于這個(gè)階段。ARMv9-A開(kāi)始加入SVE2可擴(kuò)展矢量指令、更復(fù)雜的內(nèi)存安全機(jī)制代表核心是A510、A710、A715、X2。ARMv9.2繼續(xù)微調(diào)A520、A720、X3、X4是這一代的新面孔。為什么這層關(guān)系重要因?yàn)榧軜?gòu)框架直接決定你能不能用上新指令集、要不要遷移代碼。A76和A78雖然是數(shù)字緊挨著的兩代但它們都屬于ARMv8.2A710看起來(lái)是A78的繼任者卻已經(jīng)站到了ARMv9陣營(yíng)里。從軟件角度看A78升到A710不只是頻率和緩存的調(diào)整還涉及一批新指令的支持和部分舊特性的取舍。用生活化的方式理解型號(hào)數(shù)字像樓房的門牌號(hào)架構(gòu)框架像樓棟的地基。門牌號(hào)挨著不代表地基一樣深換樓住之前你得先確認(rèn)這棟樓的承重設(shè)計(jì)和原來(lái)的那棟是不是一回事。2.2 順序執(zhí)行與亂序執(zhí)行對(duì)比表里最該讀懂的一列Cortex-A家族里最容易被忽略、但影響最深的一列是執(zhí)行模型順序執(zhí)行還是亂序執(zhí)行。順序執(zhí)行的核心比如A53、A55、A510、A520嚴(yán)格按程序順序一條條處理指令遇到要等待的操作時(shí)就停一下。優(yōu)點(diǎn)是晶體管用得少、功耗低、面積小適合常駐后臺(tái)、傳感器采集、輕量通信這類任務(wù)。缺點(diǎn)是理解不了“后面那條指令其實(shí)可以先做”的機(jī)會(huì)IPC上不去。亂序執(zhí)行的核心比如A76、A78、A710、A720、X系列內(nèi)部有重排序緩沖區(qū)這類結(jié)構(gòu)會(huì)把指令流拆開(kāi)重新編排讓能先算的先算、能并行的并行執(zhí)行完再按原順序提交結(jié)果。IPC明顯高但換來(lái)的代價(jià)是功耗和面積都更大。所以對(duì)比表里一旦標(biāo)識(shí)了“順序”還是“亂序”整顆芯片的脾氣就清楚了一半順序核是省電但別指望飆性能亂序核性能強(qiáng)但你是要給它配散熱和電源方案的。這里順帶解釋一下“發(fā)射寬度”它表示流水線每一拍最多能往深處送多少條指令。約2發(fā)射就是每拍最多兩條約5發(fā)射就是每拍最多五條。它和IPC強(qiáng)相關(guān)但又不完全等價(jià)因?yàn)閬y序窗口、分支預(yù)測(cè)、緩存帶寬都會(huì)卡住實(shí)際吞吐。所以表格里我寫“發(fā)射寬度約”意思是它是重要參考但不是絕對(duì)標(biāo)尺。3. 我壓箱底的那張對(duì)比表列維度的含義與可直接抄的版本3.1 我建議保留的18個(gè)對(duì)比列與判讀方法現(xiàn)在進(jìn)入實(shí)操部分。如果你也要自己建一張Cortex-A對(duì)比表我建議至少保留下面這些列。不是每列都填滿但缺了其中某些列遇到特定問(wèn)題時(shí)就會(huì)抓瞎。列名含義與判讀方式型號(hào)Cortex-A后面的數(shù)字代號(hào)發(fā)布年份判斷代際關(guān)系和長(zhǎng)期維護(hù)周期架構(gòu)框架ARMv7-A / v8-A / v8.2 / v9-A / v9.2決定指令集支持執(zhí)行模型順序還是亂序決定功耗與性能基調(diào)發(fā)射寬度約每拍最多送入流水線的指令數(shù)衡量微架構(gòu)上限亂序窗口大致能重排多少條指令資料給得少可用公開(kāi)分析近似L1 I/D Cache指令緩存與數(shù)據(jù)緩存的容量和結(jié)構(gòu)L2 Cache私有還是共享容量多大L3/系統(tǒng)緩存接口多核簇之間共享緩存的情況SIMD支持是否支持Neon、SVE、SVE2位寬兼容支持AArch64還是同時(shí)兼容AArch32典型頻率官方IP目標(biāo)頻率注意和SoC廠商實(shí)際鎖頻區(qū)分實(shí)測(cè)IPC相對(duì)上一代的目標(biāo)提升或?qū)崪y(cè)提升必須注明來(lái)源同代搭檔常和哪顆小核、哪顆超大核搭配成簇目標(biāo)場(chǎng)景手機(jī)大核、嵌入式小核、車載中核等軟件生態(tài)主線Linux、RTOS、相關(guān)BSP的支持成熟度安全特性TrustZone等機(jī)制的版本支持情況備注官方代號(hào)、已知坑、是否被移出某產(chǎn)品線等這些列不需要全都做成精確數(shù)字很多可以用“方向性”描述。真正重要的是每一列背后對(duì)應(yīng)一個(gè)選型問(wèn)題。你臨時(shí)要回答“能不能跑老32位代碼”就去看位寬兼容列“做多核并發(fā)會(huì)不會(huì)帶寬不夠”就去看L2/L3緩存拓?fù)淞小?.2 一張可直接參考的壓縮版Cortex-A對(duì)比表下面是我自己整理的壓縮版速查表覆蓋從ARMv7到ARMv9.2的主要核心。數(shù)值以公開(kāi)口徑為準(zhǔn)部分發(fā)射寬度是業(yè)內(nèi)公開(kāi)資料常見(jiàn)的估算值具體設(shè)計(jì)細(xì)節(jié)建議拿官方白皮書復(fù)核。型號(hào)發(fā)布年份架構(gòu)框架執(zhí)行模型發(fā)射寬度約典型定位相對(duì)上一代關(guān)鍵變化Cortex-A72011ARMv7-A順序2發(fā)射低功耗入門核小封裝、好調(diào)度的基礎(chǔ)小核Cortex-A152011ARMv7-A亂序3發(fā)射移動(dòng)旗艦大核首批高性能亂序核心之一Cortex-A532014ARMv8-A順序2發(fā)射64位入門/小核首批AArch64低功耗核心Cortex-A572014ARMv8-A亂序3發(fā)射首批64位大核性能強(qiáng)但功耗發(fā)熱也偏高Cortex-A552017ARMv8.2-A順序約2發(fā)射新一代小核緩存與取指帶寬比A53更好Cortex-A762018ARMv8.2-A亂序4發(fā)射高性能大核跨代飛躍性能與能效大幅提升Cortex-A772019ARMv8.2-A亂序4發(fā)射旗艦大核分支預(yù)測(cè)與內(nèi)存并行度增強(qiáng)Cortex-A782020ARMv8.2-A亂序4發(fā)射旗艦大核同性能下功耗更低Cortex-X12020ARMv8.2-A亂序5發(fā)射超大核更大L2、IPC高于A78的專用大核Cortex-A5102021ARMv9-A順序約3發(fā)射高效小核相對(duì)A55性能提升明顯功耗降低Cortex-A7102021ARMv9-A亂序4發(fā)射大核/中核A78的ARMv9繼任者Cortex-X22021ARMv9-A亂序約5發(fā)射超大核緩存帶寬與分支優(yōu)化IPC再漲Cortex-A7152022ARMv9-A亂序約5發(fā)射中核移出AArch32專注能效Cortex-X32022ARMv9-A亂序約6發(fā)射超大核繼續(xù)提升IPC與L2帶寬Cortex-A7202023ARMv9.2-A亂序約5發(fā)射中核同功耗下性能更好Cortex-A5202023ARMv9.2-A順序約3發(fā)射入門小核A510繼任者能效繼續(xù)改善Cortex-X42023ARMv9.2-A亂序約6發(fā)射超大核更大L2、更強(qiáng)的峰值性能這張表的使用方式很簡(jiǎn)單先定位你要回答的問(wèn)題再橫著比較行與行之間的差異。比如你在A55和A510之間猶豫一眼就能看出A510的架構(gòu)更新、發(fā)射寬度更大但它是ARMv9軟件棧要求會(huì)高一些。3.3 列裁剪思路把“大而全”的表縮到項(xiàng)目真正要用的三列完整表格適合存檔不適合每天打開(kāi)用。我在實(shí)際項(xiàng)目中通常會(huì)把表按場(chǎng)景裁剪掉一大部分。如果是嵌入式低功耗設(shè)備選型我最終只保留架構(gòu)框架、執(zhí)行模型、位寬兼容、典型頻率、L1/L2緩存、軟件生態(tài)再加上我自己實(shí)測(cè)的功耗數(shù)據(jù)。為什么位寬兼容重要因?yàn)槟憧赡苓€掛著老傳感器庫(kù)或老版本調(diào)試器。如果是移動(dòng)終端AP方案評(píng)估我保留IPC相對(duì)變化、L2/L3緩存拓?fù)?、同代搭檔、SVE支持、調(diào)度器親和性和功耗曲線。這些列決定的是多核調(diào)度和大核瞬時(shí)沖高的成功率而不是單純的“誰(shuí)跑分高”。如果是想學(xué)習(xí)底層微架構(gòu)則重點(diǎn)看發(fā)射寬度、亂序窗口、分支預(yù)測(cè)設(shè)計(jì)、緩存延遲參數(shù)反而不那么重要。一句話總結(jié)列裁剪的方法先寫下你要做的三個(gè)關(guān)鍵決策再?zèng)Q定表格只保留哪些列。表不是資料庫(kù)表是決策工具。4. 把表格落進(jìn)真實(shí)選型三個(gè)案例推演與決策依據(jù)4.1 案例一常駐低功耗核心從A55帶到A510值不值某開(kāi)發(fā)者的產(chǎn)品是一臺(tái)電池供電的工業(yè)記錄儀要求一顆核心常駐運(yùn)行跑傳感器采樣、通信交互偶爾喚醒大核做一輪數(shù)據(jù)處理。他一開(kāi)始想沿用老方案A55后來(lái)看到新一代核心A510不確定要不要在硬件改版時(shí)換掉。我?guī)退龅氖潞芎?jiǎn)單把A55和A510從表格里拎出來(lái)橫向?qū)Ρ?。A55是ARMv8.2下的順序雙發(fā)射核心A510是ARMv9下的順序三發(fā)射核心官方目標(biāo)性能提升大約35%功耗表現(xiàn)更優(yōu)。如果產(chǎn)品軟件棧還停留在比較老的內(nèi)核版本和工具鏈換A510意味著驅(qū)動(dòng)、編譯器、底層庫(kù)都要跟著升級(jí)短期成本不低。但如果產(chǎn)品還要再做兩到三年且需要更高的常駐響應(yīng)能力A510的架構(gòu)更接近現(xiàn)在的軟件生態(tài)主流后期擴(kuò)容更順。最終他選擇在全新改版時(shí)切到A510老產(chǎn)品保持A55不動(dòng)。這里的關(guān)鍵操作是在表格上同時(shí)標(biāo)注“軟件遷移成本”這一列而不是只看硬件參數(shù)。我的體會(huì)是核的收益再大軟件不配合也等于零。4.2 案例二旗艦“中核大核”搭配A720與X4的邊界在哪另一個(gè)常見(jiàn)問(wèn)題是大核簇里X系列和A7x系列怎么分工。移動(dòng)終端的典型三叢集結(jié)構(gòu)里X系列通常承擔(dān)短時(shí)峰值A(chǔ)7x系列承擔(dān)持續(xù)性能輸出小核處理后臺(tái)負(fù)載。對(duì)比表里真正要看的不是單個(gè)型號(hào)而是“同代搭檔”這一列。X4和A720、A520經(jīng)常被設(shè)計(jì)成一套簇X4負(fù)責(zé)需要極致響應(yīng)的場(chǎng)景A720負(fù)責(zé)主流應(yīng)用的持續(xù)負(fù)載A520負(fù)責(zé)待機(jī)和后臺(tái)。如果你只拿一顆A720硬扛所有任務(wù)它在中高頻段耗電會(huì)非??烊绻惆裍4當(dāng)常駐核心用散熱會(huì)先撐不住。為什么表格里要特意看緩存拓?fù)湟驗(yàn)槎嗪朔止r(shí)共享L3會(huì)被不同核心爭(zhēng)用。X4瞬時(shí)高負(fù)載時(shí)A720做計(jì)算可能被搶帶寬調(diào)度器需要做親和性分配。這些信息光看單核跑分是看不出來(lái)的。所以我的建議是在做移動(dòng)平臺(tái)方案評(píng)估時(shí)把對(duì)比表擴(kuò)展成“簇級(jí)對(duì)比表”看DSUDynamIQ共享單元里各核心的緩存分配而不是孤立比較某一顆核。4.3 案例三AArch32兼容性為什么A715/A720可能把你的老庫(kù)卡死這是最容易被新人踩中的坑。某團(tuán)隊(duì)拿著一個(gè)經(jīng)過(guò)長(zhǎng)期維護(hù)的32位二進(jìn)制庫(kù)準(zhǔn)備從A78平臺(tái)升級(jí)到以A720為核心的新平臺(tái)。對(duì)比表里架構(gòu)框架那列會(huì)把問(wèn)題直接暴露出來(lái)A78屬于ARMv8.2還保留對(duì)AArch32的兼容支持A715和A720已經(jīng)移除了32位執(zhí)行能力。換句話說(shuō)老庫(kù)在新核上可能直接沒(méi)法跑或者只能通過(guò)模擬層硬扛性能大打折扣。解決路徑有兩種要么把老庫(kù)的源碼重編譯到AArch64要么在方案里保留一顆兼容核專門跑32位負(fù)載。后者聽(tīng)上去簡(jiǎn)單但會(huì)拖累整顆芯片的調(diào)度和功耗。我建議做這件事前先跑一遍全量二進(jìn)制掃描確認(rèn)到底有多少32位模塊是硬依賴再?zèng)Q定要不要切新核心。這個(gè)案例說(shuō)明對(duì)比表里“位寬兼容”這一列不能省。尤其當(dāng)你處理的是嵌入式存量項(xiàng)目老工具鏈、老驅(qū)動(dòng)、舊第三方庫(kù)都是常態(tài)架構(gòu)一升級(jí)牽一發(fā)動(dòng)全身。5. 自建對(duì)比表的完整流程數(shù)據(jù)來(lái)源、核對(duì)方法與踩過(guò)的坑5.1 數(shù)據(jù)來(lái)源與核對(duì)流程自己做表數(shù)據(jù)來(lái)源直接決定可信度。我一般按三層來(lái)找資料。第一層是官方文檔。白皮書、產(chǎn)品簡(jiǎn)介、架構(gòu)參考手冊(cè)這些是一手來(lái)源型號(hào)代際、架構(gòu)框架、功能支持以這里為準(zhǔn)。第二層是第三方硬件分析站點(diǎn)和測(cè)評(píng)數(shù)據(jù)庫(kù)用來(lái)交叉驗(yàn)證實(shí)測(cè)IPC、功耗曲線和亂序窗口等細(xì)節(jié)。第三層是自己的實(shí)測(cè)。跑幾個(gè)內(nèi)層循環(huán)或基準(zhǔn)測(cè)試片段記錄CPU頻率、功耗、溫度用來(lái)驗(yàn)證白皮書里那些“目標(biāo)性能提升”。我的核對(duì)流程分四步先用官方文檔拉出所有型號(hào)的基礎(chǔ)參數(shù)然后至少找兩個(gè)獨(dú)立來(lái)源交叉比對(duì)同一型號(hào)的IPC和緩存數(shù)據(jù)接著在目標(biāo)開(kāi)發(fā)板上做一次小規(guī)模實(shí)測(cè)最后在表格里記下數(shù)據(jù)采集日期和工具鏈版本。為什么要記工具鏈版本因?yàn)橥瑯右活w核編譯器版本不同跑分差異可以拉大到百分之十幾。不記版本三個(gè)月后回看表格就會(huì)懷疑自己當(dāng)初記錯(cuò)了。5.2 我踩過(guò)的四個(gè)坑及處理方式第一個(gè)坑是只看IPC不看架構(gòu)框架。某次我在評(píng)估新核心時(shí)發(fā)現(xiàn)實(shí)測(cè)IPC提升非常明顯于是建議團(tuán)隊(duì)直接替換舊大核。結(jié)果老庫(kù)在32位兼容上出了問(wèn)題項(xiàng)目差點(diǎn)延期。后來(lái)我把“架構(gòu)框架”和“位寬兼容”強(qiáng)制設(shè)為表格的前兩列再也不敢跳過(guò)。第二個(gè)坑是緩存別名誤判。我把L2緩存當(dāng)成“所有核共享的同一個(gè)池子”實(shí)際去看緩存拓?fù)洳虐l(fā)現(xiàn)不同核心簇里的L2是分開(kāi)的L3才是共享層。多核并發(fā)時(shí)簇間的帶寬爭(zhēng)用模型完全不一樣?,F(xiàn)在做任何涉及多核并行評(píng)估我都會(huì)額外建一張“緩存拓?fù)鋫渥ⅰ绷?。第三個(gè)坑是紙面主頻誤導(dǎo)。官方IP的目標(biāo)頻率和SoC廠商實(shí)際鎖頻經(jīng)常差很多。同一顆A710在某家SoC里跑到2.85GHz在另一家可能被降到2.4GHz用于能效。表格里如果不區(qū)分“IP設(shè)計(jì)目標(biāo)”和“芯片實(shí)測(cè)值”兩列橫向比較就失真了。第四個(gè)坑是大小核切換代價(jià)被忽略。我在表格里看到A520非常省電、A720性能強(qiáng)勁就想當(dāng)然覺(jué)得任務(wù)應(yīng)該盡量跑在A720上。但實(shí)際測(cè)試發(fā)現(xiàn)從A520喚醒到A720的切換延遲和緩存冷啟動(dòng)損耗可能吃掉一大半省下來(lái)的功耗。后來(lái)我的表格里增加了一列“調(diào)度切換注意事項(xiàng)”專門記錄這種跨核心切換的隱性成本。還有一個(gè)補(bǔ)充坑工具鏈版本滯后。哪怕硬件支持SVE2老編譯器生成的代碼根本不會(huì)使用這些新指令性能也就無(wú)從談起。所以表格里最好把目標(biāo)編譯器版本和中止版本寫清楚。5.3 用腳本維護(hù)表格的輕量方案表格維護(hù)不需要花里胡哨的在線工具一個(gè)CSV文件加幾行Python腳本就很夠用。下面是我常用的篩選邏輯示例。import pandas as pd df pd.read_csv(cortex_a_table.csv) # 過(guò)濾 ARMv9 及以上的亂序核心 mask df[architecture].str.contains(v9) (df[execution] OoO) print(df[mask][[model, year, architecture, execution, ipc_relative]])再結(jié)合一個(gè)輸出Markdown的小函數(shù)表格就可以自動(dòng)生成、直接粘貼到文檔里# 輸出 Markdown 表格 selected df[mask].sort_values(year) print(selected[[model, year, architecture, execution]].to_markdown(indexFalse))腳本本身很簡(jiǎn)單真正的功夫在數(shù)據(jù)維護(hù)習(xí)慣上。我建議CSV里每列都加一個(gè)“數(shù)據(jù)來(lái)源”和“更新日期”字段至少對(duì)IPC、功耗、發(fā)射寬度這些關(guān)鍵參數(shù)保留來(lái)源鏈接和采集日期。這樣哪怕三個(gè)月后數(shù)據(jù)變了你也能回溯是哪個(gè)來(lái)源更新了而不是整個(gè)表格失去可信度。寫到最后一點(diǎn)體會(huì)吧。我在實(shí)際維護(hù)這張Cortex-A對(duì)比表的過(guò)程中發(fā)現(xiàn)真正能幫到選型的從來(lái)不是最完整的那一版而是被裁剪到剛好能回答當(dāng)前問(wèn)題的精簡(jiǎn)版。表格里的每個(gè)數(shù)值都應(yīng)該能在“為什么選它”這句話前面站住腳。如果你也在做處理器選型我建議你從官方白皮書開(kāi)始先把架構(gòu)框架和執(zhí)行模型這兩列填準(zhǔn)再去補(bǔ)其他參數(shù)。拿不準(zhǔn)的地方寧可留空也不要隨手抄一個(gè)來(lái)源不明的數(shù)字。每次發(fā)布新核心時(shí)第一件事不是背最高頻率而是看它對(duì)上一代的目標(biāo)IPC提升與功耗曲線。下一代對(duì)比永遠(yuǎn)比絕對(duì)數(shù)值更有信息量這也是我把整套表格體系建立在“相對(duì)變化優(yōu)先”這個(gè)原則上的原因。