最近在做Modern Standby 的实验,测试结果显示CPU进入了PC10,但是一直被硬盘 Block。板子上使用的是通过 PCIE-M.2 转接板转接后插在 PCIE Slot 上的 NVME SSD 。于是,我觉得问题出在转接板上。
对于M.2 上的ModernStandby来说,NVME 上的CLKREQ 拉高通知 PCH/SOC 停止发送 PCIE Clock。如果出现问题通常都是这个Pin导致的。于是,怀疑转接卡是否将 PCIE 上的CLKREQ Pin正确转接到了 M.2 接口上。
接下来找到 M.2 的引脚定义【参考2】:
进一步追查,这个Pin连接了一个LED,然后到了GND 上(万用表测试)。
为了验证上面的正确性,再挑选一个PICIE 金手指上的 REFCLKp pin(A侧13,参考本文第一幅),使用万用表测量,找到M.2上面的引脚如下:
这个说明参考的M.2的引脚资料是正确的。
进一步结论:转接卡没有将 PCIE 上的 CLKREQ 转接给M.2。
最终,通过飞线的方式,将 M.2 的CLKREQ 和PCIE Slot 上的 CLKREQ 相连,在 RVP (CML-V)上测试无问题,运行 ModerStandby 的 Stress Test,一晚跑50次顺利通过。这个从侧面也印证了:M.2 上的 PCIE 和 PCIE Slot 没有本质差别。很多时候如果你发现供应商提供的某些 M.2 接口的设备无法在你的设计上影响 MS 功能,不妨转接在 RVP 上验证之。
参考:
我最近也在研究PCIe to NVME M.2转接。中的CLKREQ#信号,并有很多疑惑。您实验中说是M.2的CLKREQ#连接到了一个LED?其实您这里看错了,其实是这个LED右边的一颗接地的电阻。PCB的走线干扰了您的判断。那个LED指示灯是SSD的工作状态。
ASUS的转接卡有上拉和下拉电阻配置,但是都没有贴装电阻,也属于悬空;浦科特的PCIe SSD其实是个转接卡+M.2,而它的CLKREQ却很奇怪,通过一个电阻网络接到了一个PCIe金手指的上(此引脚本来是地,这样插入后会连接到地);而我还看到一个所谓联想服务器用的转接卡,是10K电阻上拉到3.3V;这样看来各种方法五花八门,有没有链接到PCIe CLKREQ上的很少见,并且有的规范上没有明确定义PCIe插槽上的CLKREQ,是保留信号引脚,真实混乱。搞得我都不知用那种方式了。
我们可以多交流。
谢谢哈,应该是我看错了。我记得 CLKREQ 在之前的 PCIE Spec 上是 Reserved ,所以在一些电路图上是正常的。并且这个信号只在做 ModernStandby 的时候才有作用,所以对于目前市面上的卡来说不影响功能的。
如果你感兴趣,可以自己做一下转接卡,PCB 价格不高的,我自己设计过一个,可以工作。
各种转接板 CLKREQ这个引脚不接的很多很多,值得注意。
新一点的M2网卡都需要用到这个脚,跟低功耗模式有关系。
是的,如果平台想支持 ModernStandby 必须有这个脚