​[DRAM Test]Intel MRC(Memory Reference Code)

在 Intel 平台上,BIOS 内存参考代码 (MRC) 用于初始化内存控制器并优化读/写时序和电压以获得最佳表现。MRC 非常复杂:它的工作是优化以 2GT/s 及更高速度运行的多条并行总线,并使它们充当“一个系统”,它通过使用复杂的方法来实现这一点,包括片上端接 (ODT)、读/写调平(使用“fly-by”拓扑,特意引入flight时间偏差,从而避免同时发生的转换噪声)、Vref 调谐、CMD/CTL /ADDR 计时训练等方法。人们普遍认为 DDR4 可能是与 SDRAM 接口的最后一条并行总线;宽、并行、单端总线的物理特性排除了此类设备以更高速度运行的足够余量。未来(实际上,  

MRC 的目标是“不惜一切代价启动”:也就是说,它以尽可能高效的方式启动内存,快速找到时序和电压的“最佳点”,以便内存启动并运行,并且系统可以继续引导。它应该快速执行其功能,因为此类设备的用户需要最短的启动时间和“永远在线”的性能。它的行为由它运行的平台决定:也就是说,在消费设备上,如果发现 DIMM 上的主要故障,它将使系统“蓝屏”,因为笔记本电脑用户需要知道发生了灾难性的事情. 另一方面,对于像服务器这样的企业系统,MRC 会悄悄地禁用有缺陷的 DIMM 受影响的通道,并继续启动并运行系统的其余部分,以实现 5 个 9 (99.0)。

这就是 MRC 的主要挑战:启动时间、缺陷覆盖率和故障隔离之间的权衡。一般而言,MRC 将最大限度地缩短启动时间,这意味着其缺陷覆盖率和故障隔离可能较低。为了确保现场系统的稳健性,需要更复杂的测试甚至是裕度方法。 

在企业系统上,如果出现不可纠正的错误,例如 DQ(数据)位短路或开路,MRC 将禁用受影响的通道或Rank。由于每个通道可能有多达三个 DIMM,因此测试技术人员必须做大量的工作来识别发生故障的 DIMM。在一个内存被焊接的系统中,在一个Rank被禁用的情况下,可能有八个或更多的可疑设备;显然很难调试。

对于其他类型的缺陷,例如选通 (DQS) 信号的一条腿上的接地短路或开路或 DIMM GND 引脚上的开路/短路,MRC 可能有足够的余量来训练受影响的内存,但该 SDRAM 设备或 DIMM 的余量将减少;也许,由于环境条件(温度、湿度等)将其置于其裕度范围之外,因此有很多的影响使其以后在现场失败。

因此,与 MRC 中通常采用的方法相比,应采用其他方法来提供更高的缺陷测试覆盖率和更好的诊断分辨率。当然可以增强 MRC 以更多地使用内存,从而提供位级诊断,但这将以启动时间为代价。

对于结构故障的内存测试,例如制造测试,所需的解决方案与 BIOS 无关(因为如果系统无法启动或通道被禁用,则无法访问和诊断受影响的位)。理想情况下,这种方法将执行诸如字节使能检查、地址检查、数据完整性检查、走 1、走 0 等测试。满足此要求的最佳方法是欺骗内存控制器,使其认为内存已完全初始化(类似于“快速启动”中所做的),然后运行现成的内存测试脚本。在以下两个博客中可以找到有关此方法的一些更详细的材料:

这应该允许 BIOS MRC 运行完成,然后使用“killer patterns”来激发接口,这些模式会刺激器件间干扰 (ISI)、串扰、和同步开关输出 (SSO) 效应,然后观察对受影响字节通道或等级的任何时序或电压裕度影响。这需要在内存供应商、内存数量、频率等方面了解给定配置系统的基准余量;以及对给定缺陷预期的裕度影响程度的定量确定。

更复杂的 DRAM 设备单元或阵列测试使用这些模式,可能结合电压和时间裕度,来检测固定故障 (SAF)、转换故障 (TF)、耦合故障 (CF)、邻域模式敏感故障 (NPSF)、并解决解码错误 (AF)。当然也可以在软件中完成,但这种方法会受到维护事务的影响,并且会受到很大的性能损失,这会降低其确定性和彻底性——因此需要硬件引擎(内存控制器本身内的 BIST)方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值