服务器分为很多种不同的类型:从机架式、刀片式和塔式到用于高密度计算的模块化配置类型。理想情况下,每台服务器应经过针对性优化来执行特定任务。然而,如果仔细观察的话可以发现大多数服务器设计都具备许多共同的特征。通常,它们具备多个处理器和热插拔存储器,各种通过PCIe连接到CPU和PCH的外围设备以及安全服务和电源管理解决方案,这里仅仅列出了几个常见的共同特征。尽管设计工程师为各种应用创建不同的解决方案,但在大多数情况下,其实是在对基本的服务器架构进行定制。
图1展示了这种常见的架构。一般来说,服务器设计工程师会对这种基础架构进行定制以满足不同市场的需求。外围硬件块、系统级接口块、BMC接口和其他关键组件可能因服务器设计而异。而电源管理、控制和胶合逻辑功能块(图示中的功能 #1)在定制设计中有着关键的作用,用以满足特定的应用需求。设计工程师需要为每种服务器类型定制功能,如电源管理、电路板专用的胶合逻辑或I/O扩展。尽管功能 #1在诸如CPU、硬盘或网络的任何承载业务中不起作用,但在确保板上所有主要器件在正常范围内工作时是不可或缺的。设计工程师不断努力以降低实现这些功能的成本和复杂性,同时确保不会降低电路板的可靠性。
本文讨论了在旧式服务器设计中实现功能 #1的传统方法,并将其与现代服务器设计方法进行比较,后者使用PLD集成这些功能。此外,本文还讨论了使用其他集成可编程器件实现服务器中其他常用功能以降低复杂性和成本。
图1:8个PLD功能说明的服务器设计框图(设计实例)
功能 #1 - 电源管理、控制和胶合逻辑功能
以前,设计工程师通常使用多种不同的分立元件来实现电源管理、控制和其他胶合逻辑功能。多年来这一直都是颇具成本效益的方法。但随着服务器设计日益复杂、功能越来越多,这类设计需要的器件也变得越来越多。现在,如果设计工程师要为多种类型的服务器设计功能 #1,采用离散元件将需要很多时间和人力。举个例子,电路板上复杂SoC器件的数量发生变化的话,电源数量、胶合逻辑以及其他控制功能的数量也要相应地发生变化。这就很可能要更改逻辑和基本时序。
因此,使用分立器件的解决方案不仅会拖累新款服务器硬件产品的上市进程,还会随着所需元件数量的增加而导致成本上升。此外,更改设计有时需要重新改整个电路板,不仅进一步拖延了项目进程,还增加了成本。
现代服务器系统通常将功能 #1集成到非易失性PLD中。PLD将在电路板上电之后立即开始工作(瞬时启动)。通常,实现功能 #1所需的逻辑资源和I/O数量取决于服务器类型。因此,能够提供丰富的I/O和逻辑资源选择的PLD器件非常适合实现功能 #1。
莱迪思MachXO3 FPGA系列以及上一代MachXO2系列(简称MachXO2/3)都能提供所需的功能。MachXO2/3器件是支持瞬时启动的非易失性PLD,提供640 LUT到9400 LUT以及22个I/O到384个I/O的器件选择。这些PLD可以在系统中透明地进行更新,并提供双引导支持以便从任何系统更新错误中恢复。这些器件只需一个3.3V电源即可工作,当该电源电压高于2.2V时,服务器主板电源管理算法即开始工作。因此,MachXO2/XO3是电路板上第一个启动,最后一个关闭的器件。这些器件支持多个I/O Bank,可以单独上电或断电而不影响其他模块的运行。这方面的优势使得它们能够集成多种异构功能,例如多个电源区块控制、带外信号发送和电源待机控制。凭借上述器件,设计工程师还能够将SPI、I2C和定时器/计数器接口添加到传统设计中,并支持多次可编程片上配置闪存。这些先进的器件提供5mm×5mm的QFN和BGA封装以及1mm和0.80mm的引脚间距选择。
功能 #1集成到控制PLD(MachXO2/3)中
在图2中,MachXO2/3器件用于实现控制PLD功能,如电源/复位时序、各种类型的串行总线(I2C、SPI、eSPI、SGPIO等)、调试端口、LED驱动器、风扇PWM驱动器、前板开关传感以及其他一般GPIO功能。MachXO2/3器件支持1V信号,可实现带外信号功能集成,无需外部GTL收发器。当芯片运行时,设计工程师可使用莱迪思软件包中的Reveal工具调试控制PLD电路。该工具在PC上运行,可用作监视和捕获各种状态的逻辑分析器以追溯故障事件。例如,使用Reveal调试工具,设计工程师能够捕获许多导致故障状态的事件信息(包括寄存器、节点和引脚状态),并将其显示在PC显示器上。这可以显著减少系统电路板的调试用时。
图2:基于MachXO2/MachXO3的控制PLD
无中断更新I/O
控制PLD能够帮助设计工程师显着加速产品上市进程,在有限时间内满足市场对于全新定制硬件的需求的压力。有时候,在实现控制功能时会出现bug或系统整体结构需要的新功能。这时,对设计进行修改的一种常用方法是通过在系统更新、系统电源重新上电、载入经过重新编程的镜像来实现。这种方法需要进行电源复位,会中断整个服务器硬件的运行,降低可用性。为了确保高可用系统的连续运行,MachXO3器件可以保持I/O状态不变,同时刷新配置并初始化新配置。该功能称为无中断更新I/O。
图3:无中断更新I/O是如何工作的
无中断更新I/O如何工作(图3)
为了实现零停机更新,MachXO2/MachXO3器件通过“后台更新”将新的配置数据加载到配置闪存中。一旦加载完毕,“TransFR”指令将新的PLD镜像文件从配置闪存传输到PLD的配置SRAM。执行“TransFR”指令的同时触发了“保持当前状态”功能,确保所有的I/O值在传输过程中保持不变。最后,在“逻辑初始化”步骤,状态机将开始重新启动电源管理并复位电源分配。这将导致电源关断,迫使电路板开始电源上电过程。
当新镜像创建的状态机进行初始化时,系统是如何保持用于控制电源以及其他逻辑信号的输出不变的?为了使得关键I/O在初始化过程中保持原状,莱迪思为每个关键的I/O添加了一个锁存MUX。它在状态机初始化过程中将输出保持为最后的已知状态,并在初始化过程完成之后将输出控制交还给状态机。该电路能够使用“Hitless_IO_Enable”输入区分正常(上电)启动和重新配置,可避免在正常的上电过程中发生关键输出I/O值被锁死的情况。
这种新功能的优势是显而易见的。它让制造商实现即时的配置更改成为可能,可马上纠正设计缺陷或向产品添加新功能。它在产品开发过程中也能发挥重要作用,让设计工程师能够在服务器安装过程中快速调试产品或在调试过程中更改特定的产品参数。
PLD的便利性和成本优势使其成为实现在系统设计更新、电源管理、监控和控制关键信号以及基本内务管理功能的理想选择。
功能 #2 - 实现磁盘热插拔所需的逻辑功能
机架式服务器支持热插拔HDD/FD/NVMe驱动器。这些磁盘驱动器插入到背板。背板通过串行接口(如SGPIO和I2C)连接到主板。设计工程师可以使用MachXO2/3器件集成如图4所示的逻辑功能以实现背板控制。举个例子,当NVMe驱动器插入驱动器插槽时,MachXO2/3器件中的逻辑自动将状态和控制信号发送到I2C总线而不是SGPIO总线。
图4:使用MachXO2/MachXO3 PLD简化使用热插拔驱动器的背板控制功能
功能 #3 - 主机总线适配器电路板的硬件管理
莱迪思MachXO2/3器件的另一个潜在应用是集成主机总线适配器控制逻辑。如图5所示,该解决方案集成SGPIO和其他带外信号,管理电源/复位时序和其他PLD功能,包括快速电源故障检测和状态保存。设计人员还可以在现场实时对MachXO2/3器件中实现的逻辑添加功能和修复错误,通过无中断更新I/O功能和I2C接口不会中断系统操作。
图5:集成主机总线适配器逻辑
功能 #4 - 电压电流和温度遥测
通常情况下,系统会持续对一些重要的电源电压、电路板和器件温度以及当前的负载进行测量。为了测量这些参数,服务器主板使用模数转换器IC来增加BMC、外部温度检测IC和电流检测IC所需的通道数量。此外,该电路板使用I2C缓冲器IC和I2C多路复用器IC来管理遥测I2C总线(图6)。电路板上的DC-DC转换器用于为IC供电,由控制PLD器件控制。控制PLD还监控来自DC-DC转换器的“Power-Good”数字信号。
设计工程师可以使用莱迪思的ASC(模拟传感和控制)器件与控制PLD来集成ADC IC和一些温度传感IC。同时,器件将“Enable”和“Power-Good”信号从控制PLD传输到ASC器件。这样做可以释放控制PLD上的I/O,然后这些I/O可用于集成I2C缓冲器和I2C多路复用器IC。遥测电路的总体成本和BOM都得以降低。另外,通过检测电源电压的“Power-Good”状态以及断电状态,ASC还有助于提高断电时序的可靠性,并最大限度地降低电路板拥塞程度。
图6:实现遥测功能集成的新方法
功能 #5 - Bios和BMC固件验证
为了实现BIOS和BMC固件验证,MachXO2/3器件可用作无条件被信任(root-of-trust)(图7)的安全硬件。在该配置中,器件实现椭圆曲线签名认证来验证系统BIOS和BMC固件。当正在运行的镜像遭受入侵的情况下,它们也可用于管理自动黄金镜像切换。
图7:基于MachXO2/3的解决方案管理和验证BIOS和BMC固件
功能 #6 - PCH上的TPM/TCM和单个SPI接口之间的桥接
莱迪思的MachXO2/3器件提供各类桥接解决方案。例如,服务器设计工程师可以使用这些器件将PCH SPI接口与TPM模块(在中国以外的国家使用)或TCM模块(在中国使用)连接到同一硬件上(图8)。该桥接可适配输入和输出的各种工作频率。
图8:用于TCM的LPC到SPI桥接
功能 #7 - 在扩充卡上集成多种功能
服务器通常使用扩充卡添加LED驱动器、控制和传感功能,以减少主板上的器件连接数量。通常情况下,这些功能使用分立逻辑IC实现,这就需要多种类型的扩充卡,每种类型的功能都略有不同。减少所需扩充卡类型的一个方法是将每个扩充卡的功能集成到MachXO2/3 PLD上。然后可以在生产制造过程中简单地修改集成在MachXO2/3器件中的逻辑来定制扩充卡逻辑功能。
功能 #8 - 整合多个I2C缓冲器
服务器系统中的CPU通过一对I2C缓冲器与DDR存储器DIMM进行通信(图9)。CPU还通过另一个I2C接口监视SSD驱动器。设计工程师需要使用电压转换器缓冲器来将CPU的1.05 V I2C接口与1.2 V DDR存储器和3.3 V SSD驱动器进行转换。CPU还使用1.05 V逻辑信号生成多个带外信号。这些带外逻辑信号需要与使用2.5 V或3.3 V信号接口的其他器件进行通信。这就要在电路板上使用GTL缓冲器。
低成本MachXO3器件采用小尺寸QFN封装(5 mm x 5 mm),可用于实现电平转换,涵盖1.05 V I2C和其他1.2 V、3.3 V和2.5 V逻辑信号。这样可以减少电路板面积、BOM以及更为重要的原因,即实现成本。
图9:MachXO2/O3 1V I/O支持I2C缓冲器集成
总结
今天的服务器设计工程师总是像20年前的工程师一样尽可能通过快速、经济高效的方式在电路板上集成更多功能。而其中经常被忽视的重要方法是通过控制PLD来实现。通过为设计工程师提供将所有控制路径功能集成到单个可编程器件中的简单方式,并通过添加新功能,使得设计工程师能够在现场进行设计修改,控制PLD将大大简化电路板设计和调试。
(转载)