解文軍,李仁剛,韓大峰,張晶威,劉鐵軍
(浪潮(北京)電子信息產業有限公司 體系結構研究部,北京 100085)
Smart NIC即智能網卡,其核心是通過FPGA(現場可編程門陣列)協助CPU處理網絡負載,將網絡虛擬化、負載均衡和其他低級功能從服務器CPU中移除,確保為應用提供最大的處理能力。與此同時,智能網卡還能夠提供分布式計算資源,使得用戶可以開發自己的軟件或提供接入服務,從而加速特定應用程序。
從系統結構上看,智能網卡通常以PCIE(Peripheral Component Interconnect Express) 接口插卡的形式與服務器配合使用,PCIE是主要的業務數據傳輸通道。而服務器對智能網卡的管理,則是通過網絡控制器邊帶接口(Network Controller Sideband Interface,NCSI)[1]來實現。
以往的服務器都是沒有為某種特殊服務專門設計的、可以提供各種服務功能的服務器,即通常所說的通用服務器。最近幾年,隨著云計算、大數據、人工智能等新興技術發展,對服務器的需求越來越大,不同業務對服務器要求各不相同,如以存儲業務為主的公司需要存儲型服務器,對數據的安全要求也很高,有冗余備份、災難恢復等功能。在人工智能計算領域,大量的數據會從網絡輸入,利用智能網卡直接對數據進行必要的處理,可以很大程度減輕CPU的負荷。在大數據及邊緣計算領域,海量的數據會從網絡輸入,利用智能網卡直接對數據進行必要的處理,可以很大程度減輕CPU的負荷。
無論是通用服務器還是定制服務器,設計時會留出多個不同位置的PCIE插槽,以匹配客戶的差異化需求。而對于PCIE形態的智能網卡來說,插在不同槽位意味著與主機端通信時不同的NCSI線纜長度。況且服務器設計者往往也對智能網卡上的走線情況一無所知,不同廠家的智能網卡走線也會差異很大。同樣當智能網卡搭配不同服務器時,不同服務器廠商的NCSI鏈路參數會有很大不同。雙方都無法考慮如何設計整個NCSI接口電路才能保證在不同環境下接口功能的可靠運行。
本文立足整個NCSI接口總體架構,從系統整體、服務器主板端、線纜與連接器、智能網卡端四個部分討論了如何設計一個可靠的NCSI接口鏈路,該設計方案已經應用于多款服務器與智能網卡產品,所有產品均順利通過了NCSI接口功能測試、數據傳輸壓力測試、信號完整性測試與電磁兼容測試等多項嚴格產品測試要求。
互聯網技術的飛速發展使得工程師們對于服務器的帶外可管理性及可控制性提出了更高的要求。通過帶外管理,工程師可以在任意地點通過網絡連接到相應的服務器上,進行一系列的管理與維護,而不再需要長時間駐守在嘈雜的機房或實驗室環境中。NCSI(Network Controller Sideband Interface)就是一個由分布式管理任務組(Distributed Management Task Force,DMTF)定義的用于支持服務器帶外管理的邊帶接口網絡控制器的工業標準。
NCSI接口的物理拓撲如圖1所示。

圖1 NCSI接口物理拓撲圖
圖1中,TXD[0:1]為管理控制器MC的兩路發送數據線,TX_EN為發送使能信號線,RXD[0:1]為MC兩路接收數據線,CRS_DV為載波偵聽及接收數據有效信號,REF_CLK為參考時鐘信號,頻率為50 MHz,信號傳輸方向如圖中箭頭所示。在本文服務器環境中,管理控制器MC是位于服務器主板上的基板管理控制器芯片BMC,而網絡控制器NC是位于智能網卡上的網絡芯片,走線包括印制電路板(PCB)和線纜,走線阻抗[2-3]控制為50 Ω。
系統總體設計主要有兩方面內容,第一是時鐘模式的選擇;第二是總體時序設計。
服務器主板上NCSI接口集成在BMC芯片中,該接口有兩種時鐘模式:內部時鐘模式和外部時鐘模式,如圖2和圖3所示。內部時鐘模式的50 MHz的時鐘信號來自于BMC芯片,根據BMC芯片數據手冊[4-5],該模式下TXD等數據信號可以支持的最長走線長度為10英寸。外部時鐘模式的50 MHz時鐘信號來自外部晶振,并需要時鐘緩沖(Buffer)芯片,該模式優點是可以支持TXD信號走線總長度達20英寸。由于僅服務器主板上走線一般在10英寸以上,因此需要采用外部時鐘模式。但兩種模式下RXD信號的走線長度都取決于NCSI芯片。

圖2 內部時鐘模式

