免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1591 | 回复: 0
打印 上一主题 下一主题

什么是真正的SATA2和NCQ技术 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-28 16:19 |只看该作者 |倒序浏览

现在SATA2在市场上将成为众多DIY考虑的对象,有人说SATA2把硬盘外部传输速率提升到300MB/s,也有人说SATA2的精髓体现在NCQ技术上。这些说法都没有错,但他们更多只讲到了问题的某个方面。而这些含糊不清的概念被延伸到产品上,一些存储设备制造商在宣传新产品时为了制造技术先驱的“明星”效应,利用SATA2规范的漏洞,在只援用部分新功能的情况下,就宣称自己的产品是SATA2硬盘。
到底什么才是真正意义的SATA2规范呢?
其实,SATA2是一系列技术与规范的总称,包括有3Gbps高传输速率;Native Command Queuing(NCQ)本机命令队列;背板互连;交错旋转预备;硬盘活动提示;热拔插和到位检测;Port Multiplier;可升级到SAS等等。总之,SATA2带来了更快的外部传输速度、更为优化的本地命令执行方式、更多的硬盘状态监测技术,以及用一揽子技术为风格存储和服务器存储提供解决方案。
那目前什么样的硬件支持SATA2 300MB/s传输速率呢?
首先要求硬盘和集成于主板南桥内的磁盘控制器两者皆兼容SATA2规范,主板南桥到少是Intel ICH7系列(i955X、945P/G、以及刚发布的975X)、VIA的VT8251、nVIDIA的nForce4 Ultra、SLI(IE)芯片、C51系列、ATI SB450.ULiM1573南桥或更新的产品,才能有使用SATA2。如果不是上述系列的主板,那么你的SATA2如果可用的话,只能像SATA1一样150MB/s。
虽然SATA2的外部传输速达到了300MB/s,但它比过去的快多少呢?
在一些实际的测试结果中得到结论,都将我们引向一个事实,由于硬盘内部传送速率远远落后于外部传输速率,在配备单个硬盘的电脑上我们几乎不能够体会到任何速率上的变化。
NCQ技术对SATA2的意义?
NCQ技术作为一项必须要有软件支持的技术,等操作系统支持,等硬盘驱动支持,现在阶段的NCQ有跟没有,没啥区别。(不过日前看到日立的一款80GSATA2硬盘好像有支持NCQ技术的参数)。而且即便将来的软件端支持逐步有所改善,我们也不要期望太高,通常这种优化效果提升性能会比较有限,从理论上看它是堪称完美的,但实际操作中问题不少,首先,如果你的数据在硬盘上恰好是顺序存储得当的,那NCQ肯定无效了;其次,系统中执行的命令序列千头万绪,优化不得当不排除极端状况下有效果更糟的情形,这种情况在多任务环境中尤其容易出现。
SATA2意义何在??
SATA2的意义更多存在于多硬盘的系统中。同现有的磁盘矩阵系统相比,SATA2磁盘系统最主要的两大优势就是“高速的数据传输速度”和“低廉的价格”。随着磁盘价格不断下挫、性能不断提升,基于SATA2的存储系统将会迅速普及。当然它在稳定性和布线及散热上的问题还必须作出更多努力。由于SATA-IO组织并没有严格定义符合多少规格才能帖上SATA2这个印记,所以市场中出现了技术和功能有很大出入的硬盘产品却都被标上SATA2标牌的情况。为了阻止硬盘厂商滥用SATA2名称造成混乱,SATA-IO发布了新的SATA2.5版本规范,将大多数主流SATA架构技术都整理进一个单一的文档。
磁盘的发展方向??
多年以来,硬盘一直采用磁场的磁化方向与盘片表面平行的记录方式,我们可以把硬盘的盘片看作是一个二维的平面,磁单元沿着盘片旋转的方向排列,磁极相邻,首尾相接。整整一圈下来,就是一个磁道,盘片上的所有磁道都是同心圆。但是当存储面密度提高后就可能会遇到所谓的超顺磁性现象,给读写数据带来困难。这样只有靠垂直记录技术来完成了,它通过改变磁存储单元磁性的方向,让硬盘的磁盘密度最少可以提升到现有的4~5倍,也就是磁头经过相同的磁盘路径可以读取4~5倍的数据,如果磁头读取速度不会成为瓶颈,那硬盘的内部传送速度就会向上增长。显然这时候,SATA2或SATA2.5才会变得更有意义。
选够SATA2硬盘?
SATA2为我们以后使用更高性能的硬盘打下了坚实的基础,但它在今天不会给你的电脑带来什么改变。说不准以后闪存会取而代之。对于新装电脑用户,在经济宽裕的条件下,可以选用它,这也没什么不好;但对于升级用户,大可不必考虑,还是把钱用在更要紧的地方吧!(目前多的硬盘基本上都支持SATA2!)

