作者:萊迪思半導體,Shyam Chandra 高可用性系統,如服務器、通信網關和基站等需要持續工作。一旦現場安裝后,就需要通過軟件升級來增強系統功能和修復錯誤。因此,這些系統設計需可以在不中斷其正常運行的情況下進行系統功能更新。可編程邏輯器件(PLD)常被用于支持在系統設計更新。使用PLD的改進后的設計成本更低、使用更方便、性能更強,使得可編程邏輯器件成為這些系統中理想的板上硬件管理器件,可管理板上DC-DC轉換器、監測和控制關鍵信號、集合串口通信并執行其他內務管理功能。 不可或缺的PLD PLD包含一系列可編程功能單元。這些單元的配置和互連實現了板上特定的硬件管理功能。通常情況下,一個軟件設計工具將某個邏輯功能,如電路板硬件管理,轉換為特定PLD的配置位流,用于配置可編程功能單元和互連。配置位流被存儲在可編程邏輯器件的片上配置閃存。當電路板上電后,配置閃存中的內容被自動傳輸到其片上配置SRAM,從而配置可編程功能單元執行所需的硬件管理任務。更新硬件管理功能,可使用不同的位流通過后臺隨時加載到配置閃存,無需中斷可編程邏輯器件正在執行的硬件管理功能。將新存儲到閃存的配置傳到片上SRAM,電源重啟中斷系統的正常運行(圖1)。 圖1:大多數PLD必須等待電源重啟進行重新配置 在配置過程中保持穩定的輸出 高可用性系統不能容忍電源重啟導致的中斷。由于通過可編程邏輯器件的I/O使能板上主ASIC和CPU上的DC-DC轉換器和控制復位信號,在重配置過程中可編程邏輯器件的輸出需保持不變。需要在PLD重配置時保持輸出穩定對于應用設計提出了多項挑戰。 萊迪思MachXO2或MachXO3 PLD系列包括的功能可實現零停機更新(圖2)。首先,PLD進行“后臺更新” 通過JTAG、SPI或I2C加載新的配置數據到其配置閃存。一旦加載完畢,“TransFR”指令將新的PLD配置從閃存傳輸到PLD的配置SRAM。執行“TransFR”指令的同時觸發了“保持當前狀態”功能,確保所有的I/O值在傳輸過程中保持不變。最后,在“邏輯初始化”步驟,狀態機將開始重新啟動電源管理并復位電源分配。這將導致電源關斷,迫使電路板開始電源上電過程。 圖2:采用MachXO2/3無中斷更新I/O 的PLD重配置步驟 使用無中斷更新I/O解決問題 為了支持零停機更新,PLD器件必須要能夠在新鏡像創建的狀態機處于初始化階段時,使用于控制電源以及其他邏輯信號的輸出保持不變。新算法經過初始化之后,它們將取得對于電源和其他邏輯信號的控制。 為了使得關鍵I/O在初始化過程中保持原狀,用戶設計中需要添加“無中斷更新I/O”。如圖3所示,這需要為每個關鍵的輸出添加一個帶鎖存的多路開關。該帶鎖存的多路開關在狀態機初始化過程中將輸出保持為最后的已知狀態,并在初始化過程完成之后將輸出控制交還給狀態機。該電路能夠使用“Hitless_IO_Enable”輸入區分正常(上電)啟動和重新配置,可避免在正常的上電過程中發生關鍵輸出I/O值被鎖死的情況。 深入探討 圖3說明了無中斷更新I/O在狀態機初始化過程中,在新配置被加載到MachXO2/XO3器件配置SRAM時發揮的作用。 圖3:無中斷更新I/O在初始化期間使得關鍵I/O保持最后已知狀態 為每個輸出添加一個帶鎖存的多路開關,只要多路開關控制輸入為“0”,輸出就保持當前值不變。這就意味著無論狀態機的輸出狀態如何,DC-DC轉換器保持“on”(如果先前處于“on”的狀態)。當控制信號為邏輯值“1”時,DC-DC轉換器的狀態由狀態機控制。狀態機通過“正常運行”節點控制多路開關輸出。芯片最新添加的“Hitless_IO_Enable”輸入可區分正常的“上電”配置(狀態機初始化過程中DC-DC轉換器輸出受到控制)和無中斷重新配置流程(狀態機初始化過程中DC-DC轉換器保持不變)。 假設控制無中斷更新流程的“Hitless_IO_Enable”信號設為“1”。 在初始化之前,狀態機將“正常運行”信號重設為“0”。帶鎖存的多路開關將忽略來自狀態機的輸出,并且DC-DC轉換器的“Enable”信號保持不變。 當PLD的邏輯準備好恢復正常運行時,它將“正常運行”信號設為邏輯值“1”(高電平),允許其取得對于DC-DC轉換器的控制。此時電路板的DC-DC轉換器和復位由更新的電源和復位控制狀態機控制。 實際案例 圖4中的框圖說明了PLD的使用情景,用于對CPU集群(cluster)以及平臺控制中心(Platform Controller Hub, PCH)、底板管理控制器(Baseboard Management Controller, BMC)和主機總線適配器(Host Bus Adapter, HBA)等板級子系統進行供電、監控和管理。在此例中,PLD主要負責電路板負載點調壓器的上電和斷電時序,并在電源重啟時將復位和控制信號保持為合適的狀態。在正常運行期間,PLD監控子系統的報警參數(溫度、電壓、存儲器和I/O故障等)或狀態變化,同時將控制信號穩定保持在合適的狀態。 圖4:集成在PLD內適用于機架式服務器的控制/內務處理功能 BMC在后臺升級服務器的控制PLD并觸發“TransFR”指令以使用更新的配置運行PLD。在沒有無中斷更新I/O的情況下,控制和復位信號或是VR(調壓器)信號不能在初始化步驟中保持不變。例如,如果CPU或其外設上的復位信號在重配置過程中發生變化,將導致無論CPU在執行何種功能,都將重新初始化并開始重啟流程。同樣的,如果“Power Enable”信號變化了,調壓器或負載點的電源將被關斷,導致由該調壓器供電的器件進入未知狀態。這會導致電路板中止運行、丟失或擾亂數據,甚至對電路板的電子元器件造成物理損害。 為關鍵信號添加無中斷更新I/O機制使得PLD能夠在重新配置的過程中凍結外部傳感和控制信號。如此,服務器的關鍵功能在PLD的常規維護和升級過程中不會中斷。該功能對于產品開發也很有用,能夠縮短調試時間或是在安裝機架時構建專用的產品變量。 總結 PLD可作為靈活、高性價比的解決方案實現對于DC轉換器的控制,橋接I/O通道以及執行復雜電子系統中的其他板級硬件管理功能。器件支持現場升級,可為制造商提供運行中變更配置所需的靈活性,實現設計錯誤更正或是為產品添加新功能。隨著無中斷更新I/O架構的面世,PLD現在能夠以無差錯、有保證的方式進行重新配置。使用該架構時,設計中門數量的增加通常少于1%,并且無需外部元器件即可實現。通過實現無需電源重啟、穩定可靠的配置變更,無中斷更新邏輯使得CPLD成為網絡、數據中心存儲設備以及其他任務導向應用中硬件管理解決方案的理想選擇。 |