圖3 外部時鐘模式
NCSI鏈路采用外部時鐘模式是一種基于共同時鐘的數據傳輸拓撲,服務器主板的BMC數據接收端和NCSI PHY數據接收端,均需要滿足數據傳輸的建立及保持時間要求[6]。
數據通路單向傳輸的拓撲如圖4所示。圖5為共同時鐘的建立及保持時序關系圖。在時序關系圖中:時間間隔1表示時鐘buffer輸出的時鐘偏斜Tskew,此參數作為系統時序關系作為最差時序關系處理;時間間隔2表示時鐘buffer至驅動端的飛行時間,即Tclk_driver_flight;時間間隔3表示時鐘buffer至接收端的飛行時間,即Tclk_receiver_flight;時間間隔4表示驅動端芯片被時鐘觸發后,數據傳輸至IO總線的時間,即Tdata_out;時間間隔5表示傳輸方向數據的飛行時間,即Tdata_flight。Tsu是接收端芯片所需的數據建立時間;Thd是接收端芯片所需的數據保持時間;Tsu_margin是數據滿足建立時間要求后的裕量;Thd_margin是數據滿足保持時間要求后的裕量;Tcycle是NCSI協議的時鐘周期。

圖4 數據單向傳輸拓撲圖
對系統的建立時間要求,是在數據發出后的第二個時鐘的上升沿,接收端滿足建立時間,故其建立時間約束,需滿足式(1):

對系統的保持時間而言,是在接收端的下一拍采樣時鐘時延小于數據的整個時延,否則造成本拍保持數據與下一拍到來數據沖突。即滿足式(2):

圖5 建立及保持時序關系圖

對系統而言,需要考慮系統時序關系最劣化情況的參數約束,式(1)與式(2)中包含系統電路板級參數(PCB走線和連接線纜)這部分參數相對穩定。
而芯片參數需要在計算建立時間時代入芯片的最大值,計算保持時間時代入芯片的最小值[7],進行系統最差情況的分析。
系統確定采用外部時鐘模式時,要注意兩點:
第一要注意外部時鐘及緩沖電路在主板上擺放位置,要滿足時鐘信號到BMC和NCSI芯片的偏移(skew)盡量小,滿足小于NCSI協議要求的1.5 ns。因此需要總體考慮線纜長度和智能網卡上的走線長度。
第二是時鐘緩沖芯片輸出阻抗一般較低,需要增加一個串聯匹配電阻,以實現和走線的50 Ω 特征阻抗匹配,而且盡量靠近時鐘緩沖芯片擺放,否則會由于信號反射造成最高電壓超過要求。圖6為串聯匹配電阻擺放在不同位置時使用芯片IBIS[8]模型對時鐘信號波形仿真結果圖,其中有兩個尖峰的波形為匹配電阻遠離時鐘緩沖芯片波形,沒有尖峰的波形為串聯匹配電阻靠近時鐘緩沖芯片的波形。

圖6 時鐘串聯匹配電阻在不同位置時時鐘波形仿真圖
此外,對于TXD和TX_EN信號,為了減小信號的震蕩,需要在靠近BMC芯片端增加33 Ω 左右的串聯電阻。同時為了保證建立和保持時間等時序要求,要保證TXD0、TXD1和TX_EN三個信號走線盡量等長,長度差最好小于0.2英寸,RXD0、RXD1、CRS_DV三個信號走線盡量等長,長度差最好小于0.2英寸。
為了保證整個NCSI接口走線一致性,線纜需要滿足特征阻抗50 Ω 的要求,一般需要采用同軸線或者類似同軸線的阻抗控制線。
圖7為業界廣泛使用的一種可控阻抗線纜的截面圖,這是一種類似同軸線的結構,阻抗控制50 Ω,內導體Conductor連到連接器的相應信號管腳,外導體Wrap及Drain連接到地管腳,導體和Drain均為鍍錫銅線,外包裹Wrap材料均為兩層麥拉,內層為含鋁麥拉,起接地和屏蔽功能,外層為普通麥拉,起絕緣和保護作用。組裝的主要工藝步驟包括剪線,焊接連接器,焊接完成使用萬用表測試連通性,最后包一層絕緣保護膜等。

圖7 線纜的截面圖
連接器設計的關注點主要在信號與地管腳的分配,由于連接器往往是一個阻抗不連續點,容易造成信號間的干擾和電磁輻射[9],因此最好做到信號管腳和地管腳比例為1:1,而且信號與地管腳交替分布,在與線纜進行組裝時,線纜內導體接信號管腳,Drain線及導電Wrap層接相鄰的地管腳,避免兩個線纜的Drain及導電Wrap連到同一個地管腳。
圖8是典型智能網卡的原理框圖,主芯片包括FPGA芯片、網絡控制器NC芯片及10顆16 bit的DDR4[10]存儲芯片,FPGA與NC芯片之間通過16路傳輸速率為8 Gb/s的PCIE 3.0[11]接口互聯。FPGA連接兩路72位,傳輸速率為2 400 Mb/s共16 GB的DDR4存儲器顆粒,并通過16路速率8 Gb/s的PCIE 3.0高速接口連接到金手指(Gold Finger)[12],再插到服務器上。網絡控制器芯片NC通過兩個各由4路25 Gb/s[13]組成的100 Gb/s鏈路到QSFP28[14-16]連接器,再經光模塊連接到交換機。負責網絡控制器管理的NCSI接口經過連接器和線纜連接到服務器主板上連接器,再經過主板上走線到基板管理控制器BMC芯片。

