自2003年第二季度Intel推出支持SATA 1.5Gbps的南桥芯片(ICH5)后,SATA接口取代传统PATA(并行ATA)的态势日渐明显。此外,SATA与现存于PC上的USB、IEEE1394相比,在性能和功能方面的表现也很突出。然而经过一年的市场洗礼,原有的SATA 1.0/1.0a (1.5Gbps)规格遇到了一些问题。2005年SATA硬盘步入了新的发展阶段。性能更强、配置更高的SATA2.0产品已经出现在市场上,而这些高性能的SATA2.0硬盘的到来无疑加速了硬盘市场的转变。
SATA规范发展历程
SATA是Intel公司在IDF2000大会上推出的,该技术可以让用户拥有高效能的硬盘,却不必牺牲资料的完整性。SATA最大的优势是传输速率高。SATA的工作原理非常简单:采用连续串行的方式来实现数据传输从而获得较高传输速率。2003年发布SATA1.0规格提供的传输率就已经达到了150MB/s,不但已经高出普通IDE硬盘所提供的100MB/s(ATA100)甚至超过了133MB/s(ATA133)的最高传输速率。
SATA在数据可靠性方面也有了大幅度提高。SATA可同时对指令及数据封包进行循环冗余校验(CRC),不仅可检测出所有单bit和双bit的错误,而且根据统计学的原理,这样还能够检测出99.998%可能出现的错误。相比之下,PATA只能对来回传输的数据进行校验,而无法对指令进行校验,加之高频率下干扰甚大,因此数据传输稳定性很差。
除了传输速度、传输数据更可靠外,节省空间是SATA最具吸引力之处,更有利于机箱内部的散热,线缆间的串扰也得到了有效控制。不过SATA 1.0规范存在不少缺点,特别是缺乏对于服务器和网络存储应用所需的一些先进特性的支持。比如在多任务、多请求的典型服务器环境里面SATA1.0硬盘的确会有性能大幅度下降、可维护性不强、可连接性不好等等缺点。这时,SATA2.0的出现在这方面却得到了很好的补充。
SATA2.0强在哪里
1.3Gb/s传输速率
在SATA2.0扩展规范中,3Gb/s被提到的频率最高。由于SATA使用8bit/10bit编码,所以3Gb/s等同于300MB/s的接口速率。不过,从性能角度看,3Gb/s并不能带来多大的提升,即便是RAID应用的场合,性能提升也没有想象的那么大。因为硬盘内部传输速率还达不到与接口速率等同的程度,而且接口速率的影响也不是很大,在大多数应用中硬盘是将更多的时间花在寻道上,而不是传输上。接口速率的提高直接影响到的是从缓存进行读写的操作,所以理论上大缓存的产品会从3Gb/s上得到更大的好处。从现有情况来看,相信3Gb/s的普及速度会加快,不过市场仍会存在一个1.5Gb/s和3Gb/s的共存期。
2.支持NCQ技术
在SATA2.0扩展规范所带来的一系列新功能中,NCQ(Native Command Queuing,原生命令队列)功能最令人关注。硬盘是机电设备,容易受内部机械部件惯性的影响,其中旋转等待时间和寻道等待时间就大大限制了硬盘对数据访问和检索的效率。
具体来说,如果磁头停在目标磁道上方,却错过了起始LBA(Logical Block Addressing,逻辑块寻址),就会产生旋转等待时间。最糟糕的情况是,硬盘将经过旋转一整圈的时间才能访问起始LBA,然后再继续从剩余的目标LBA中读取数据。如果以LBA相对于磁头角度位置随机分布,那么平均旋转等待时间是最大旋转等待时间的一半。而寻道等待时间是读/写磁头准确定位于存储目标LBA的磁道上方所占用的时间。例如,执行单一的读命令时,磁头只须访问一条磁道,但如果有多条待执行命令,硬盘就要访问所有目标LBA,从而须花费大量时间。
如果对硬盘这个机械动作的执行过程实施智能化的内部管理,则可以大大提高整个工作流程的效率。即取出队列中的命令,然后重新排序,以便有效地获取和发送主机请求的数据,在硬盘执行某一命令的同时,队列中可以加入新的命令并排在等待执行的作业中。如果新的命令恰好是处理起来机械效率最高的,那么它就是队列中要处理的下一个命令。但有效的排序算法既考虑目标数据的线性位置,也考虑其角度位置,并且还要对线性位置和角度位置进行优化,以使总线的服务时间最小,这个过程也称作“基于寻道和旋转优化的命令重新排序”。
台式PATA硬盘队列一直被严格地限制为深度不得超过32级。如果增加队列深度,可能会起到反作用——增加命令堆积风险。通常PATA硬盘接收命令时有两种选择:一是立即执行命令,二是延迟执行。对于后一种情况,硬盘必须通过设置注意标志和Service位来通知主机何时开始执行命令,然而硬盘不能主动与主机通信,这就需要主机定期自动轮回查询所有硬盘扇区,发现Service位后将发一条Service命令,才能从硬盘获得将执行哪一条待执行命令的信息。而且Service位不包含任何对即将执行命令的识别信息,所必需的命令识别信息则以标记值的形式与数据请求一同传输,并仅供主机用于设置DMA引擎和接收数据缓冲区。这样主机就不能预先掌握硬盘所设置的辅助位是哪条命令设置的,数据传输周期开始前也无法设置DMA引擎。这最终导致PATA硬盘效率低下。
NCQ包含两部分内容。一方面,硬盘本身必须有能力针对实体数据的扇区分布,对命令缓冲区中的读写命令进行排序,同时硬盘内部队列中的命令可以随着必要的跟踪机制动态地重新调整或排序,其中跟踪机制用于掌握待执行和已完成作业的情况,而命令排队功能还可以使主机在设备对命令进行排队的时候,断开与硬盘间的连接以释放总线,一旦硬盘准备就绪,就重新连接到主机,尽可能以最快的速率传输数据,从而消除占用总线的现象。另一方面,通讯协议的支持也相当重要,因为以前的PATA硬盘在传输数据时很容易造成中断,这会降低主控器的效率,所以NCQ规格中定义了中断聚集机制,相当于一次执行完毕数个命令之后,再对主控器回传执行完毕的信息,改善处理队列命令的效能。
从最早的希捷7200.7系列硬盘开始,NCQ技术应用于桌面产品至今已超过半年,不过目前NCQ对个人桌面应用并没有带来多大的性能提升,某些情况下还会引起副作用。而且不同硬盘厂商的NCQ方案存在差异,带来的效果也不同。所以对NCQ我们要理智对待,硬盘支持固然多了一项可以提高性能的技术,但没有也不必在意。
3.端口选择器(Port Selector)
目前的SATA2.0扩展规范还具备了Port Selector(端口选择器)功能。Port Selector 是一种数据冗余保护方案,使用Port Selector可使Host(主)端口的两个独立SATA Port连接至同一设备,以建立连接设备端的备份路径。
简单来说,端口选择器就是为一个硬盘提供两条连线连接到控制器,其中一条是冗余的(即多出来的意思)。这种设计的好处是万一其中一条连线断了,还有另一条可以连接。由此看来,我们不但可以用RAID防止硬盘损坏,还能用这个Port Selector来防止连接线损坏。
4.端口倍增器(Port Multiplier)
SATA 1.0的一个缺点就是可连接性不好,即连接多个硬盘的扩展性不好。因为在SATA 1.0规范中,一个SATA接口只能连接一个设备。SATA的制定者们显然也意识到了这个问题,于是他们在SATA2.0中引入了Port Multiplier的概念。Port Multiplier是一种可以在一个控制器上扩展多个SATA设备的技术,它采用4位(bit)宽度的Port Multiplier端口字段,其中控制端口占用一个地址,因此最多能输出15个设备连接----与并行SCSI相当。Port Multiplier的上行端口只有1个,在带宽为150MB/s的时候容易成为瓶颈,但如果上行端口支持300MB/s的带宽,就与Ultra320 SCSI十分接近了。Port Multiplier技术对需要多硬盘的用户很有用,不过目前提供这种功能的芯片组极少。
5.服务器特性
在SATA2.0扩展规范中,还增加了大量的新功能,比如防止开机时多硬盘同时启动带来太大电流负荷的交错启动功能;强大的温度控制、风扇控制、环境管理;背板互联和热拔插功能等。这些功能更侧重于低端服务器方面的扩展。
6.接口和连线的强化
作为一个还在不断添加内容的标准集合,SATA2.0最新的热点是eSATA,即外置设备的SATA接口标准,采用屏蔽性能更好的两米长连接线,目标为最终取代USB和IEEE 1394。在内部接口方面,Click Connect加强了连接的可靠性,在接上时有提示声,拔下时需要先按下卡口。这些细微的结构变化显示出SATA接口更加成熟和可靠。
写在最后
SATA2.0不是特指3Gb/s或NCQ,也不是特指上述其他扩展特性。SATA2.0可以指扩展特性中的任何一个,也就是说具备上述任一个特性或组合的产品都可称为SATA2.0硬盘。由于此前SATA规范非常混乱,SATA-IO组织在2005年秋季IDF上正式发布了SATA2.5规范。但从实际情况来看,新的SATA2.5规范是SATA 1.0a规范和6个SATA 2.0扩展规范的统一体,它的推出只是方便了系统商或者硬盘生产商,因为大家现在可以用一个规范来代替现有的一切标准。其实,对于普通消费者来说,大家从SATA2.0或SATA2.5之类的名称中并不能得到太多有用的信息,我们真正应当关心的是新硬盘具备哪些功能、优势,以确定是否值得我们为它买单。