U盘之家 > 固态硬盘 > 技术分享 > 详解NCQ的功能

详解NCQ的功能

2012-06-17 02:24来源:未知编辑:冰幻 浏览量:
  • U盘问题,请到问答平台:http://www.upan.cc/
  •   核心提示:
    一、什么是NCQ NCQ的英文是Native Command Queuing,中文的意思是本地命令序列,是英特尔与希捷于2003年7月共同公布的SATA的一个重要特性。 简单说本地命令序列就是对读写硬盘的命令在执行

      

    一、什么是ncq
    NCQ的英文是Native Command Queuing,中文的意思是本地命令序列,是英特尔与希捷于2003年7月共同公布的SATA的一个重要特性。
    简单说本地命令序列就是对读写硬盘的命令在执行前优化排序,减少寻道时间和潜伏期,以便更合理的读写硬盘.
    NCQ技术的前身是CQ(Command Queuing)技术,中文的意思是命令序列。命令序列协议早在1997年就被加入ATA/ATAPI-4规范,但由于PATA硬盘控制器总线结构(主从硬盘)和DMA机制的限制,PATA硬盘没有采用命令序列。相反SCSI硬盘采用了CQ技术(叫TCQ),使得SCSI硬盘系统的性能有很大提升,稳定性有很大提高。
    在传统的PC单线程应用中,PATA硬盘可按主机软件安排的顺序执行命令,因此没有命令序列还不是很严重的问题。但是,随着超线程技术的出现,多线程应用将逐渐在PC领域普及,传统的指令执行方式使硬盘子系统愈发显得力不从心,于是基于SATA协议,又借鉴了TCQ的优点,产生了NCQ。 www.upan.cc
    NCQ作为SATA区别于PATA的重要特性,在不改变硬盘基本结构的前提下,对要执行的命令排序进行优化,达到提升性能的目的。此外,由于机械结构的效率提高,磨损减少,硬盘的使用寿命也得以提升。
    NCQ是SATA Ⅱ新增的特性中唯一对提升性能有帮助的。借助SATA改进的DMA机制,NCQ结束了PATA命令序列可有可无的尴尬历史,顺应了PC应用环境向多线程发展的趋势,也能更好地满足入门级服务器和网络存储的要求。 优盘之家

    下载芯片无忧,可以检测你的盘是否支持NCQ。

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

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

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

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

    U盘之家


    很明显,磁盘需对未执行的指令进行排序以减少机械组件的损耗并减少I/O延迟。这样的技术最好还要便宜、简单、可靠,利于大规模采用。以前的算法主要考虑降低寻道延迟,而后来发现某些时候单纯减少寻道延迟反而会增加潜伏期从而造成整个访问延迟的增加,性能不升反降。有效的重排序算法要考虑到线性和角度延迟,并且同时对两者进行优化以使访问延时最小。这个步骤被称为“基于寻道、优化潜伏”,NCQ就扮演了这样一个角色。命令序列的另外一个副作用是减少机械组件负荷,降低磨损,大大提高了可靠性。

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

    U盘之家

    详解NCQ的功能-U盘之家 U盘之家

     

     

    详解NCQ的功能-U盘之家

    U盘之家


    如上图是磁盘执行命令的模拟图,盘片沿着箭头方向也就是逆时针方向旋转。如不采用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的命令序列则不具备此机制。每次命令完成,主机和硬盘都需交换信号;为了完成一条命令,主机必须向硬盘发布一条新命令以确定下一个待完成的服务命令。在此之前,硬盘不能返回其他命令的状态信息。这样一来,就显著增加了延迟时间。 www.upan.cc
    2、中断聚集
    NCQ每个命令顶多只需一次中断。实际上,因为具备中断聚集的特性,每条命令的中断次数少于一次。如果硬盘在短时间内完成多个命令,那么各条命令的中断可被控制器集成为一条中断。这样,主机的驱动器软件就只收到一次中断,从而减少了延迟时间。而PATA每条命令则有两次中断,因为PATA TCQ信息要求每步都有一次信号交换:针对数据传输建立DMA引擎的时候需要一次中断,完成命令的时候又需要一次中断。
    3、单方DMA
    这个机制允许驱动器决定下一次数据传输并直接选择相应的主机内存缓存,而不需主机软件的干预。驱动器向控制器发送一个数据包,指定数据传输所针对的命令的标识。然后控制器命令把命令的分散/集合表指针载入DMA引擎,随后DMA传输立即开始。PATA则是当驱动器准备传输资料时,产生一个中断,接着控制器处理中断,然后其必须发出服务命令。当上述动作完成后,控制器才能为命令配置DMA引擎。中断服务延迟和服务命令都会影响性能。

    www.upan.cc



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

    四、启用NCQ的设置
    1、必要条件
    ①支持NCQ的芯片组(南桥),支持SATA2 www.upan.cc
    ②支持NCQ的硬盘,SATA2硬盘
    ③NTFS分区
    上述三条是启用NCQ的必要条件,缺一不可。如果在FAT32分区下启用NCQ,系统将变得很迟钝。
    由于NCQ在SATA2时代才正式实施。所以支持NCQ的芯片组必须是支持SATA2的,硬盘也必须是SATA2的。尽管某些SATA1的产品说支持NCQ,但很难搭配硬盘和芯片组。所以,应当以SATA2为准。

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

     

    U盘之家

    详解NCQ的功能:https://www.upan.cc/ssd/share/NCQ.html

     

    tags: ncq  
    (U)优盘之家,是一个集U盘量产工具U盘启动盘制作工具内存卡修复工具U盘检测工具于一体的专业指导性网站,请牢记我们的域名:www.upan.cc
    评论(请自觉遵守互联网相关政策法规,管理可以直接删除恶意评论、广告或违禁词语):
    表情:
     
    网友评论
    回顶部
    关于我们 | 免责声明 | 广告服务 | 联系我们 | 合作联系 | 网站地图 | 友情链接 | 关于淘宝直营店
    copyright © 2002-2005 upan.cc. all rights reserved .
    蜀ICP备09012900号