官方详解:
请记住以下几个日期,它们注定将成为存储史上重要的里程碑:2003年7月,英特尔与希捷共同公布了SATA的重要特性——本地命令序列(NCQ-Native Command Queuing)技术;2004年6月,英特尔最新的ICH6是首个支持NCQ的主板芯片组I/O控制芯片;也是在这月,希捷率先推出支持NCQ的桌面级硬盘——酷鱼7200.8。大家可能注意到它们都有一个关键词NCQ,那么什么是NCQ呢?
硬盘工作中一个主要的难点在于,由于软、硬件的限制,磁头很少能依盘片转动对磁盘进行读写操作,系统会对任何一个位置的任意数据提出读写请求。限于结构的限制,这个过程并不轻松。事实上,这个过程也是制约硬盘性能提升的主要原因之一。
NCQ作为SATA区别于PATA的重要特性,在不改变硬盘基本结构的前提下,对要执行的命令排序进行优化,达到提升性能的目的。此外,由于机械结构的效率提高,磨损减少,硬盘的使用寿命也得以提升。
一、命令序列的发展

NCQ是SATA Ⅱ新增的特性中唯一对提升性能有帮助的。借助SATA改进的DMA机制,NCQ结束了PATA命令序列可有可无的尴尬历史,顺应了PC应用环境向多线程发展的趋势,也能更好地满足入门级服务器和网络存储的要求。
PATA命令序列协议早在1997年就被加入ATA/ATAPI-4规范,但直到现在仍仅有日立(原IBM)一家硬盘厂商提供支持该协议的产品(从腾龙75GXP开始,就增加了被称为“Tag'n'Seek”的技术,实质上就是命令序列)。要实现PATA命令序列并不复杂,但为什么支持者寥寥呢?
组成PATA命令序列的指令包括DMA读取序列(Read DMA Queued)、DMA写入序列(Write DMA Queued)和伺服指令(Service),其中后者是出于PATA DMA的总线从属性需要。由于PATA非对等协议的原因,硬盘不能主动与主机通信,只能由主机定期交替轮询(同一通道内的)主盘和从盘。这样一来,硬盘在接收到来自主机的命令后,或立即执行,或通过设置注意标志和伺服位来通知主机何时执行命令。主机发现伺服位后,会发出一条伺服命令,以便从硬盘得到将执行哪一条待执行命令的信息。
队列的客观属性决定了其中至多有一条命令能立即执行,因此在队列深度大于1的队列中伺服命令不可避免。由于伺服位不包含任何对将执行命令的识别信息,所必需的命令识别信息要以标记值的形式与数据请求一同传送,且仅供主机用以设置DMA引擎和接收数据缓冲区,主机不能预先掌握硬盘所设置的辅助位来自哪条命令,数据传输周期开始前也无法设置DMA引擎。本来最清楚数据存放在何处和怎样访问的硬盘,现在却处于完全被动的地位,有关数据传输的所有准备工作和决策都是由主机做出的,自己只剩下设置伺服位,等待主机下一次查询的份儿(很类似于中国足球的情况)。最后,受PATA DMA的总线从属性限制,PATA命令序列带来的性能改善,很轻易地就被协议开销抵销了。在队列深度较浅时,性能甚至比不采用命令序列的情况有所下降。所以,尽管接收到来自主机的命令就执行(而不是排队)看起来很傻,可PATA硬盘也别无选择。没有命令排队的后果就是,随着并发访问程度的提高,PATA硬盘与SCSI硬盘之间的性能差距被越拉越大。
SATA在DMA方式上的改进,不仅避免了PATA命令排队的协议开销,还提高了无序数据传送的效率。由于PATA DMA的总线从属性和轮询间隔造成的等待,PATA硬盘只有在收到伺服命令后,才能将数据写入缓存,然后整块传输;在SATA中,则由硬盘决定何时开始传输数据,主动权掌握在硬盘手中。没有了瞎指挥,SATA就不会因为采用命令序列后造成的性能不升反降的尴尬,客观上也为NCQ的推出铺平了道路。
限于实际情况,NCQ技术的前身CQ(Command Queuing)在PATA上并未得到怎样的实际应用,而在SCSI界面上CQ的分支技术TCQ(Tagged Command Queuing)则得到较多的应用,NCQ可说是TCQ的简化版本。
在传统的PC单线程应用中,PATA硬盘可按主机软件安排的顺序执行命令,因此没有命令序列还不是很严重的问题。但是,随着超线程技术的出现,多线程应用将逐渐在PC领域普及,传统的指令执行方式使硬盘子系统愈发显得力不从心,NCQ基于SATA协议,又借鉴了TCQ的优点,可谓生逢其时。
二、NCQ的原理及实现方法

