SATA3.0的正式名称是SATA Revision 3.0,或者SATA 6Gbit/s。6Gbit/s即每秒可传输6G比特数据,这个数字是如何跟我们常见的固态硬盘读写速度联系起来的呢?
常见的SATA固态硬盘在CrystalDiskMark测得的顺序读取速度都在550MB/s左右。即便考虑到1字节=8比特,还是难以同750MB/s(6000/8)直接联系起来。为什么SATA固态硬盘跑不到理论速度?
显然,我们漏掉了一些影响因素。数据在电脑中以二进制0和1来表达,在传输过程中为保持信号DC平衡,连续的0或1不能超过5位。因此需要使用8B/10B算法将1个字节对应的8个比特数据编码成10比特。
8B/10B编码广泛应用于SATA3.0、USB3.0和PCIE1.0/2.0中,它确保了数据传输稳定,但也会损失20%的传输带宽。
因此,SATA3.0的有效传输带宽就从750MB/s缩水到600MB/s(750x8/10)。群联PS3111主控支持数据压缩,使用CrystalDiskMark全零测试可以得到的读取速度峰值依旧达不到600MB/s的理论数值,这其中的差距又是怎样产生的呢?
数据在SATA中的传输需要遵守一定的规则,传输层将控制信息和要传输的数据被封装在帧信息结构(FIS)当中,并负责流量管理和控制。
链路层计算CRC纠错信息、加扰并进行8B/10B编码,再加上SOF和EOF封装成Frame。
这些复杂的控制过程都会产生一定的延迟和损耗,所以最终能实现的速度就会比600MB/s的理论数值低一些。
作为普通消费者我们无需详细了解上面这些复杂的技术细节。我们只需知道,固态硬盘很少用到出纯粹的顺序读取或顺序写入,作为系统盘使用时处理的更多是随机存取,特别是读取和写入一起发生的混合读写,而这些使用模式通常并不会触及到SATA3.0的带宽限制。
当然,新一代NVMe协议可以降低存取延迟,并且支持HMB主机缓存加速技术。再加上目前入门级的NVMe固态硬盘和SATA型号的差价已经很小,所以只要主板支持,还是NVMe SSD更香。