英特尔对于「强制关机会损害电脑硬件」的科普是否有道理?

图片:janeb13 / CC0 英特尔对于「强制关机会损害电脑硬件」的科普是否有道理?

老狼,UEFI固件、服务器、嵌入式产品(公众号:UEFIblog)

谢邀。发现 Intel 官网应该是引用了我在这篇回答中关键部分:

笔记本电脑按住电源键强行关机,对电脑有伤害吗?

而忽略了说理的部分。官网这样说:

我的回答这样说:

几乎是一模一样,而我的回答在半年以前。不少同学希望知道这么说的原因,我就把答案搬过来,看过的同学可以自动点赞忽略了。

===============原答案=====================

按住电源键强制关机和拔电源关机并不一样,这点对笔记本和台式机都是如此。

按住电源键关机,在硬件上看就是拉住 PWRBTN#引脚,保持一段时间。在电源键按下后,也就是 PWRBTN#被置高后,硬件会开启一个时钟 Timer,超过 5 秒还没有抬起,也就是 PWRBTN#没有被置低,会触发关机动作。这个关机动作并不是切断电源了事,而是遵循普通的关机硬件流程。大家要知道,实际上 CPU 和主板上有很多 power rail,关机并不是简简单单切断电源就好了,有复杂的关闭各个 power rail 的时序,要按照一定的顺序来,大家可以看看芯片手册了解一下,这里不再详述。这时进入的 ACPI 模式是 G2,不是拔电源的 G3,主板还有部分区域是有电的。

也就是说按住电源键关机,看起来像一下关闭电源了,实际上还是要经历一个完整的关机硬件流程,和普通的正常关机在硬件流程上没有什么不同。和拔电源也有本质的不同。

和正常关机有什么不同?

硬件流程上一样,那么和普通关机在什么地方不同了呢?差别就是操作系统被跳过了。无论我们是鼠标点选关机,还是按了一下电源键关机(详见 老狼:按下电源键后发生了什么?电脑是如何关机的?),操作系统也就是 Windows 或者 Linux 都会受到通知,尝试安全关机。操作系统和固件在 ACPI 规范下共同工作,不同分工,一步步安全关闭计算机。包括保存文件等等操作。跳过这些动作轻则未保存文件丢失,重则操作系统文件损坏而不能启动。

结论

所以说按住电源键关机对硬件完全没有损伤,硬盘也不会一下掉电而要用到掉电保护的功能:

老狼:硬盘忽然掉电会损坏硬盘和数据吗?

和正常关机一样。真正需要担忧的是数据的安全问题。

其他

话说回来拔电源或者家里如果停电会伤害硬件吗?实际上机械硬盘并不需要担心,真正需要担心的是 SSD 和主板。看过我们固态硬盘系列的读者应该都知道 FTL 的存在(杂谈闪存三:FTL)。FTL 的逻辑块和物理块的转换表必须存储在 NAND Flash 上,否则会造成混乱;高端企业级硬盘上有大量的 DRAM 来加速,其中的内容也必须存储下来。

在正常关电的时候,和机械硬盘类似,SATA 的 STANDBY IMMEDIATE 命令和 SCSI 的 Stop 指令是合适的存储这些信息的机会。SSD 控制器可以从容的将这些信息写在合适的地方。

在意外掉电的情况下,情况就复杂不少。不知道大家注意过没有,现在 M.2 的 SSD 上面有很多很小的电容:

在 Vcc 没电的时候,这些电容的 gate 就会打开,会为主控争取 1ms 左右的时间。主控会立刻放弃现在所有没有存储的数据,而立刻开始存储 FTL 表,保证不会出大问题。

在企业级的 SSD 中,有的 DRAM 大小将近 1GB,而企业 SSD 的数据完整性要求极高,不容有失,不但 FTL 表要存好,DRAM 中没有存储过的,也必须全部存下来。这就需要很大的电容,来争取更多的时间,如果我们拆开企业 SSD,就会发现很多大黄快:

这个 Micron 的 SSD 有 3 块,而 Intel 的部分 SSD,因为 DRAM 很大,大电容达到 8 块!

有些低端 SSD 厂商,没有电容,或者在长时间使用后电容能力下降。在掉电后,FTL 表并没有存下来。而是采取在下一次上电的时候重建 FTL 表,这是用户就会发现 SSD 反应很慢,要一会才会恢复正常。SSD 固件写的不好的,SSD 不能用也是可能的。

对主板的伤害主要在于掉电前后的电涌和电流波动,不好的电源 + 劣质主板有可能损坏主板。这样是我推荐电源一定要选个好的原因之一。

=======评论区分界==========

评论区有同学提到电源的保持时间最少有 16ms(最低标准),不是够 SSD 保存数据了吗?这个 16ms 实际上是一个交流周期,它是和 UPS 来一起工作的。这个 16ms 对 SSD 和硬盘没有帮助,因为电源和硬盘之间是没有信号交换的,就是说电源不能把“我要马上没电了,快保存吧!”传给硬盘。对于硬盘和 SSD 来说还是忽然掉电。

文章颇受好评,评论区读下来发现大家对计算机 / 笔记本电源都有一个深深地误解,认为电源按钮没按,CPU 风扇没转,整个主板和计算机系统就没电;关机按钮按下,风扇不转了,主板和计算机系统也就没电了。可你们发现没有,前面板的电源按钮连接的电源开关线恰恰就直接连接到主板上:

前面板的电源按钮并没有连接到电源上。如果主板没电,按钮按下的信号如何传递给电源呢?关机后又如何开机呢?实际上只要电源线没有被拔掉,无论电源按键按下与否,主板的部分还是有点的,包括:EC(如果有)、BMC(如果有)、CPLD、ME 和围绕它们的电路。这就是 G3 和 G2 的区别。我写了篇文章专门介绍了一下:

老狼:电源是如何供给电力主板的,又是如何切断的?