给系统添加“助推器”——硬盘NCQ功能使用详解

应用百分百

什么是NCQ

NCQ全名为Native Command Queuing,中文意思为“原生命令队列”。它是SATA硬盘的一项重要功能,是由SCSI硬盘上的TCQ(Tagged Command Queuing)技术改进而来。

NCQ技术通过对硬盘内部队列中的命令进行重新排序,实现智能数据管理,以优化硬盘内部的工作负荷和执行顺序,提高工作效率,从而在不进行硬件大改动的前提下改善硬盘的性能。

比如在硬盘的缓存中同时存在多个命令,这些命令在逻辑上的连续数据顺序为4→3→2→1,如果依照传统的硬盘工作方式,磁头将按照数据的逻辑顺序依次读取这四个数据,磁头需要移动2.5周,而采用NCQ技术后,它就可以把这些命令根据其数据所处的位置(包括线性位置和角度位置)进行智能排序,把缓存中的命令重新优化排列为4→2→3→1,这样磁头将只需要转动1周就可以完成工作(图1),大大缩短了硬盘的机械定位延迟,从而使硬盘的工作效率得到很大的提升。

19-e6-1.jpg
图1

另外,由于NCQ让磁头臂来回移动的次数和时间都大大减少,降低了硬盘机械部件的磨损,所以它对于延长硬盘的使用寿命也很有帮助。

实现NCQ的条件

要实现NCQ功能,除了硬盘自身要支持该技术以外,还需要磁盘控制器(如南桥芯片中的磁盘控制器)的配合支持。目前已经推出支持NCQ的桌面硬盘的厂商有希捷、迈拓和日立。其中,希捷的硬盘包括Barracuda 7200.7 SATA NCQ版(80GB/120GB/160GB)和Barracuda 7200.8 SATA(200GB/250GB/300GB/400GB),迈拓的则有金钻10 SATA,日立支持的型号有三款,分别是Deskstar 7K500 SATA(500GB)、Deskstar T7K500 SATA(250GB/160GB)和Deskstar 7K80 SATA(80GB/40GB)。目前市场上比较常见的只有希捷Barracuda 7200.7 SATA NCQ版和迈拓金钻10 SATA。

由于磁盘控制器一般集成在南桥芯片里,所以我们只需要看主板上的南桥芯片型号,就可以知道该主板是否支持NCQ。目前支持NCQ的主板南桥芯片有Intel的ICH6-R(图2)、VIA的VT8251、SiS的963/964/965、ULi的M1573等;而像NVIDIA的nForce 4 Ultra/SLI芯片组虽然没有传统意义上的南桥芯片,但同样也支持NCQ。

19-e6-2.jpg
图2

另外,我们在一些不支持NCQ的主板上,通过外接扩展卡同样可以达到使用NCQ技术的目的。目前支持NCQ的扩展卡型号有Promise 的FastTrack TX2200和FastTrack TX4200以及Silicon Image 的3124-1和3124-2 SATA等。

开启NCQ三“步”曲

准备好具备NCQ功能的主板和硬盘后,由于NCQ功能在默认下并未自动打开,我们还需要对BIOS进行一些设置才能正常使用NCQ。

下面我们就以采用Intel ICH6-R南桥的主板为例,来看看如何开启NCQ功能。这里需要注意的是,如果支持NCQ的硬盘已经安装了操作系统,但尚未开启NCQ功能的话,那么要实现NCQ功能,则必须重装系统,并且NCQ还取消了对FAT32格式的支持,也就是说,安装Windows XP/2000系统的分区只能使用NTFS文件系统。

第一步:BIOS设置

首先要在BIOS中打开相关的设置,开机后按Del键进入主板BIOS,找到“Integrated Peripherals”→“OnChip IDE Device”,把其中的“SATA Mode”选项设置为“AHCI”(图3)。

19-e6-3.jpg
图3

