近年因人工智慧、機器學習和深度學習等高算力應用需求帶動AI/ML伺服器及儲存伺服器等製造商的快速發展,高算力所產生的資料流(data streaming)傳輸會佔用大量的介面傳輸頻寬。針對AI/ML伺服器為使其達到最佳使用效率,工程師在設計具有算力加速卡的系統架構時除了考慮需要擴展的PCIe®裝置數量外,亦須思考如何讓資料流傳輸更有效率及降低其延遲(latency)。
伺服器進行遠端管理對企業來說相當重要,在常見的伺服器架構中會放置Board Management Controller(BMC)電路。當系統發生非預期的失效時,工程師則可透過遠端網路連線至BMC對系統進行管理及修復。
Microchip Switchtec™ Switches提供了兩種硬體管理介面,讓架構師或工程師在規劃系統架構時,具有相當大的設計彈性。
一、 In-band:PCIe, NVMe-MI
二、 Out-of-band(OOB):TWI(Two-Wire Interface),UART,Ethernet
Microchip DCS技術支援工程師與客戶協同開發的過程通常都會建議客戶除了in-band外,至少將Switchtec TWI連接至BMC I2C。當硬體介面建立後,工程師就可以將Switchtec-user utility安裝於BMC的Linux®作業系統中。
Switchtec-user utility為開源軟體(open source),並存放於GitHub平台。雖然是開源軟體,但Microchip DCS應用工程團隊仍會針對非RC版本在驗證板 (evaluation board)上進行測試,以確保所有的Switchtec Switches能夠正確地被識別。如此,不僅讓客戶能保有自行修改程式的彈性,針對Release版本具有相當的可信度。
Switchtec Switches提供多種用於管理PCIe Switches的連接管道。此PCIe Switches的架構包括一個名稱為Global Address Space(GAS)的統一實體(圖一),用於執行對PCIe Switches USP和DSP的PCIe配置暫存器(PCIe configuration space)的讀取和寫入作業。
透過此架構,無論連接類型是In-band或是Out-of-band,都為使用者提供了與裝置管理功能進行通訊的通用方式。同時,Switchtec Switches提供精細的安全框架,以基於每個連接類型限制對PCIe Switches管理功能的訪問,而實現靈活的安全方案。
●Switchtec-kernel係將軟體應用層及Switchtec硬體連結。
註:Switchtec技術在Linux OS中使用的是in-box driver,而與Switchtec-kernel無關。
●Switchtec-user為Switchtec Switches的管理指令集。
以下筆者將透過PCIe in-band的方式對Switchtec PCIe Gen5 Switches查看韌體(Firmware)版本及PCIe Switches的溫度,展示如何透過Switchtec-user對PCIe Switches進行訪問操作
1.使用者須先透過Microchip專屬的ChipLink™應用程式開啟PCIe Switches的Management EP功能。
2.透過PCIe in-band方式對Switchtec Switches進行管理
在Linux中輸入lspci命令查看Switchtec Switches,此時可以發現PCIe bus列出一個名為”Memory controller: PMC-Sierra Inc. Device 5000”的裝置(圖四)。
3.使用者在Linux中將Switchtec-kernel安裝成功後,查看/dev目錄下會掛載一個名稱為switchtec0的裝置。
4.切換至/switchtec-usr目錄下,使用root權限輸入./switchtec list查看所有在板上且有開啟Management EP的Switchtec PCIe Switches(圖六)。
5.讓我們來讀取PCIe Switches的die溫度(die temperature),使用者可使用 ./switchtec temp命令進行操作(圖七)。
但此時卻發現無法正確被執行。為什麼呢?原來是因為系統有可能會設計多個PCIe Switches在板上。因此,每一個PCIe Switch都會被掛載為一個裝置,所以使用者要記得加上裝置的路徑。若忘記也別擔心,Microchip Switchtec-user會提示正確的語法及其他相關的功能參數。
現在,我們依照語法建議修正為 ./switchtec temp /dev/switchtec0 即可得到正確的die溫度資訊(圖八)。
6.接下來,我們再利用一個簡單的語法查看目前PCIe Switches的韌體(firmware)版本(圖九),使用者只要輸入 ./switchtec fw-info /dev/switchtec0。
者用以上兩個非常簡單且實用的命令快速地讓讀者了解如何在Linux系統中操作Switchtec-user, 當然,Switchtec-user的功能絕不僅於此,使用者可以使用 ./switchtec /help 查看所有可以使用的命令(圖十),有經驗的使用者可以發現Switchtec-user就像是一個文字介面版本的ChipLink吧!
使用者在將Switchtec-kernel及Switchtec-user嵌入至BMC前,可以PCIe in-band方式或是透過外部USB-to-TWI/I2C Master方式(USB-to-UART/I2C控制器可參考Microchip MCP2221A與Switchtec Switches進行連線並)使用Switchtec-user utility進行前期驗證。以下示意使用外部I2C TWI/ Master控制器對Switchtec-user utility的連接方式(圖十一),以及需備妥的軟硬體項目。
●安裝Linux的主機系統(Host)
●TWI/I2C Master控制板
●具有Switchtec Switches的硬體電路板
那使用者要怎麼應用於BMC的連接呢? 下圖紫色虛線區塊就是由BMC控制器代替的部分(圖十二),最終使用者只需要將BMC I2C連接到Switchtec Switches的TWI0(預設)即可。
礙於篇幅,筆者無法將Switchtec-user所有強大的功能詳細地向讀者們詳述,若尚未使用Switchtec Switches的讀者也可訪問以下Microchip產品網頁或掃瞄QR碼,或直接洽詢您的Microchip業務窗口,以獲得您系統需求的最佳解決方案。
https://www.microchip.com/en-us/solutions/data-centers-and-computing/data-center-solutions
本文作者為:Microchip主任應用工程師 徐愷駿