要深入了解NCQ,首先我们必须了解硬盘的工作原理。自从1973年IBM发布昵称为“温彻斯特”的3340硬盘以来,硬盘的基本结构就没有改变。所以,至今硬盘也被称为“温彻斯特”硬盘。“温彻斯特”硬盘对数据读写是怎么进行操作的呢?硬盘盘片(Platter)被划分为很多个同心圆(磁道-Track)。硬盘内所有盘片(有的硬盘由多个盘片组成)上不同面(单碟有两面)的同一磁道组成一个柱面(Cylinder),写入数据就是按照磁头从外到里的顺序。可惜读取时不是按这样的顺序,一个主要的难点在于由于软、硬件的限制,磁头几乎不能按固定的顺序对数据进行读取,系统会要求读取任意位置的数据。限于结构的限制,这个过程并不轻松;事实上,这个过程也是制约硬盘性能提升的主要原因之一。这方面有两个参数尤为重要:寻道延迟(Seek Latency Time)和潜伏期(Rotation Latency Time)。

(图01,盘片上密密麻麻的同心圆即为磁道)

1.优化寻道延迟
磁头通过定位并移动到包含目标逻辑块地址(LBA-Logical Blocking Addressing)所在磁道所花的时间被称为寻道延迟。如果指令没有经过排序,磁盘需按时间先后顺序对指令中涉及的所有LBA进行访问。以电梯为例,如果3个人同时乘电梯,A先按按钮要到10楼,B要到5楼,C到15楼。按照按下按钮的先后时间,电梯先到10楼,再下来到5楼,又上到15楼!很明显,大量时间被浪费,效率降低了。虽然听起来有些不可思议,但在很长一段时间内,桌面级硬盘仍以上述方式工作。而电梯已明白将指令进行重新排序会更经济、更快捷。总之,能优化使得寻道延迟最小化的方式是使磁头臂移动的距离最短为原则。