AHCI(Advanced Host Controller Interface,高级主机控制器接口)是SATAⅡ的重要特征之一,因为NCQ是AHCI所支持的一项技术,所以我们要使用NCQ功能就必须先开启AHCI。同样,我们也可以通过在主板的BIOS中能否找到AHCI选项来判断这款主板是否支持NCQ技术。

第二步:系统和驱动安装

接着我们就可以开始安装操作系统。在BIOS中把SATA接口设置为AHCI后,和RAID一样在安装操作系统时需要载入相应的驱动程序。所以我们在安装操作系统前要先准备好一张带有相应的AHCI驱动程序的软盘,一般在主板的附件里可以找到。如果没有,你也可以到网上下载一个Application Accelerator磁盘创建程序(下载地址:http://www.mydrivers.com/dir109/d43841.htm),创建一个这样的软盘。

然后开始安装操作系统,当屏幕下方显示“Press F6 if you need to install a third party SCSI or RAID driver”的提示信息时及时按下“F6”键。

然后等Windows安装程序把一些必要的驱动程序调入后,就会要求用户按“S”键载入所需的驱动程序(图4)。

19-e6-5.jpg
图4

这时候把准备好的AHCI驱动程序的软盘插入软驱,然后按下“S”键。系统就会读取软盘里的信息,然后选择对应的AHCI驱动。因为我们这里使用的是ICH6R芯片组,所以要选择图5中的“82801FR SATA AHCI Controller(Desktop ICH6R)”,选择之后按下回车键。

19-e6-6.jpg
图5

在软驱一阵读取软盘的怪叫声后,系统显示已经加载AHCI驱动,按回车键继续安装操作系统就可以了(图6)。

19-e6-7.jpg
图6

第三步:软件支持

安装完操作系统后,我们还要安装新版本的Intel Application Accelerator RAID版应用程序加速器驱动,即我们常说的IAA RAID驱动(下载地址:http://www.mydrivers.com/dir109/d43839.htm)。

驱动安装好后,进入它的控制界面“Intel Storage Utility”,就能够看到NCQ功能是否被打开了(图7)。

19-e6-8.jpg
图7

其中,“本地命令排队支持”指的就是NCQ支持,如果它的值为“是”,就表示该硬盘的NCQ功能已经被打开。

开启NCQ前后性能对比

究竟打开NCQ后对磁盘性能会有多大的提升,我们来简单测试一下(测试结果见表)。笔者使用的平台是Intel Pentium4 530J,磐正EP-5EGA+(ICH6R),Kingston DDR400 512MB×2,迈拓金钻10代250GB。硬盘的工作模式分别为“IDE”(关闭NCQ)和“AHCI”(打开NCQ)。

我们来看看PCMark04的测试结果,在打开NCQ后,硬盘(HDD)性能总分从4593提高到了5480,性能提升了19.3%!它的4个子项目的速度——XP Startup(XP启动)、Application Loading(应用程序调用)、File Copying(文件拷贝)和General HDD Usage(常规使用)都有10%以上的提升。

19-e6-b.jpg

写在最后

在实际使用中,支持NCQ技术的硬盘性能或许并不如测试结果那样有大幅度的提升,这主要是应用软件的工作模式造成的。目前绝大多数的应用软件都属于同步I/O软件,也就是程序I/O功能的再次调用是在上次I/O操作完成后才进行的,在硬盘中仅有一个读写命令,这样也就谈上什么命令排序了。不过,如果我们使用了具有超线程技术的处理器或运行异步I/O应用软件时情况就不同了。超线程技术和异步I/O软件都具有允许多个线程并发运行的能力,可以让多个应用程序或同一个程序同时向硬盘发出多次数据读取请求,这时NCQ技术就可以“大显身手”了。

随着超线程处理器的日益普及以及异步I/O多线程应用软件得到越来越多的运用,相信NCQ将会给我们带来更多的惊喜。