5.4 SSD固态硬盘电路
固态硬盘(Solid State Disk),具有重量轻、耗电少、读写速度快等优点,但目前的问题是价格稍高,固件算法还不是很完善,使用寿命也不如普通硬盘,和某些操作系统兼容性不是太好,但随着技术的进步和用户数量的增多,这几个问题会逐步得到解决,固态硬盘也会较快地普及到平板电脑等电子设备中。
固态硬盘通过不同的接口和CPU相连,有的则是和主板相连。固态硬盘的接口多种多样,常见的有三种:SATA接口、PCIE接口和USB接口,前两种多用于内接,而USB多用于外接,外形分别如图5-15所示和图5-16所示。
图5-15 SATA接口的固态硬盘
图5-16 Mini PCIE接口的固态硬盘
SSD硬盘和CPU通过SATA接口(总线)进行连接,如图5-17所示。
图5-17 CPU和SATA接口硬盘的连接
其中TX+和TX-是两根数据发送信号线,RX+和RX-是两根数据接收信号线,它们是两对差分信号,差分信号一般由正极性信号和负极性信号两个信号组成,它们的振幅相同,相位相反。采用差分信号的目的主要是为了高速传输数据和提高信号的抗干扰能力。其波形如图5-18 所示。SSD硬盘和CPU就是通过这四根信号线(两对差分信号)来完成读(接收)和写(发送)数据的传输功能。
1.SSD固态硬盘工作原理
SSD固态硬盘和普通硬盘的运行原理有许多相似之处,主要区别在闪存控制部分,其工作原理方框图如图5-19所示:
图5-18 SATA串口差分数据波形图
图5-19 固态硬盘SSD工作原理方框图
SSD硬盘上电后,首先运行ROM固件里面的程序代码,对硬盘进行初始化,运行SMART程序,对硬盘的状况进行自检,同时对SSD硬盘的其他组件也进行自检,如在初始化和自检过程中发现错误,则将出错或报警信息经接口电路送给CPU,由CPU送往屏幕显示错误信息,或由CPU进行进一步的处理。如果初始化和自检通过,则SSD硬盘进入就绪状态,等待从CPU发送过来的操作命令。
随着操作系统的程序代码在CPU中的运行,当CPU发现有读、写SSD硬盘的数据请求和指令时,就会(在CPU内部的SATA控制器中)运行SSD硬盘的驱动程序(即SATA2.0或3.0 的协议程序和其他的相关程序),将要读写的数据、地址、指令和时钟以及其他信息,由CPU内部的SATA控制器封装成符合SATA2.0或3.0协议规范的串行码流信号,并将这些串行码流信号经过TX+、TX-和RX+、RX-这几个信号线传输到SSD硬盘中。
SSD硬盘中的主控芯片(即硬盘中的CPU)内部的逻辑接口电路和TX+、TX-及RX+、RX-这几个信号线相连,接收(或发送)由CPU送来的串行码流信号,并根据SATA协议规范将这些串行码流信号解析提取并转换为数据信号、地址信号和操作指令。其中操作指令送往解码电路和状态机,然后送给NAND闪存控制器,和主控芯片一起完成多闪存的读、写和删除等操作。地址信号送往地址转换电路,和主控芯片一起将逻辑地址转换为物理地址,送给NAND闪存控制器,用于确定数据在闪存中的位置。经过解析提取出来的数据则送给内部的数据Buffer或者内部的DRAM进行缓存。有的硬盘中还接有外部缓存DRAM,主要是为了减少写入闪存的次数,从而提高闪存的寿命。然后数据被送往ECC电路进行纠错和校验,再送给数据串并转换电路,将较大的数据分解成较小的数据送给NAND闪存控制器,由NAND闪存控制器并行写入闪存芯片中,而读取数据时则由NAND闪存控制器分别从不同的闪存芯片中读取数据,经串并转换电路合成一个较大的数据,这就是NAND闪存的多通道并行交叉存取技术,它可以大大提高闪存的读写速度。读取出来的数据经过串并转换后送往ECC电路,然后送往缓存,再送给逻辑接口控制电路,由该电路封装成符合SATA协议规范的串行码流信号经过接口信号线发送给CPU电路,由CPU进行数据处理后,将这些数据送给相关程序或设备组件使用。
在SSD硬盘中针对闪存的特点,还采用了一些其他的电路和算法(保存在ROM固件中),以提高SSD硬盘的数据传输速度、使用寿命,以及数据的可靠性和安全性。例如,常见的闪存多通道并行交叉存取技术、损耗均衡算法、坏块管理、垃圾回收、预留空间、数据安全、加密解密等,由于SSD固态硬盘的发展时间短,很多厂家都在不断地进行改进和更新,一些新技术和算法不断出现,有兴趣的读者可以参考相关的资料。
2.SSD固态硬盘电路原理
SSD固态硬盘电路一般由电源电路、主控芯片电路、闪存电路、DRAM缓存电路和SATA接口电路组成,SSD电路连接方框图如图5-20所示。
电源电路由SATA接口的电源引脚输入5V电压,经过5脚或6脚的电源IC转换为合适的电压提供给硬盘中的各个芯片使用,其电压值视不同型号的芯片而有所不同。例如,提供给主控芯片的是3.3V和1.8V的电压,提供给闪存芯片的是3.3V的电压,提供给DRAM芯片的是1.8V或者是1.5V的电压。主控芯片、闪存芯片、DRAM缓存芯片与SATA接口电路相连接,完成对各个芯片的操作控制和数据双向传输及数据处理的功能。闪存电路则是由少则几片,多则几十片的闪存芯片组成的存储阵列电路,硬盘容量越大,闪存芯片越多。具体哪一片闪存芯片被选中以及闪存芯片地址的如何区分呢?一般靠以下三种方法:① 不同的通道选择,例如8 个通道中的某一个通道中的闪存芯片;② 不同的片选信号,例如CE0、CE1、CE2、CE3等;③ 通道号和片选信号组合,例如某个通道和某个片选信号确定某个具体的芯片。DRAM缓存电路一般只有一个芯片,容量多为256MB或512MB,也有的硬盘采用内置DRAM缓存,没有外置的DRAM缓存,要写入闪存的数据先放入DRAM缓存中,当保存到一定数量的数据后,再一块写入闪存,以提高硬盘的使用寿命。SATA接口则分为电源输入接口(5V输入)和信号接口两部分。SATA接口完成CPU和硬盘之间数据传输的功能。
CPU要写入硬盘的数据经由SATA接口,送给主控芯片,主控芯片放入缓存中,然后再写入由闪存芯片组成的存储阵列中。当CPU要读取数据时,同样经SATA接口将操作指令和地址发送给主控芯片,主控芯片将闪存阵列中的数据读出,经由主控芯片处理,送到SATA接口,由CPU取走所需的数据。
3.SSD固态硬盘电路的维修
首先要准确判断是不是SSD硬盘的问题,然后再进行维修。最直接有效的判断方法就是用一块接口相同,好的普通机械硬盘或者好的SSD硬盘替换一试。当判断出是SSD硬盘的问题时,需要进一步区分是硬件的问题还是软件的问题,根据由简至繁,由易至难的原则,可以先看硬盘电路的外观,有无明显的异常现象和明显的故障,例如虚焊(按压一下所怀疑的芯片,看是否变化)、烧毁、缺件/掉件,印制电路板有无短路/断路,以及元器件是否发烫等明显问题。如果没有问题,就测量下硬盘中各个芯片有无供电,电压值的大小是否正常,主控芯片的晶振时钟电路是否正常,复位电路是否正常。如果经过检测,都大致正常,则可以刷个固件试试,有许多问题是因为固件的原因而引起的,刷固件时有的需要刷最新固件,有的需要刷稳定的固件,这个人要注意。如果刷了固件还是不行,则说明问题还是在硬件电路上,需要进行进一步检查和测量。例如,测量闪存芯片的各个引脚电阻和电压值是否正常,测量DRAM缓存各个引脚的电阻和电压值是否正常等,这些内容都在前面的相关部分做了叙述,不再重复讲解。
图5-20 SSD硬盘电路原理图
SSD硬盘的常见故障多以固件问题居多,例如卡住不动,运行过程中死机、报错、容量减少等一些与程序运行有关的问题;有的则是SSD硬盘电路中采用劣质的闪存芯片而引起的故障,可将有问题的闪存芯片拆下来试试;也有一些小的电阻或电容损坏引起的问题;如果开机快,上网和运行慢,则是垃圾碎片太多,需要优化,或者格式化。