(图02,寻道延迟来自于磁头臂的寻道动作)
SATA硬盘整个排序队列是动态的,也就是说在任何时间,额外的指令都可被添加到队列里来排序。这些新添加的命令或许会被合成到当前执行过程,也可能会排到下一个执行过程,这一切都取决于哪种方式令机械结构工作起来更具效率。
然而,直接依据上次指令完成时磁头所在的LBA来排序并不总是最有效率的做法。硬盘所采用的决定最优排序的算法复杂的多,需要考虑到可能存在的磁头切换过程(尤其在硬盘包含多张盘片的情况下)、移动到不同磁道所需的时间、不同的工作模式(比如说,如工作在静音模式下,需考虑的因素还会涉及到寻道过程的位移)、开始工作时磁头的位置及移动方向、磁头臂的加速性能、读缓存的命中率、写缓存是否启用等。
2.优化潜伏期
潜伏期是指磁头移动到正确的磁道后,随着盘片的旋转,存储数据的LBA来到磁头所需的时间。在最糟糕的情况下,磁头移动到正确的磁道到开始读取LBA时,会浪费整整一个盘片旋转周期。潜伏期决定于硬盘转速,它跟硬盘转速之间的关系为平均潜伏期=30/硬盘转速。5400转的平均潜伏期为5.56ms;7200转为4.17ms;10000转的硬盘潜伏期为3ms。

(图03,潜伏期=30/硬盘转速)
相较于PC系统的其他设备,硬盘子系统I/O延迟导致数ms的延迟是很漫长的时间。尤其考虑到现在的操作系统允许多线程并行操作,并且类似于HT的技术可实现多个单独线程的同步运作。虽然阵列技术通过多个硬盘并行的原理可提升I/O性能,但鉴于桌面市场的现状,短期内普及阵列显然是不切实际的,所有的数据都需对独一的硬盘进行操作,对硬盘的压力也随之增大。
更高的转速是降低潜伏期的一个有效办法。然而,转速的增加会带来其他方面的代价。在磁密度越来越大的今天(单碟100GB马上就会成为主流),巨大的热量会大大降低硬盘的可靠性;而噪声也是不容忽视的,相信每个见识过万转SCSI硬盘巨大噪声的人对此会有更清晰的理解。
潜伏期也可通过另外两个途径来缩短。其一就是对尚未执行的指令进行排序从而使潜伏期最小。这种优化与线性的寻道延迟的优化类似,唯一的区别是将线性问题变成了角度问题。另一种优化是利用被称为乱序传送“Out of Order”的数据传送方式,这意味着磁头不必须从数据起始LBA开始读取,可从任意LBA开始进行指令的执行,在经过起始LBA时再把相应的数据组合发送。就像建造桥梁一样,并不一定要从一头按部就班修到对岸,也可以从中间开始往两边修。在使用乱序传送的情况下,即便最慢的情况下,整个传输过程也能在一个盘片旋转周期内完成。不采用乱序读取的话,除了一个旋转周期外,还需要加上访问所有LBA所耗费的时间。
很明显,磁盘需对未执行的指令进行排序以减少机械组件的损耗并减少I/O延迟。这样的技术最好还要便宜、简单、可靠,利于大规模采用。以前的算法主要考虑降低寻道延迟,而后来发现某些时候单纯减少寻道延迟反而会增加潜伏期从而造成整个访问延迟的增加,性能不升反降。有效的重排序算法要考虑到线性和角度延迟,并且同时对两者进行优化以使访问延时最小。这个步骤被称为“基于寻道、优化潜伏”,NCQ就扮演了这样一个角色。命令序列的另外一个副作用是减少机械组件负荷,降低磨损,大大提高了可靠性。


三、NCQ优势何在?

我们已经介绍了NCQ的工作原理,现在让我们来直观地看看采用NCQ与没有采用NCQ相比会有什么优势。

