迄今硬盘的工作原理有一大部分仍属于机械性的动作,相比其他纯电子讯号处理的储存设备(如 RAM),相对效率表现就较差,任何硬盘上的存取资料动作,都属于整体系统性能的一个瓶颈,所以一旦在硬盘内的存取性能获得提升,必然对整体效率而言会产生立竿见影的效果。
由于系统在存取硬盘磁盘上的资料鲜少是以顺序方式进行,只要了解硬盘资料在各磁盘或磁道的分布方式,都可以理解一个有效的存取动作,都会有一些额外的时间消耗在磁盘运转至磁头可以读取的位置,也就是磁头搜寻前置时间或磁盘转动前置时间。所以要有效减少类似的前置时间,除了可以用增加磁盘转速来解决外,也可以将各个存取资料重新排序(sorting),以最有效的方式设法在最少的转动时间内完成一串的存取资料指令。由于增加主轴转速会同时产生成本、轴承磨耗、热量与震动等不利因子,而NCQ的概念,就在此技术背景中被提出。
NCQ(Native Command Queuing,原生命令队列)是Serial ATA II phase 1硬盘产品非常重要的改变,是由硬盘本身就指令来重新排序,以达成更高的性能提升。换句话说,NCQ是指磁盘驱动器内部控制器对于来自外部程序所下的多个资料区块的存取指令,进行最佳化处理,也就是配合在磁道上的读写机构的最佳(负载最小化)存取方式,在各个时间点就所接收的指令动态地将其重新排序或排程。它除了可提升整体性能,也同时延长了硬盘的使用期限(因为降低了许多无谓的机械耗损)。
至于在现有的 SATA II NCQ 协议中,另有 3 个新增功能可以来强化 NCQ 的优势,分别是:
1.Race-free status return mechanism:硬盘在完成任一指令后,可以无须再进行Handshake即可继续另一个指令,以便让多个指令快速接序或同时执行。
2.Interrupt aggregation:硬盘由于以 NCQ 模式执行多个指令,所以原本每一个指令完成后必须中断(interrupt)以便让系统接续处理的模式,转成可以在多个指令完成后再一次提出 interrupt,故接口控制器(host controller)对于多个指令只须处理一次中断即可。
3.First party DMA(FPDMA):当硬盘完成资料读取后,无须靠host controller的DMA动作取得特定内存位置,而是由硬盘本身建立 DMA setup FIS (Frame Information Block)直接对 host controller 送出内存存取通知,如此无须驱动程序的运作,可以有效提升存取效率。
在应用方面,当然除了硬盘本身必须支持 NCQ 外,操作系统与接口控制器(controller)的支持也是不可或缺的条件。特别是目前所流行的多执行绪系统环境或是处理器的 Hyper Threading 功能,都可能会大幅增加对于硬盘的工作负载,一旦硬盘能针对此潜在需求支持 NCQ,整体性能才能有明显合乎预期的提升。在目前的 Serial ATA 主流产品的主轴转速多为 7200 RPM,一旦有了 NCQ 的支持,甚至可以逼近部分 10000 RPM 硬盘的性能。所以在硬盘的选购与使用上,NCQ 的支持与否是一个值得特别注意的功能。
注:目前支持NCQ的Seagate硬盘型号为:
ST380817AS:80GB
ST3120827AS:120GB
ST3160827AS:160GB
ST3200826AS:200GB
ST3250823AS:250GB
ST3300831AS:300GB
ST3400832AS:400GB