一文读懂热插拔
- 科技深水区
2020-01-07 18:29
大家好,今天我们讲一下电脑上各种接口和外设热插拔的问题。
先讲个小疑惑,有一段时间汐元那个藏着很多小姐姐的U盘一插入电脑就会弹出这样的窗口:
当时一度以为Windows已经智能到能够识别小姐姐并且提醒汐元爱惜身体?
但如果点扫描并修复,通常又扫描不出什么问题。后来经IT之家同事提醒,发现弹出这样的窗口,可能和平时直接拔U盘有关。
▲就是这么粗暴
对于U盘来说,大部分情况下,其实不选择“扫描并修复”也没什么问题。但是这个事情应该正视。
虽说U盘这种设备目前都是支持热插拔的,但热插拔≠直接用手插拔!
我们先看看到底什么是热插拔?
从定义上来看,热插拔就是计算机允许用户在不切断电源、不关闭系统的情况下即时接入和取出设备,从而增加计算机扩展外设的灵活性。
仔细看,定义上没有一个字告诉我们热拔插就是可以用手直接拔直接插,所以,想要拔U盘时,正确的做法还是老老实实先点击系统中的“安全弹出设备”。
虽然很多时候我们直接用手拔出也没发生什么,但就像汐元开头说的,提示“扫描并修复”就是直接拔导致的一种小问题。严重的时候,有可能导致数据丢失等问题。
可能有IT之家小伙伴会好奇,那么为什么键盘鼠标这样的外设可以直接用手拔插,U盘就建议大家弹出了呢?
那是因为,U盘这样的存储设备是有缓存空间的,例如文件传输到U盘上,会先写到高速的缓存中,再存到闪存芯片中,所以有时候系统提示文件已经传完了,但可能U盘其实还在读写。
这个时候直接拔出,就有可能破坏文件系统。
当然,这里的缓存也是可以在系统中取消的,具体方法后续IT之家也可以写一个小教程。
但即使去掉了缓存功能,也不建议大家直接拔,因为你也很难保证电脑上有没有什么流氓软件在后台访问你的U盘。
而键盘鼠标这样的设备只是输入输出指令,不存在这种情况,所以直接拔插没啥问题。
讲了这么多,相信大家也想更进一步了解热插拔到底是怎么回事。
从实现的角度来讲,热插拔其实是一个软硬件结合的过程。
总线,可以理解为计算机各种功能部件之间传送信息的公共通信干线。可以分为片总线,内总线和外部总线。
其中外部总线是指系统总线,即CPU与存储器、I/O系统之间的连线,外部设备和它直接相关。
90年代中期的586处理器系统总线都增加了外部总线的扩展,这是即插即用的基础。
在接口电路设计方面,如图,当外部设备插入系统时,会有一个很大的瞬时电流向输入电容充电,这可能导致电路损坏。
热插拔电路设计的目的就是把这个瞬时电流控制在合适的水平。
操作的方法主要有三种:
第一种是在接口上引入长、短交错的引脚,长引脚上加入预充电电阻。这是我们经常看到的方法。
插入时,长引脚首先接触到电源,通过预充电电阻为外设的电容充电,同时限制电流;接着短引脚接触电源,分担预充电电阻的负载,为接入的板卡提供一个低阻通道。
拔出时,长引脚最后和电源分离,通过预充电电阻为板卡负载电容放电。
第二种方法比较复杂,主要是通过负温度系数热敏电阻和一个外部特定的晶体管(MOS管)来控制瞬时电流。
MOS管是一种电压控制器件,可以在电路中起到控制电流的作用。
最后一种是最好的解决方案:引入专业的热插拔芯片,提供过压和欠压保护、过载时利用恒流源实现有源电流限制等功能,甚至还有控制电流上升速率、监控电流强度等功能。
至于软件层面,则主要是负责处理用户插拔设备的请求,确认设备是否被占用等。
接下来,我们不妨看看具体设备在热插拔的时候应该注意什么。
1、USB设备
关于USB类设备,其实开头汐元已经讲了好多。
当1994年USB传输协议推出时,科技巨头们就已经考虑到USB接口对热插拔功能的支持了,到现在的雷电3接口,都支持热插拔。
以非常常见的USB Type-A接口为例,可以看到它用到了上面所说的长短交错引脚的控制方法实现热插拔。4根引脚中外侧的两根长引脚用于供电,内侧两根用于数据传输。
这里安利一下,关于USB接口的更多内容,欢迎大家前往IT之家《一文尽懂USB 4》一文中查阅~
对于USB设备来说,热插拔应该注意哪些其实在文章开头汐元也说得差不多了。像U盘、移动硬盘,包括MP3、手机等存储设备的特殊性,我们最好要确认拔出设备时设备没有被占用,因此建议大家使用系统中的弹出功能,否则有可能会造成数据丢失、甚至对设备造成损坏。
这里要提一下,目前来说,手机上的SIM卡和SD卡理论上也是可以热插拔的,以SIM卡为例,卡座上会有专门的卡检测引脚,SIM卡插入或拔出时,会根据电平高低变化来触发中断,软件层面这时候就会根据中断的状态来判断是插卡还是拔卡,然后做出相应的动作。
现实场景中我们在手机上直接插拔SIM卡和SD卡,一般也不会发生一些事故。当然,如果你很谨慎,也可关机后进行插拔。
2、硬盘类
SATA硬盘方面,从2002年开始的SATA2.0协议就已经允许热插拔,多年前在售的硬盘和主板,应该都是SATA2.0或以上的了,所以实现热插拔是没有问题的。
对于机械硬盘和SATA硬盘而言,接口也有和USB类似的长短引脚设计,并且其中有数据线路和电源线路。
在带电状态下插拔硬盘,会产生一个很强的瞬时电流,硬盘的电源线路对这个瞬时电流的宽容能力较强,危险来自硬盘的数据线路,带电的时候插拔,数据线路上会产生很强的瞬间电流和压降,很可能导致硬盘损坏。
所以要记住的一点是,热插拔硬盘时,通常我们会有一个顺序:
插入时,先插电源线路,再插入数据线路,拔开时,则是先拔开数据线路,然后再拔开电源线路。
汐元从IT之家同事手上夺来一个硬盘给大家演示一下:
在软件层面,对于Windows系统而言,热插时,把硬盘插好后,通常我们需要在系统的设备管理器里选择“扫描检测硬件驱动”,而拔出时,则可以在“设备管理器”中选择需要拔掉的硬盘,点击“卸载”,然后再将硬盘拔掉。
至于主板BIOS的问题,目前大部分情况下其实都是默认开启硬盘热插拔(HotPlug)功能的。万一没有,则可以在BIOS中开启“AHCI”模式,然后在副项目中开启“热插拔”功能。
还有就是,对于M.2接口的硬盘,通常不适合热插拔,毕竟这类硬盘需要在主板上固定,固定和解除固定的时候最好是要断电的。
当然,也不排除可能有人骚操作,表示不用固定……
硬盘不比普通的USB产品,对于硬盘的热插拔,建议大家还是按照上述要点来进行,否则操作不当数据损失,那就尴尬了。
3、HDMI等视频接口
HDMI接口从诞生之初就是考虑到热插拔的,以最常见的HDMI A型口为例,其接口的第19针用于热插拔检测(HPD),也有说是第1针的,总之就是倒梯形右上角的那一针。
同时HDMI也有防静电设计。
但是,由于不同HDMI线材的内部工艺不同、质量不同,连接的高清设备不同,这些我们不好控制,所以,HDMI线建议大家最好还是不要热插拔。
和HDMI类似的DP接口,同样也是支持热插拔,但基于和HDMI相似的考虑,我们也不建议热插拔。
至于较老的VGA和DVI接口,理论上它们是不支持热插拔的,很多VGA和DVI线材的接口有螺丝固定,其实就是为了防止大家热插拔。
其实上述视频接口的热插拔功能也还有争议,有IT之家小伙伴可能会说,平时我热插拔也没出什么事嘛!但是,其实也有因为热插拔导致设备主板烧坏的案例,毕竟视频接口数据传输量大,不怕一万就怕万一,大家还是不要热插拔的好。
总结
关于热插拔的问题,今天汐元就和大家谈到这。
总结来说,其实就是一个词:谨慎。
USB设备最好在软件系统层面确认没有占用的时候热插拔,硬盘接口、视频接口,按照各自的特性和要点来。
最忌讳的是不管三七二十一,直接用手拔插的行为,IT之家友情提醒,这不是正确的姿势哦~万一主板或者设备承受不了,发生了意外,那就悲剧了~
广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,IT之家所有文章均包含本声明。