圖8 智能網卡原理框圖
如前面服務器側設計所述,BMC發出的TXD及TX_EN信號最大驅動能力可以支持20英寸走線,但是RXD及CRS_DV信號可以支持的走線長度取決于智能網卡上的NCSI芯片。根據NCSI標準,芯片廠家只要能支持12英寸走線即為符合標準,而僅服務器主板上就達10英寸以上,線纜長度大多也在10英寸以上,再加上智能網卡上的走線,所以整個鏈路的長度大多都在20英寸以上,因此必須對所有信號增加緩沖芯片進行增強,才能保證整個接口的穩定可靠。NCSI接口智能網卡側的原理框圖如圖9所示。

圖9 智能網卡側的NCSI接口原理框圖
在圖9中,緩沖芯片Buffer位于連接器和NCSI芯片之間,但是在實際是在印制電路板上,緩沖芯片擺放位置需要根據NCSI芯片的驅動能力和智能網卡上NCSI信號走線長度來確定,如果走線長度小于12英寸,此時在NCSI標準規定的負載長度內,只需將緩沖芯片盡量靠近連接器端放置即可,這也是大多數智能網卡都滿足的情況。如果智能網卡上NCSI信號走線長度大于12英寸,需要進一步和NCSI PHY芯片廠家確認能支持的走線長度,緩沖芯片要放置在NCSI PHY芯片支持的走線長度范圍內。也就是說緩沖芯片的擺放要同時滿足服務器主板對TXD及TX_EN芯片的20英寸的要求,又要滿足NCSI PHY芯片對RXD及CRS_DV的要求。
為了進一步降低成本,可以對每個信號在緩沖芯片兩端跨接一個0 Ω 電阻,以圖10中時鐘信號CLK為例。這種方案在走線長度超過芯片驅動能力時,電阻不焊接,保留緩沖芯片,當總體走線長度都在芯片驅動能力范圍內的情況,此時緩沖芯片就可以不焊接,保留電阻。

圖10 緩沖芯片跨接電阻原理框圖
但是這種方案在印制電路板走線時要注意,跨接電阻最好與緩沖電路背對背放置,如緩沖芯片放正面,電阻放反面,使連到跨接電阻的走線盡量短,否則即容易造成電磁干擾問題,也會對信號本身帶來不利影響。
本文從系統整體、服務器主板側、線纜與連接器和智能網卡側四個方面,詳細闡述了整個NCSI接口設計要注意的主要問題,主要包括四方面:
(1)在系統時,主要關注系統時鐘模式的選擇及時序設計,滿足系統對建立及保持時間的要求。
(2)在服務器主板設計時,時鐘信號匹配電阻位置對信號質量影響很大,同時注意信號間等長問題。
(3)線纜和連接器部分,主要注意信號和地管腳的比例及線纜和連接器組裝時線纜接地導體要就近焊接到地管腳,不允許兩個線纜的接地導體焊接到同一個地管腳,否則容易造成信號間的干擾。
(4)智能網卡設計時,可以增加緩沖芯片以增加NCSI PHY芯片的驅動能力,同時注意緩沖芯片的擺放位置,對于總體走線較短的鏈路,可以使用跨接電阻,不焊接緩沖芯片進一步降低成本。
NCSI接口時鐘為50 MHz,數據速率只有100 Mb/s,但稍有不慎很容易出問題,一方面是因為服務器和智能網卡設計時,都不知道對方走線長度及芯片驅動能力;另一方面是該頻段內,普通的電氣工程師缺乏高速高頻的知識,意識不到可能出問題的地方,而對于專門的高速信號完整性工程師而言,更多關注1 Gb/s以上高速差分信號,容易遺漏。常見的三維電磁場仿真軟件在幾十兆赫茲的相對低頻段內主要通過線性外推得到結果,仿真誤差較大,今后需要重視該頻段內的仿真和測試擬合問題。此外,電路原理圖設計正確只是第一步,印制電路板上元件的布局布線也會嚴重影響產品功能,一件成功的產品是電路設計、布局布線、散熱、機械等多方面共同成果,尤其對于可靠性要求很高的企業級產品更是如此。