小编在电脑上安装SATA SSD作为系统盘后,电脑运行速度比以前的机械硬盘快得多,浏览网页,玩游戏非常顺畅。(莎士比亚,坦普林,《计算机》前情提要)。
可是,最近小编发现电脑经常会出现卡顿,或者重启的时候会卡机,这让小编愉悦的心情平添了一丝失落。于是,小编觉得探索一下问题的根源。
根据小编处理SSD案例的经验,小编决定先通过SATA Trace看看,能否会找到问题的端倪。
接下来的任务就是搭建SATA tracer平台了,小编这里采用的是SerialTek SATA分析仪。
SATA分析仪的环境搭建完毕,开始录制fail时刻的SATA trace. 经过多次的复现操作,终于抓到了reboot卡机时的SATA trace, 如下图:
从上图抓到的SATA trace,我们看到在Device发送进入Slumber电源状态的请求后,Device就进入了休眠。然后之后却一直没有收到Host的唤醒动作。在这里我们也可以推测得到一个信息,Device启动了DIPM电源管理功能。
说到这里,估计很多朋友开始有疑惑,“小编,怎么看懂这个图呢?”
首先,解释几个关键的名词:
1,Slumber:为了节能环保,在SATA协议中,提供了两种低功耗的电源模式,分别是Partial和Slumber。其中,Partial状态下,功耗大约在75W, 而Slumber是更深度的低功耗电源状态,功耗大约只有25W。
2,DIPM: 全称是Device Initiated Link Power Management,翻译一下,设备触发链路电源管理。也就是由Device发起进入Partial或者Slumber电源状态的请求。在上图抓到的Sata trace中,我们看到有一个参数叫做PMREQ_S, 这个代表Device请求进入Slumber电源状态。
我们再来看看,正常的reboot SATA trace:
从正常的SATA trace来看,Device进入Slumber状态之后,后续Host有去唤醒Device。
所以,基于上面的分析,基本可以判断,系统reboot卡机应该是与DIPM功能与主板兼容性的问题。
找到的问题的根源,那我们就去解决它。
由于DIPM与主板存在兼容性的问题,那我就把DIPM关掉咯。方法有两个:
第一:通过厂商提供的量产工具,对SSD进行固件升级的同时,关闭DIPM功能。
第二:通过修改注册表,关掉DIPM功能。
注册表目录HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\amdsbs\Settings\CAM下,将EnableDIPM改为0.