图片

  火车上继续聊聊BMC的硬件,不太喜欢四这个数字,就在这第三篇中都写完吧。反正我现在有足足5个小时的时间。

图片

  图中最下面还有两个大block。一个叫In Band Sub-block,都是与主CPU对接的接口。一个叫BMC OOB Sub-block,是与主机CPU没有直接关系的接口。

我们先研究右半部分吧:

图片

  先看到有个PCIe RC接口,这个和主机CPU基本没关系。这个RC功能,类似前面讲到的USB master功能,都是以BMC为host,去对接其他device设备。到底接什么样的设备,就完全看各个系统厂商怎么去做了。当然大部分都是各种板卡。之前我也没见几个用PCIe RC功能的,但既然BMC上已经有这个接口了,逐渐被大家用起来了,所以说乙方的芯片功能决定了甲方系统的功能。

  其他接口就看主机端有什么接口了。首先,是大家常说的LPC/eSPI接口。可以简单理解为eSPI是LPC的升级版本。很多处理器都是这个接口与BMC进行关键数据传输的,如KCS、Vuart、Snoop等等。这也是BMC芯片重要的接口。网上资料也比较多,后面有机会再详细介绍。其次,BMC有个显卡功能,能实现服务器的图形显示。因为当前服务器对显示的要求不是很高,为了兼容过去老显示器接口,所以BMC要有个VGA接口,而对应于BMC芯片内部就要有VGA图形处理模块。除了VGA接口,现在显示器也逐渐用到了DP接口。

   现在很多板卡和BMC是MCTP协议进行数据交互的,很早是利用MCTP over I2C功能,后来又加上了MCTP over PCIe功能,毕竟PCIe的带宽相对来时比I2C大很多的。

图片

 SCU和PLL是大部分SoC芯片都有的,一个是系统配置单元,一个是给芯片内各个模块提供时钟的单元。还有SoC上跑软件程序基本都要用到的看门狗WDT模块和计时模块Timer。这些都是通用模块了,多多益善。

 在服务器主板上,与其他器件进行控制或者数据交互的最多接口就是I2C了。所以BMC需要大量的I2C接口,26xx配置了16个I2C接口,根据我遇到的场景,这16个I2C也不够用。随着DDR5的推广使用以及Intel后面CPU的上市,I3C接口逐渐增多。所以I2C/I3C都是BMC芯片必需的物理接口。

  UART,即串口,既在调试软件程序时候需要,正常运行时候打印信息也需要。但比较奇怪26xx设计了13个UART,很少见服务器系统上用到这么多的串口。

  如前面文章里提到过,BMC还有个重要的作用就是监控温度,那就需要对服务器内部的风扇进行管理。绝大多数的风扇都是PWM控制的,还有个FanTach(Fan Tachometer)。PWM是BMC送给风扇,控制转速。FanTach是风扇送给BMC的信号,BMC能据此信号监测当前风扇的转速。所以BMC必须有这两个接口,16套也基本够用了。

  固件升级也是BMC的需求之一,但是要看对端器件的情况。升级不同的器件,需要不同的接口。Flash一般是SPI接口去升级,但有的板卡是PCIe接口,有的板卡是USB接口,还有UART和I2C接口的。这些接口都在前面介绍过了。服务器主板上一般有个类似CPLD的可编程器件。最近有朋友咨询其功能,简单说主要就是精准控制板子上电时序和复位的,后面有机会我单开一篇和大家讨论。这种CPLD一般是JTAG接口进行升级,所以JTAG master是BMC必需的。另外有的CPU调试接口也是JTAG接口。

  SGPIO和GPIO都算是GPIO接口吧,led灯啊、按键啊、中断管脚等等功能都可以利用此接口。用途很多,看系统上怎么应用了。

  服务器里面的温度、电压等模拟信号的收集都需要模数转换器(ADC)。可以在板卡上直接用sensor之类的,但BMC芯片也提供了一定数量的ADC模块供用户使用。

  MailBox是内部功能,我理解是传输大数据的。在LPC/eSPI接口中有mailbox\BT协议。不过我仅在Power平台上调试过mailbox。

  其他就是特殊应用接口了。SuperIO是主CPU的BIOS需求,其能控制BMC的GPIO,见到的应用场景不多,估计是我孤陋寡闻了。PECI接口,曾经有人向我咨询。怎么说呢?这是Intel的私有协议,本身不是很复杂,一百多页的spec。但确实是非公开协议,如果想看spec,需要Intel授权。这里就先不多聊了,以后找个机会和大家探讨探讨。不过即使知道怎么回事了,但是没有授权,也用不了。

  这样看来,基本上把BMC硬件都梳理了一遍。百密一疏,肯定有没讲的或者不太对的地方。如有问题,请各位大佬指正。

  抬头一看,火车快到站了。一路上沉浸在码字的思绪里,也是一种享受。

  后面计划补上BMC软件公司的介绍,再介绍当前BMC芯片的公司。

  谢谢各位,晚安。

更多推荐