SATAII中NCQ技术来延长硬盘寿命

       我想很多人还没搞清楚NCQ到底是什么?NCQ提升的不是硬盘的性能,那个突发数据传输率对实际读取写入的速度并没有多大影响,他提升的是磁头读盘的效率,而不是速率!假如一个文件被分到了1-3-2-4-6-5扇区,没有NCQ技术的磁头就要按1-3-2-4-6-5这个顺序跳着读,而有NCQ技术的磁头则按1-2-3-4-5-6的自然顺序读,后者磁头的动作比前者要小,寿命要长!

      SATA规范支持许多新的功能,其中之一就是NCQ(Native Command Queuing全速命令排队)技术。它是一种使硬盘内部优化工作负荷执行顺序,通过对内部队列中的命令进行重新排序实现智能数据管理,改善硬盘因机械部件而受到的各种性能制约。NCQ技术是SATAⅡ规范中的重要组成部分,也是SATAⅡ规范唯一与硬盘性能相关的技术。

        首先让我们来看一下硬盘是怎样读写信息的。硬盘通过将信息写入磁盘磁道上的特定位置进行信息存储,硬盘访问磁盘上信息的过程如下:

    ● 寻找存储数据的目标磁碟(platter),访问该磁碟。

    ● 寻找磁碟上存储数据的目标磁道(track),访问磁道。

    ● 寻找磁道上存储数据的目标簇(cluster),访问簇。

    ● 寻找簇上存书数据的目标扇区(sector),访问扇区。

    ● 寻找目标数据,读取数据。

    通过上面的步骤,硬盘即可获取所需要的数据信息。硬盘写入数据的步骤也是如此,区别仅仅在于读操作变为写操作。大多数情况下数据存入硬盘并非是顺序存入,而是随机存入,甚至有可能一个文件被分配在不同盘片上。对于不支持NCQ的硬盘来说,大量的数据读写需要反复重复上面的步骤,而对于不同位置的数据存取,磁头需要更多的操作,降低了存取效率。支持NCQ技术的硬盘对接收到的指令按照他们访问的地址的距离进行了重排列,这样对硬盘机械动作的执行过程实施智能化的内部管理,大大地提高整个工作流程的效率:即取出队列中的命令,然后重新排序,以便有效地获取和发送主机请求的数据,在硬盘执行某一命令的同时,队列中可以加入新的命令并排在等待执行的作业中。显然,指令排列后减少了磁头臂来回移动的时间,使数据读取更有效。

如图所示,如果新的命令恰好是处理起来机械效率最高的,那么它就是队列中要处理的下一个命令。举个例子:比如向硬盘下达一组数据传送指令,由于数据在磁盘上分布位不同,磁头可能会先读取260扇区,再读取7660扇区,然后又读取261扇区……如果我们对指令进行优化排列,可以先读260扇区,接着依次读261扇区,最后读取7660扇区……显然,指令排列后减少了磁头臂来回移动的时间,使数据读取更有效。并且有效的排序算法除了考虑目标数据的线性位置,也会考虑其角度位置,并且还要对线性位置和角度位置进行优化,以使总线的服务时间最小,这个过程也称做“基于寻道和旋转优化的命令重新排序”。

某种程度上说NCQ像是一种特殊的碎片整理。

 

SATAII中NCQ技术来延长硬盘寿命


为何测试软件无法测出NCQ的效果?
看过上面原理的朋友其实稍微一想就应该能明白为什么了。磁盘测试软件中的重要项目是持续传输速率和寻道时间。
持续传输速率本身就是一种“按顺序”的读取,它让磁盘从最内道开始按扇区顺序慢慢读取到最外道,所以我们才会看到速率曲线是由高慢慢降低。已经排好序的东西,NCQ自然无效。
寻道时间呢?它是一系列完全独立的随机存取,就是在磁盘上这里读一下,那里读一下。完全独立的事物和排序完全无关,自然NCQ也帮不上忙。
简单说NCQ是为了用的,不是为了测的。

你可能感兴趣的:(SATAII中NCQ技术来延长硬盘寿命)