(图04)
如上图是磁盘执行命令的模拟图,盘片沿着箭头方向也就是逆时针方向旋转。如不采用NCQ,按命令发出的先后次序,磁头首先访问A,接下来切换到B所在磁道访问B,最后再访问C,总共需要耗费1.5个旋转周期。而如采用了NCQ,那么磁盘会对命令序列进行优化,首先访问A,接下来访问更近的C,最后才访问远端的B,只需要1个周期就可完成。这还是仅使用单磁头的情况,如有多个磁头,没有采用NCQ浪费的周期更为可观。加入序列的命令越多,NCQ的优势越能得到发挥。
NCQ通过高效率的指令排序提升了多任务环境下硬盘的性能。除此以外,NCQ还带来了3个基于SATA协议的新特性来提升性能,包括无风险状态返回机制(Race-Free Status Return Mechanism)、中断聚集(Interrupt Aggregation)、单方DMA (First Party DMA -FPDMA)。
1.无风险状态返回机制
NCQ允许在任何时间返回任何命令的状态信息且不需与主机进行信号交换。驱动器可连续甚至同时针对多个命令发出命令已完成的信息。PATA的命令序列则不具备此机制。每次命令完成,主机和硬盘都需交换信号;为了完成一条命令,主机必须向硬盘发布一条新命令以确定下一个待完成的服务命令。在此之前,硬盘不能返回其他命令的状态信息。这样一来,就显著增加了延迟时间。

支持NCQ的nForec4芯片组
2.中断聚集
NCQ每个命令顶多只需一次中断。实际上,因为具备中断聚集的特性,每条命令的中断次数少于一次。如果硬盘在短时间内完成多个命令,那么各条命令的中断可被控制器集成为一条中断。这样,主机的驱动器软件就只收到一次中断,从而减少了延迟时间。而PATA每条命令则有两次中断,因为PATA TCQ信息要求每步都有一次信号交换:针对数据传输建立DMA引擎的时候需要一次中断,完成命令的时候又需要一次中断。

支持NCQ的i915芯片组

3.单方DMA(FPDMA)
这个机制允许驱动器决定下一次数据传输并直接选择相应的主机内存缓存,而不需主机软件的干预。驱动器向控制器发送一个数据包,指定数据传输所针对的命令的标识。然后控制器命令把命令的分散/集合表指针载入DMA引擎,随后DMA传输立即开始。PATA则是当驱动器准备传输资料时,产生一个中断,接着控制器处理中断,然后其必须发出服务命令。当上述动作完成后,控制器才能为命令配置DMA引擎。中断服务延迟和服务命令都会影响性能。

支持NCQ的迈拓250GB硬盘
虽然继承了PATA的非对等“传统”,但SATA利用FPDMA促成主机控制器为队列命令的数据传输选择适当的目标或源物理内存区域并初始化DMA引擎,进而可自己安排传输数据的时间和顺序。为了实现硬盘与主机之间的数据和状态通信,SATA 1.0定义了3种类型的帧信息结构(FIS),分别是初始化FPDMA、激活DMA和设定设备位,NCQ可直接使用它们而无需修改现有SATA协议,不过增加了读/写FPDMA队列这两条命令。
NCQ允许支持和不支持该协议的硬盘连接在一个主机控制器上,也支持两者共存于同一磁盘子系统中。主机控制器驱动程序通过识别设备(Identify Device)功能检测硬盘是否支持NCQ,本身还要支持读/写FPDMA队列,因此必须做出相应的改动,这也是在ICH5下安装系统,在ICH6上无法启动的原因。
总结

毋庸置疑,NCQ绝对是一个非常优秀的技术,在已知的测试中NCQ都对性能带来了不小的提升。在SATA官方网站上公布的测试结果,同样型号、同样容量的硬盘,支持NCQ的比不支持NCQ的性能最多提升13%。NCQ相当于存储界的超线程技术,联想到超线程刚发布时由于缺乏软件支持性能提升幅度不大,我们有理由相信NCQ能取得比这更好的结果。今年以来,主板I/O控制器开始支持NCQ,随着支持NCQ的SATA硬盘上市,NCQ终于不再是厂商宣传SATA的噱头,而是实实在在地出现在市场上。随着时间的推移,SATA在得到普及后,NCQ必将得到更深入的开发和更好的利用。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/69856/showart_713357.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP