版权归原作者所有,如有侵权,请联系我们

[科普中国]-原生指令排序

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

原生指令排序Native Command Queuing,简称NCQ),原先是改善服务器硬盘访问控制技术,应用在SCSI和SATA 1.0/2.0/3.0接口硬盘读写的加速技术,其接口打开磁盘阵列RAID亦有所提升。通过硬盘固件、硬盘控制器以及操作系统三者的互相配合,改善硬盘内部扇区的读取顺序,可以提高硬盘性能,亦能够轻微减轻硬盘损耗的速率。NCQ对用于服务器上的硬盘的效率提升尤为明显。

原理一般硬盘使用的硬盘格式通常为Windows 98核心所使用的FAT32系列,或是Windows NT所使用的NTFS,此种硬盘格式在访问数据时,时常会出现散乱的情况,导致一个文件被不规则的分散成许多的区块存放于磁盘上面,时间一久,文件散乱的程度会日趋严重,由于传统的硬盘读取方式,会从文件的开头依序读取到结尾,若文件散乱的程度愈严重,则读取头需要来回移动的距离就越长,导致硬盘读写性能逐渐下降。一旦发生这样的问题,解决方案便是使用磁盘碎片整理软件来进行硬盘重组,将散乱的文件重新排列为连续的区块,但由于运行磁盘碎片整理可能会需要搬动大量的磁盘区块,如果太常运行磁盘碎片整理,除了会提高系统负载,亦将会缩短磁盘驱动器的使用寿命,NCQ即为了解决此种情况而诞生。NCQ的概念原本是应用在服务器上常见的SCSI接口上,在SCSI的规格中即包含此项技术,只是不叫做NCQ,将此项技术经过些许修改后称为NCQ,并将其应用在SATA接口上,后来的SAS接口也支持此项技术。激活NCQ技术的硬盘,在读取文件时,会依照文件在硬盘上的分布,将访问的顺序作最有效率的排序,以减少机械臂移动的距离,进而达到省时以及延长硬盘寿命的效果。1

优势于SATA II NCQ协议中,新增3个功能,分别是:

Race-free status return mechanism:

硬盘在完成任一指令后,可以无须再进行Handshake即可继续另一个指令,以便让多个指令快速接序或同时运行。

Interrupt aggregation:

硬盘由于以NCQ模式运行多个指令,所以原本每一个指令完成后必须中断(interrupt)以便让系统接续处理的模式,转成可以在多个指令完成后再一次提出(interrupt),故接口控制器(host controller)对于多个指令只须处理一次中断即可。

First party DMA(FPDMA):

当硬盘完成数据读取后,无须靠host controller的DMA动作获取特定存储器位置,而是由硬盘本身创建DMAsetupFIS(Frame Information Structure)直接对host controller提交存储器访问通知,如此无须驱动程序的运作,可以有效提升访问效率。1

条件打开NCQ,除硬盘本身必须支持NCQ外,操作系统(OS)与接口控制器(controller)的支持也是不可或缺的条件。举例说,在Microsoft Windows平台上,从Windows Vista开始才支持NCQ,而Windows XP若要使用NCQ,则要额外安装支持软件。2

支持NCQ技术的芯片组(旧数据) 支持NCQ的硬盘控制器(部分):

JMicron

JMB360

JMB361

JMB362

JMB363

JMB365

JMB366

Silicon Image

SiI 3124

SiI 3132

SiI 3531

nVIDIA

nForce 4 Ultra, nForce 4SLI

nForce 410

nForce 430

nForce 550

nForce 570 Ultra, nForce 570 SLI

nForce 590 SLI

nForce 650i Ultra, nForce 650i SLI

nForce 680i SLI

nForce 780i SLI

Intel[1]

ESB2

ICH6M, ICH6R

ICH7DH, ICH7M, ICH7MDH, ICH7R

ICH8DH, ICH8DO, ICH8M, ICH8M-E, ICH8R

ICH9DO, ICH9M, ICH9M-E, ICH9R

ICH10D, ICH10DO, ICH10R

5 Series

6 Series

7 Series

3400 Series

VIA

VT 8237S

VT 8251

ATI

SB 600

SB 700

SB 750

ALi/ULi

M1573

M1575

M1567

M1697

SiS

SiS966/SiS966L

SiS968

Marvell

88SE91303

参看TCQ(Tagged Command Queuing)

Intel组合存储技术软件(Intel Matrix Storage Manager)

本词条内容贡献者为:

王慧维 - 副研究员 - 西南大学