SSD常见问题的技术分析

时间:2023-12-16 17:06:26

AHCI对性能的影响

AHCI,全称Advanced Host Controller Interface,即高级主机控制器接口,是一种相比老旧的“IDE虚拟模式”更适合新一代SATA存储设备通信的协议(如果主板BIOS不开启AHCI,那么SATA设备其实是工作在IDE虚拟模式下的,南桥会把SATA设备认为是老旧的IDE设备,占用主板IRQ 14/15),通过它可激活设备的高级SATA功能如原生指令队列和热插拔,支持64bit LBA寻址(大容量机械盘会需要),完全抛弃老一套的“主/从”设备概念,高级电源管理(HIPM/DIPM),端口复用等等。
       其中对SSD性能有影响的就是NCQ(Native Command Queuing,原生指令队列)。目前主流的SSD产品都已支持NCQ,NCQ主要是为了在高并发多线程读写的情况下重新排列读写指令顺序,尽量提供更高的并行读写可能性,从而掩盖多线程并发读写延迟而产生的。在SSD支持的情况下,开启AHCI模式可以使多线程、深并发队列的读写请求,通过NCQ重新排列读写指令操作顺序来让SSD按NCQ已重排的串行数据流做并行读写操作,这样便可以大大的提高随机读写IOPS性能。
       技术上说,Trim指令也支持IDE模式,不过在IDE模式下执行Trim时,他会禁用系统的读写指令。因此Trim的时候可能造成系统出现无响应,而具体时间取决于Trim的范围,一般在几秒到几分钟,非常影响用户体验。

LPM节能技术的作用

LPM,全称Link Power Management,是SATA接口物理层上的一个功能,它能够将主机(Host)和存储设备(Device)的链接分成3种形态:Active、Partial和Slumber形态,目的是降低物理层总线传输速度,这样即可有省电的功效。由主机(Host)发出改变形态请求的我们叫做HIPM(Host-Initiated LPM, HIPM),而直接由设备(Device)发出形态请求的叫(Device-Initiated LPM,DIPM) 
       Intel Rapid Storage Technology驱动支持LPM功能来降低高速高容量存储设备的耗电。当然,LPM功能首先需要SATA硬盘支持这个功能。从ICH6M开始,笔记本平台安装完Intel Matrix Storage Manager驱动(RST 驱动前身)后就默认支持LPM。台式机平台从ICH9R开始支持(需要安装Intel Matrix Storage Manager 7.5版本及更新的驱动),但是默认并没开启。 
       从Intel Rapid Storage Technology 10.0版驱动开始,默认安装完驱动后是开启LPM的(包括所有笔记本和台式机平台)。 
所以造成高速SSD使用中卡顿的问题很可能是Intel Rapid Storage Technology驱动的问题导致(还有部分可能是主机板不兼容,或者设置问题导致),既然这个技术是为了节能而开启的,为何会带来卡顿问题呢?目前主流的SSD可都是已支持LPM技术的。 
       本站neeyuese猜想带来卡顿的原因主要有下面几个:
       1.主机发送HIPM形态改变指令,而SSD设备标准不同,不能很好的支持,出现兼容问题导致卡顿;
       2.主机发送HIPM形态改变指令太频繁,导致SSD设备不能及时反映,出现不兼容而卡顿;
       3.LPM开启后造成SATA总线传输延迟增加,导致高速SSD的传输受到阻塞而卡顿;
       4.SSD内部的DIPM和主机请求的HIPM发生冲突导致卡顿。 
       不管如何,目前解决卡顿的方法就是完全禁用LPM,虽这样会带来耗电的增加,但总比卡顿来得舒服

SSD性能(跑分)下降的原因

对于接触SSD不久的人,经常都会产生一种疑问,那就是当SSD使用过一段时间后,再运行测试软件,得到的成绩几乎都肯定要比刚买回来时差,而且时间越长,差距就越明显,这是为什么呢?
       大家从之前的内容已经了解SSD的工作原理及特点,相比传统HDD,SSD最大的差异就在于其使用的NAND闪存无法进行覆盖操作,在已经被写入数据的位置,要重复写入的话,SSD就必须先对该位置进行擦除的操作,而且擦除操作的最小单位比写入操作的要大。说到这里,相信大家都已发觉原因所在了。
       SSD写入数据后,相同的地方未进行擦除是无法再写入数据的,当有需要写入新数据时,就只能写入到‘空闲’的地方,但若‘空闲’的地方不足以存放需要写入的数据,SSD便要进行GC,而GC操作是肯定要消耗占用一部分的SSD性能的,因此此时进行测试,所得的成绩自然就比刚买回来的时候要差,那时因为没写入过数据,全盘空间都是‘空闲’的,没需要进行GC,SSD自然可以用全部性能来进行测试。
            SSD常见问题的技术分析
       上面是一张本站neeyuese所画关于SSD三种状态的图片,大家看过后应该更能理解SSD下降的性能都跑到什么地方去了。

SSD为何必须分区对齐

通过前面SSD相关知识的介绍,大家应该已经知道,NAND颗粒的最小写入单位是页,而一般每个页的大小是4KB。在HDD时代,分区起始扇区的定义在第63个扇区,也就是31.5KB的位置,这里各位应该会发现问题了,31.5KB并不是4KB的整数倍,若继续使用这个分区方式,势必导致以后每写入一个页(4KB)的数据,都必须要横跨写入到2个页内,这样不单写入时间增加一倍,WA同样也增加了一倍(写一页实际变成写二页)。因此不管从任何方面来说,对SSD都不是一件好事,既影响性能表现(最显著的就是测试成绩低下),也影响SSD的寿命。
            SSD常见问题的技术分析
       如图上所示: 图中SSD出现分区没对齐问题,读写正好在2个16KB边界,所以需要做2次读-改-写操作,那么我们说这时候的操作所需时间就 是原来的2倍。如果系统请求写入4KB,那么发生这种情况的概率就是25%(图中第一个4KB在边界,后面3个在16KB内,而第5个又到下个16KB边 界了),性能为原本的80%。如果把写入请求提升到32KB的话,发生的概率就是8/9了,随着请求容量的增大,差距就会缩小。所以对持续速度来说,分区不对齐并不会影响很大。

IOPS数值的意义

IOPS,中文为每秒操作数,代表一个在定义的数据传输尺寸大小下每秒能够操作这个尺寸数据的次数。数值越高代表对磁盘IO响应能力越好,可以提高系统IO的响应能力,大大提高用户体验。在一些高密度IO场合(大多数是企业级应用),IOPS是关键性能参数。但对于一般家庭消费者而言,10000的IOPS和100000的IOPS,并无多大差别,因为家用环境上,无法用到这么高的IOPS性能。