器方案:從引腳到載板設(shè)計的實戰(zhàn)指南)
做了這些年嵌入式硬件我越來越感覺到一個趨勢服務(wù)器不一定要用那種巨大的ATX/EATX主板。COMe Type 7 Board for Entry-Level Servers也就是面向入門級服務(wù)器的COM Express Type 7模塊正在很多邊緣計算、網(wǎng)絡(luò)安全、輕量虛擬化和存儲場景里悄悄取代傳統(tǒng)服務(wù)器主板。我自己從最早接觸Type 6的工控板卡到后來把完整的服務(wù)器CPU、多路10GbE、RDIMM內(nèi)存塞進一個Maxi-ATX載板里中間踩了不少坑也真正體會到了這種模塊化方案的價值。這篇文章不打算講那種晦澀的規(guī)范條文而是從一個硬件工程師的實操角度把COMe Type 7從引腳定義、模塊選型、載板設(shè)計到整機落地的關(guān)鍵點都梳理一遍。如果你正準備做一臺體積小巧、IO可定制、又具備服務(wù)器級性能和可靠性的入門級服務(wù)器這篇文章應(yīng)該能幫你少走兩個月彎路。1. 服務(wù)器越做越小Type 7的模塊化思路剛好接住了這個需求1.1 為什么不用ITX服務(wù)器主板非要繞一圈用模塊化方案很多人第一個疑問就是我要做一臺小服務(wù)器買一塊ITX服務(wù)器主板不就行了確實市面上有不少mini-ITX的Xeon或者Ryzen服務(wù)器主板看起來體積小、接口全但你真的去做產(chǎn)品就會發(fā)現(xiàn)事情沒那么簡單。第一個問題是接口位置。標準主板把所有接口的位置、形態(tài)都固定死了。你的機箱結(jié)構(gòu)設(shè)計師會為了一個網(wǎng)口位置和主板I/O擋板較勁半天明明客戶要求前面板出四個千兆口可主板偏偏把網(wǎng)口做在了背部擋板。第二個問題是生命周期。商用主板從發(fā)布到停產(chǎn)一般只有兩三年對于服務(wù)器這種需要穩(wěn)定供貨三五年的產(chǎn)品來說項目做到一半CPU平臺換代的滋味可不好受。第三個問題是定制能力——BMC的監(jiān)控告警邏輯、串口調(diào)試接口的引出、電源時序的調(diào)整這些在標準主板上幾乎沒得談。COMe這種Computer-On-Module模塊化的思路本質(zhì)上就是把最復(fù)雜的CPU、內(nèi)存、電源管理、核心邏輯都做成一個統(tǒng)一接口的計算核心然后通過載板Carrier Board把IO引腳按照你的產(chǎn)品需求靈活引出。這個思路在工業(yè)控制領(lǐng)域已經(jīng)跑通了十幾年Type 7的出現(xiàn)等于把這套成熟模式搬到了入門級服務(wù)器賽道上。1.2 Type 7在COM Express家族里是什么位置COM Express規(guī)范里常見的有Type 2、Type 6、Type 10而Type 7是一個相對獨特的存在因為它的設(shè)計目標就是服務(wù)器級應(yīng)用。和Type 6相比Type 7砍掉了所有顯示相關(guān)信號把引腳預(yù)算讓給了網(wǎng)絡(luò)接口和PCIe通道。你可以在一個Type 7模塊上獲得最多4路10GbE具體取決于模塊設(shè)計、最多32條PCIe通道同時還能支持帶ECC的DDR4內(nèi)存。我印象中PICMG推出Type 7引腳定義的初衷就是看到邊緣計算和網(wǎng)絡(luò)設(shè)備市場對小型化服務(wù)器的需求越來越強。這類產(chǎn)品通常不需要顯示器輸出也不需要板載的一堆USB和音頻接口它們需要的是高密度的網(wǎng)絡(luò)吞吐、大容量內(nèi)存、可靠的遠程管理和靈活的PCIe擴展能力。Type 7把COM Express原本為嵌入式計算服務(wù)的定位精準地調(diào)整成了為服務(wù)器級應(yīng)用服務(wù)。1.3 模塊化帶來的第一個紅利CPU平臺升級不影響整機結(jié)構(gòu)這點我特別想強調(diào)。傳統(tǒng)服務(wù)器主板的CPU是直接焊在板子上的想升級平臺就得重新設(shè)計主板而COMe Type 7把CPU集成在模塊上載板只要管好接口和電源。也就是說你今天用一顆低功耗的Xeon D模塊明年產(chǎn)品要求算力翻倍換一塊同封裝的高性能模塊就行載板完全不用動。對于入門級服務(wù)器這個品類來說這個優(yōu)勢太實用了。邊緣側(cè)服務(wù)器的單臺利潤不高但出貨量往往比大服務(wù)器可觀控制研發(fā)周期和BOM成本非常關(guān)鍵。模塊化讓硬件團隊可以把精力集中在載板的功能差異化和軟件適配而不是每個項目都從CPU電源設(shè)計重新來一遍。2. Type 7引腳取舍透露出的設(shè)計哲學(xué)顯示沒用網(wǎng)絡(luò)和內(nèi)存才是服務(wù)器命根子2.1 和Type 6擺在桌面上對比差異是怎么分配的我之前幫客戶做過一塊載板開始按Type 6設(shè)計后來評估服務(wù)器應(yīng)用才改成了Type 7。對比兩張引腳定義表你會發(fā)現(xiàn)Type 6上那些DDI顯示接口、VGA、LVDS/eDP在Type 7上基本都消失了取而代之的是數(shù)量更多的PCIe通道和專用的10GbE SerDes引腳。從引腳預(yù)算來看Type 6把大量引腳分配給三路DDI顯示輸出Type 7直接把這些引腳釋放出來改成了支撐服務(wù)器生態(tài)的高速網(wǎng)絡(luò)和存儲接口。Type 7還保留了兩組甚至更多的SMBus和UART因為服務(wù)器運維大量依賴串口和帶外管理一個穩(wěn)定可用的調(diào)試串口比多一個HDMI接口重要得多。所以如果你拿Type 7當一塊普通工控主板來用會覺得它很不方便——沒有顯示接口USB數(shù)量也不多但你要是按服務(wù)器的思路來用它就會發(fā)現(xiàn)每一個引腳分配都踩在需求的點上。2.2 內(nèi)存子系統(tǒng)從板載顆粒到DIMM插槽整個量級就不一樣入門級服務(wù)器最容易被忽略但最不能妥協(xié)的就是內(nèi)存。很多嵌入式主板使用的是板載內(nèi)存顆粒容量做不大還沒法升級而Type 7模塊普遍支持SO-DIMM插槽甚至有的模塊設(shè)計了4條內(nèi)存槽位最大容量可以到64GB乃至128GB并且支持ECC內(nèi)存校驗。這一點對服務(wù)器意義重大。運行數(shù)據(jù)庫、虛擬化平臺或者長時間在線的網(wǎng)絡(luò)服務(wù)時內(nèi)存位翻轉(zhuǎn)導(dǎo)致的系統(tǒng)崩潰是真實存在的事故風(fēng)險ECC內(nèi)存能在硬件層面糾正單比特錯誤。Type 7把RDIMM的完整支持能力帶進了模塊化方案讓入門級服務(wù)器有了真正意義上的可靠性背書。我強烈建議選模塊時優(yōu)先看內(nèi)存約束如果產(chǎn)品定位是輕量NAS板載內(nèi)存加一條SO-DIMM就夠但如果要跑ZFS存儲或者虛擬化那就要選帶4條SO-DIMM槽位的模塊。而且要注意不同模塊對內(nèi)存頻率的支持差異很大有的Xeon D模塊只跑到DDR4-2133有的能跑到DDR4-2666這個參數(shù)會直接影響內(nèi)存帶寬在存儲和高網(wǎng)絡(luò)負載場景下體感非常明顯。2.3 4路10GbE怎么理解模塊引出的不是網(wǎng)口而是靈活性很多人聽到Type 7支持4路10GbE下意識以為模塊上自帶四個萬兆電口其實不是這樣的。COMe Type 7模塊引出的通常是10GbE的SerDes高速信號真正的物理層PHY芯片和RJ45或者SFP連接器放在載板上。這個設(shè)計其實是一個非常聰明的做法。因為10GbE的PHY方案五花八門——有人用10GBase-T電口有人用SFP光口還有的客戶堅持用AOC有源光纜。模塊把物理層開放給載板設(shè)計者意味著你可以按產(chǎn)品形態(tài)自由選擇網(wǎng)絡(luò)接口類型同時也把PHY的發(fā)熱量從核心計算區(qū)域挪到了機箱邊緣的散熱區(qū)域。我實際做的第一塊Type 7載板就踩過PHY發(fā)熱的坑4路10GBase-T的PHY滿載時候板卡局部溫度直接沖到100度以上。后來我們重新調(diào)整了PHY的位置、加了散熱片和風(fēng)道設(shè)計整機溫度才壓住。如果你用的是Type 7無論選什么PHY一定要在初始布局階段就把散熱規(guī)劃進去不要等畫完板再補散熱方案。3. 從模塊到一臺整機我設(shè)計入門級服務(wù)器時走過的完整推演3.1 CPU與內(nèi)存選型先定TDP再看平臺Type 7模塊目前市場上能買到的方案主要以x86平臺為主從低功耗Atom到Xeon D都覆蓋了。選擇的原則非常簡單先確定你的整機能承受多高的散熱功耗再在這個功耗傘下選擇計算核心。如果做的是無風(fēng)扇緊湊型設(shè)備模塊TDP建議控制在25W到45W之間這類模塊一般使用Atom或者低功耗Xeon D。這個級別滿足入門級服務(wù)器的基本需求沒問題跑跑虛擬化、輕量數(shù)據(jù)庫、網(wǎng)關(guān)應(yīng)用都夠用。如果有風(fēng)扇或者機箱散熱設(shè)計得比較激進可以選65W以內(nèi)的標準Xeon D甚至更上一檔的處理器算力提升還是很明顯的。內(nèi)存方面我一般建議入門級產(chǎn)品至少配16GB跑虛擬化就32GB起步。模塊選擇上要注意有些Type 7模塊只支持SO-DIMM有些則支持SO-DIMM加板載內(nèi)存的組合。板載內(nèi)存的好處是固定的基礎(chǔ)容量不會少壞處是如果出廠配置沒選對后面很難調(diào)整。所以在物料選型階段盡量和模塊廠確認清楚這個模塊支持的內(nèi)存密度和顆粒型號別只看標稱最大容量。3.2 載板設(shè)計里最容易翻車的幾個環(huán)節(jié)逐個排雷3.2.1 供電架構(gòu)不是按模塊功耗算的是按瞬態(tài)電流算的載板最基礎(chǔ)的工作就是給模塊供電但很多新手會按照模塊的典型功耗來設(shè)計電源。實際上一顆服務(wù)器CPU在負載跳變的瞬間電流變化率非常陡如果電源響應(yīng)速度跟不上就會導(dǎo)致電壓跌落輕則系統(tǒng)重啟重則燒毀存儲盤。我一般按模塊最大功耗的1.5倍余量來設(shè)計載板供電同時要特別關(guān)注電源模塊的負載瞬態(tài)響應(yīng)指標。模塊廠商的Design Guide文檔里通常會給參考電源方案強烈建議嚴格按照參考設(shè)計來做不要自己隨便改環(huán)路補償。這塊我吃過虧改過一顆電容導(dǎo)致整板在高溫下電源紋波超標查了將近一周才定位到。3.2.2 PCIe通道分配要提前把Bifurcation摸清楚Type 7模塊支持最多32條PCIe通道但通道怎么用完全取決于載板設(shè)計。你可以做成兩路x16插槽也可以拆成多個x4、x8的組合。真正決定拆分上限的是模塊上CPU自帶的PCIe控制器支持哪些Bifurcation模式。用Xeon D這類平臺時PCIe控制器的拆分能力非常靈活基本上你想拆成x4或者x8都可以。但你要注意PCIe Gen3和Gen4的信號完整性要求載板上連接器的走線長度、過孔設(shè)計、AC耦合電容位置都得遵循高速設(shè)計規(guī)范。我見過一塊載板隨便一拉線就跑不上去PCIe Gen3 x8最后通過加寬差分間距、減少過孔才解決問題。3.2.3 上電時序服務(wù)器類的坑和普通嵌入式不一樣普通工控板的上電時序一般是標準ATX時序而COMe Type 7模塊對載板的電源上電順序有明確要求特別是多個電源軌之間的先后關(guān)系以及和模塊上電源管理芯片的握手信號。服務(wù)器應(yīng)用還有一個額外要求系統(tǒng)需要支持看門狗和遠程管理這要求備用電源域Standby Power和主電源域的時序切換做得非常干凈。我建議在做載板原理圖的時候就把時序邏輯畫成一張狀態(tài)表貼在工位上每一路電源從使能到Power Good的時間點都標清楚這樣調(diào)試時會省很多事。3.3 散熱和結(jié)構(gòu)直接決定入門級服務(wù)器能穩(wěn)定跑多久COMe模塊的散熱方式很典型就是通過模塊上的散熱板把熱量傳導(dǎo)到機箱外殼或者散熱器。Type 7模塊因為CPU性能更強散熱設(shè)計更要仔細。模塊廠商一般會給散熱器參考設(shè)計里面包括固定孔位、高度限制、受力要求你設(shè)計的散熱片必須嚴格按這個規(guī)格來做否則可能導(dǎo)致CPU接觸壓力不均熱點燒穿硅脂。我見過最典型的失誤是有人直接用一顆通用的大散熱片壓住整個模塊結(jié)果模塊上一塊BGA芯片被壓裂了。正確的做法是先確認模塊上有哪些發(fā)熱區(qū)域再按照模塊廠商的散熱設(shè)計指南定制散熱器和固定背板確保壓力均勻分布在規(guī)定區(qū)域內(nèi)。風(fēng)道方面入門級服務(wù)器如果放在標準機柜里要注意前后風(fēng)道方向的一致性。載板上的PHY、PCIe Switch、內(nèi)存條都是發(fā)熱大戶別讓它們成為風(fēng)道死角。3.4 固件和BSP模塊化服務(wù)器的隱藏成本項Type 7模塊不是拿來就能跑操作系統(tǒng)的它和整機之間還隔著固件適配這道坎。模塊廠商會提供支持自己模塊的BSP和BIOS/UEFI但載板上的很多外設(shè)芯片需要你或者模塊廠商幫忙在BIOS里做初始化配置。特別是BIOS選項里跟載板相關(guān)的內(nèi)容——網(wǎng)口PHY的型號配置、PCIe端口使能、BMC的SMBus地址——這些如果不在固件層做好適配系統(tǒng)起來之后會發(fā)現(xiàn)某個網(wǎng)口認不到或者PCIe設(shè)備工作不穩(wěn)定。你現(xiàn)在看到模塊化方案總覺得模塊插上就能用實際上在項目啟動時你就得把模塊廠商拉進來一起做固件適配評估這個成本不能省。我個人的建議是選模塊時盡量選在本地有研發(fā)支持團隊的品牌因為固件適配、調(diào)試這類問題靠郵件和LiveChat來回溝通效率非常低能直接打一個電話找到研發(fā)工程師的模式在項目交付階段會救你很多次。4. 幾套我實測過的入門級服務(wù)器配置拿來就能抄4.1 三套典型配置對比為了讓大家好理解放三套我實際測過或者接觸過的方案分別對應(yīng)三種不同側(cè)重點。配置模塊形態(tài)內(nèi)存配置網(wǎng)絡(luò)配置PCIe擴展典型功耗邊緣網(wǎng)關(guān)系列低功耗Atom級模塊16GB DDR4 ECC SO-DIMM4路千兆電口2個PCIe x4插槽約35W輕量虛擬化節(jié)點Xeon D低功耗模塊64GB DDR4 ECC4路千兆 SFP管理口2個PCIe x8插槽約65W入門級存儲服務(wù)器Xeon D標準功耗模塊128GB DDR4 ECC2路10GBase-T1個PCIe x16插槽接HBA卡約85W這套配置基本覆蓋了入門級服務(wù)器最常見的三個應(yīng)用方向。邊緣網(wǎng)關(guān)追求低功耗和緊湊體積輕量虛擬化節(jié)點追求內(nèi)存容量和IO平衡存儲服務(wù)器追求大內(nèi)存、高帶寬網(wǎng)口和PCIe HBA卡擴展。4.2 物理性能表現(xiàn)到底怎么樣我重點說下輕量虛擬化節(jié)點這臺的實測感受。用ESXi跑幾個Windows和Linux虛擬機日常負載下整機功耗穩(wěn)定在60W上下CPU溫度在散熱設(shè)計得當?shù)那闆r下可以控制在65度左右。萬兆存儲這臺在滿速讀寫時2路10GBase-T的網(wǎng)絡(luò)吞吐基本能跑滿PCIe x16插槽上的HBA卡穩(wěn)穩(wěn)工作。需要注意的是這些數(shù)據(jù)看著不難但每一項背后都是載板設(shè)計的功力。比方說萬兆存儲配置對PCIe信號質(zhì)量的要求很高HBA卡作為PCIe設(shè)備反而相對穩(wěn)定真正不穩(wěn)定的是10G PHY那顆芯片的高溫閾值。我在測試中遇到過PHY溫度到95度后網(wǎng)口自動降速的情況這是散熱設(shè)計不到位導(dǎo)致的。4.3 實測中冒出來的那些坑我一一說給你聽4.3.1 SMBus地址沖突導(dǎo)致BMC讀取溫度異常這臺設(shè)備在驗證過程中出現(xiàn)了一個很隱蔽的問題BMC采集到的CPU溫度一會兒正常一會兒跳變到極端值。查了三天最后發(fā)現(xiàn)是載板上一個溫度傳感器的I2C地址和CPU內(nèi)部的地址沖突導(dǎo)致BMC讀到了錯誤的數(shù)據(jù)。解決方案倒不復(fù)雜換掉傳感器地址跳線或者在驅(qū)動層屏蔽沖突設(shè)備就行。但你得知道這類I2C地址沖突在帶BMC的服務(wù)器系統(tǒng)里非常常見規(guī)劃階段最好整理一張I2C地址分配表把模塊內(nèi)設(shè)備和載板外設(shè)的地址統(tǒng)一規(guī)劃好。4.3.2 PCIe時鐘芯片不夠用導(dǎo)致擴展卡時好時壞另一塊載板設(shè)計時PCIe槽位比較多我沒細算時鐘緩沖器的輸出路數(shù)結(jié)果有一個PCIe插槽時能識別時不能識別。排查下來發(fā)現(xiàn)是時鐘信號分配不足某個插槽的Reference Clock是懸空的PCIe協(xié)商不完整。后面用了帶多路輸出的專用PCIe時鐘緩沖器所有插槽共用一路100MHz參考時鐘問題就沒了。所以做載板的時候一定要把PCIe Reference Clock的拓撲從第一版原理圖開始就設(shè)計清楚不要等Layout完再補救。4.3.3 10GBase-T PHY的散熱不止看功耗還要看負載率這塊和前面的散熱問題呼應(yīng)一下。10GBase-T PHY在跑滿速時功耗非常高但如果你只測待機功耗永遠測不出問題。做散熱驗證時一定要跑滿速雙向流量長時間穩(wěn)定運行后再測表面溫度。這是很多人容易忽略的——待機正常不代表滿載可靠。5. 什么情況下選COMe Type 7什么情況下老老實實買標準服務(wù)器主板5.1 COMe Type 7的優(yōu)勢不是更便宜而是更可控模塊化的前期成本其實不低一塊 Type 7 模塊的采購價甚至可能接近一塊完整的主板所以如果你的量不大又想省事老老實實買標準主板還真沒毛病。COMe Type 7的核心價值體現(xiàn)在三個方面第一是定制化IO??蛻粝胍懊姘宄隽鶄€千兆電口還要兩個SFP這種接口組合在標準主板上幾乎找不到但載板設(shè)計一次就解決了。第二是生命周期。模塊和載板分離你甚至可以同一塊載板適配兩代模塊客戶技術(shù)升級時不用換整個硬件平臺。第三是環(huán)境適應(yīng)性。工業(yè)級寬溫模塊、抗振動載板設(shè)計這些在標準服務(wù)器主板里根本不會考慮。5.2 什么場景我反而不建議用Type 7如果你做的產(chǎn)品是標準1U/2U機架式服務(wù)器客戶沒有特殊IO要求也不在意體積那直接采購標準服務(wù)器主板更合適。理由很簡單標準主板的成本攤得很薄售后和大規(guī)模部署的經(jīng)驗也成熟你不是非要為了模塊化而模塊化。另外如果你的團隊沒有高速數(shù)字電路設(shè)計經(jīng)驗也沒有條件做一個可靠的載板我建議認真評估一下外購載板的方案。市面上其實有不少廠商做現(xiàn)成的Type 7載板接口組合正好覆蓋通用的服務(wù)器應(yīng)用拿回來配合標準機箱使用可以省掉一大筆開發(fā)成本和調(diào)試時間。我自己見過一個團隊明明沒有射頻和高速設(shè)計經(jīng)驗非要自己從零做載板結(jié)果板子改了三個版本才穩(wěn)定下來算下來成本比外購方案高了不止一倍。Type 7的分層設(shè)計理念是想讓你更靈活而不是逼著你什么都要自己做。5.3 供應(yīng)鏈和生命周期是選型時要算的另一筆賬做服務(wù)器產(chǎn)品的人對CPU平臺的Availability周期都很敏感。傳統(tǒng)服務(wù)器主板往往跟著CPU平臺走平臺一換代主板也很快停產(chǎn)。COMe Type 7模塊的一個隱形好處是模塊廠商有更長的供貨承諾有的品牌能保證5年甚至7年的供貨周期。這對于醫(yī)療、交通、能源這些需要長期維護的行業(yè)來說是實打?qū)嵉纳虡I(yè)價值。但要注意長周期依賴于模塊廠商的運營能力簽約前務(wù)必要把模塊的停產(chǎn)通知周期、最后一個訂購窗口、替代模塊的兼容性寫進協(xié)議。我建議物料選型時在大批量交付前先鎖定至少兩家的替代方案避免被單一供應(yīng)商卡脖子。一些壓箱底的體會做了這么多年硬件我最大的一個感受是COMe Type 7“Board for Entry-Level Servers”這個定位名字里最關(guān)鍵的反而是Entry-Level這個詞。它不追求頂級算力不追求超大規(guī)模的存儲陣列它做的事情就是把服務(wù)器級別的可靠性和擴展能力用模塊化手段做小做輕讓更多產(chǎn)品形態(tài)能夠輕松擁有服務(wù)器基因。如果你現(xiàn)在正準備做一臺邊緣服務(wù)器、一臺高密度網(wǎng)絡(luò)設(shè)備或者一塊長得像工控機但骨子里是服務(wù)器的定制硬件那么COMe Type 7值得你花一周時間認真研究。它能不能成為你的標準架構(gòu)取決于你的場景是否真的需要那種“靈活但需要自己動手”的載板定制。但可以肯定的是這種把核心算力標準化、把IO差異化的思路會是未來入門級服務(wù)器設(shè)計的長期主流方向之一。