
进行性能测试时,主机端有时会成为瓶颈,因此在测试时,通常会占用一个非常好的B主机,然后插入无数的HBA卡进行测试.
有时,即使您获得了非常强大的主机,但测试结果仍然不是最佳的. 您可以在主机侧注意所连接卷的队列深度设置.
下面的文章是关于硬盘的NCQ技术的,与此相关的一些基本知识:
--------------------------------------------------- ---------------------
NCQ技术的深入分析
在我们计算机中的整个存储设备中,最硬的是要求最高机械驱动器性能的硬盘驱动器. 机械设备的固有属性极大地限制了数据的读取速度,从而影响了硬盘的性能. 为了提高硬盘的性能,我们通常想到两种最有效的方法: 提高硬盘机械的物理性能以及为硬盘机械过程的顺序增加智能. 第一种有效方法的实施是以产品成本的大幅增加为代价的. 尽管第二种情况不同,但生产时产品成本的增加几乎可以忽略不计. 本文中讨论的命令顺序属于第二种有效提高硬盘性能的技术. NCQ技术是SATA II规范的重要组成部分,也是唯一与性能相关的SATA II技术. NCQ是本机命令队列的缩写. 实际上,它仅源于SCIS过去使用的TCQ(标记命令队列)技术的改进. 好吧,不再闲话了. 让我们一起进入NCQ旅程.
NCQ,SCSI TCQ,PATA TCQ和SATA TCQ之间的关系
当读者看到TCQ时,他们可能会感到有些奇怪. TCQ与本文将要讨论的NCQ相同. 它也是一种命令安排技术. 从严格意义上讲,NCQ技术是从ATA TCQ技术改进而来的. 它们都还支持32级命令深度,但是NCQ是ATA TCQ的技术缺陷已得到改进,以使其与TCQ有所区别. 说到这一点,我们必须对“命令深度”进行简要说明. 实际上,这个概念很简单. 它是指硬盘需要处理的寻址命令的数量. 而我们下面提到的“命令深度级别”是指定“命令深度”,例如,NCQ可以支持最大命令深度级别32,那么换句话说,NCQ最多可以排序32条命令指令. 话虽如此,我们需要注意的是,NCQ是SATA专有技术,TCQ的应用范围更广-TCQ用于SCSI硬盘驱动器和PATA硬盘驱动器. 实际上,TCQ最初用于SCSI硬盘驱动器,而PATA TCQ才在1997年被添加到ATA / ATAI-4规范中. ATA TCQ与最初用于SCSI硬盘驱动器的TCQ之间有很大的区别: 首先,SCSI TCQ支持三种队列类型,它们是简单队列(Simple Queue),有序队列(Ordered Queue)和队列头(Queue Head)和ATA TCQ仅支持简单队列(Simple Queue),这种设计毕竟还是很合理的,简单队列是最常用的队列排序,当高端服务器上的命令深度达到256时,其他两个队列也会被排序. 很难使用,更不用说ATA TCQ和NCQ都位于主流市场,并且最大命令深度最多只能支持32个级别.

第二,SCSI TCQ可以支持256级队列深度,而ATA TCQ最多只能支持32级. 队列深度越高,成本越高. 硬盘缓存的改善是必不可少的. 所有支持NCQ技术的硬盘都使用8M或更多的缓存,并且如果深度太大,则等待执行大量指令,但这将导致系统瓶颈. 因此,定位在主流市场支持中的ATA TCQ和NCQ 32指令深度级别非常适合;这是非常必要的. 其次,当ATA TCQ中发生错误时,它将导致硬盘放弃队列中的所有命令,并等待主机重新管理和还原它,并且无法混合使用排队和非排队的指令. . 那么混合使用排队指令和非排队指令会对我们的性能产生什么影响?显然,硬盘对命令指令进行排序需要花费时间. 当命令的深度级别不是很大时,排序时间可能会很短,但是随着命名深度的深度增加,此时间将变得尤为突出. 在某些情况下,系统对数据的请求对应于硬盘的LBA. 此时,不必对命令指令进行排序即可达到排序的效果,从而使系统获得了宝贵的时间并提高了性能. . 支持此功能的SCSI TCQ技术显然比不支持ATA TCQ的功能强大,毕竟其定位有所不同.
PATA TCQ和SATA TCQ之间的关系更加紧密. 众所周知,现有的SATA硬盘可以分为两类: 本机SATA(Native SATA)和桥接SATA(Bridge SATA),而本地SATA对应于NCQ. 桥接的SATA对应于SATA TCQ. 如前所述,在1997年,行业制造商将PATA TCQ添加到ATA / ATAI-4规范中,并且只有ATA时代的产品仅受IBM硬盘驱动器支持. 造成这种情况的主要原因有两个: (1)当时的英特尔不支持超线程技术; (2)当大多数软件是绝大多数的同步I / O软件时,也就是说,程序I / O功能被再次调用,直到最后一次实际的I / O操作完成为止,因此,在该程序中只有一个命令. 硬盘,按顺序执行命令是没有意义的.
但是,随着英特尔超线程技术的普及,应用程序环境的多任务处理以及异步I / O软件的出现,市场对命令队列技术有了需求. 现在是SATS结构的时代,因此SATA TCQ应运而生. 众所周知,桥接的SATA硬盘上有一个桥接芯片. 除了将串行数据转换为并行数据的功能外,某些芯片还可以支持TCQ技术(例如Marvell 88i8030桥接芯片),只要有另一个硬盘控制设备就可以实现对TCQ技术的支持磁盘队列深度,因此SATA TCQ的出现和发展成为必然. 也许读者此时会说PATA TCQ和SATA TCQ是同一回事. 是的,PATA TCQ和SATA TCQ本来是同一回事,但是硬盘的接口却不同.
支持队列类型
队列深度
排队指令和非排队指令的组合
SCSI TCQ
简单队列,有序队列,队列头

256级
是
PATA TCQ
简单队列
32级
否
SATA TCQ
简单队列
32级
否
NCQ
简单队列
32级
否
小知识: 三个队列的比较
(1)简单队列(Simple Queue)是最常用的技术,属于本地命令排序技术,并且在三种队列类型中性能最高;

(2)有序队列(Ordered Queue)与简单队列(Simple Queue)不同,简单队列(Simple Queue)属于主机命令安排技术,当命令到达本地时,可以在硬盘控制器上对其进行一次命令排序设备将调用Simple Queue来更正先前的排序,这可以缩短Simple Queue在本地对命令指令进行排序的时间;
(3)队列头允许系统重新排列命令的顺序并重新确定界面中某些命令的优先级,就像有序队列一样,当指令到达本地时,仍会调用简单队列(简单队列)以更正所安排的指令.
发现订单排队的秘密
在我们了解硬盘的NCQ技术之前,有必要对硬盘数据的读写过程有一个简单的了解. 当我们需要在硬盘上调用某些数据时,硬盘将做出如下响应: 找到数据的目标磁盘(磁盘,每个硬盘具有不同数量的磁盘)并访问该磁盘,然后开始搜索查找数据的目标轨道,并在找到数据后对其进行访问. 下一步是找到数据的目标群集,然后在群集中寻址数据的目标扇区,最后将数据移到目标扇区中并传输到硬盘控制器. 当我们将数据写入硬盘时,它与读取数据相同. 可以看出,通常看似简单的读取数据在实际操作中非常复杂. 如果当我们使用异步I / O来获取数据或将数据写入硬盘时(在使用具有HT技术的处理器或多任务软件时会发生这种情况),则硬盘缓存中可能同时存在两个或两个以上命令等待操作. 并且,与这些指令相对应的数据通常分布在硬盘上的不同位置. 要完成这些命令的读取,必须依次执行这些命令,以便出现问题!为了能够清楚地解释此问题,我们介绍一些具体示例供大家解释. 我们可以将存储在硬盘上的数据的逻辑块地址(LBA磁盘队列深度,逻辑块地址)用作一个区域中几个朋友的家. 作为磁头,当天有几个朋友邀请您参加“来宾”活动. 如果您不知道如何安排,则可以按照收到邀请的顺序拜访您的朋友. 这时,您可以按照温室→蓝屋→橙屋→红屋的顺序去朋友家(如图1所示);但是如果知道了安排,您将事先考虑几个朋友家的具体位置,并计划行程,这时您将按照绿色的房子→红色的房子→蓝色的房子→橙色的房子作为客人去朋友的房子(见图2),显然,这种安排方法可以节省很多时间. 而NCQ就是这种神奇的时间表的自动,当硬盘从软件接收到数据请求时,可以根据数据逻辑块地址的位置重新安排NCQ技术,从而避免不科学的Access方法. 重新排序后,头部手臂来回移动的时间可能是g大大减少了数据读取速度.
但是,我们需要提醒大家,使用具有NCQ技术的硬盘并不能大大提高系统的性能. 这种现象的原因是由应用程序软件模式引起的. 就当前的应用程序软件而言,它们大多数属于同步I / O软件,也就是说,程序的I / O功能将被再次调用,直到最后一次实际的I / O操作完成为止,因此只有硬盘has无法对命令进行排序. 为了让大家更清楚地理解,我们继续向您介绍上述示例. 您仍然以“团长”和“来宾”的身份去几个朋友的家,但是情况与上次不同. 当一个朋友向您发送请求时,其余的朋友将保持“沉默”,直到您离开. 朋友,第二个朋友开始向您发送邀请,依此类推. 目前,您在同一时间只有一个“任务”,无法安排它. 当我们使用具有HT技术的处理器或异步I / O软件时,情况就不同了. HT技术或异步I / O软件具有允许多个线程同时运行,允许多个应用程序或相同应用程序的能力. 该程序还将数据请求发送到硬盘,从而使NCQ变得有用. 随着超线程技术的普及以及操作系统中多线程软件的日益普及,我相信NCQ技术将带给我们意想不到的惊喜. 另外,由于NCQ技术可以减少磁头不必要的移动,因此延长硬盘的使用寿命也很重要.
ATA TCQ VS NCQ
由于ATA TCQ是非等效协议,因此该命令中有一个Service命令. 作为非对等协议,硬盘自然不能主动联系硬盘控制器,并且硬盘控制器必须定期查询它. 如果硬盘从应用程序接收到两个或多个请求,则硬盘必须通过设置服务和标签来通知硬盘控制器. 当硬盘控制器找到服务位时,它将发出服务命令以将硬盘写入高速缓存以进行传输. 这种数据传输方式使硬盘完全失去了自主权. 数据已经可以写入高速缓存进行传输,但是它需要等待硬盘控制器的服务命令,因此很容易抵消NCQ技术通过前后移动磁头而花费的时间. 关工程师清楚地发现了这一缺点,因此NCQ技术没有这种“无助”. 尽管NCQ也是非对等协议,但是第一方DMA(第一方DMA,缩写为FPDMA)机制使数据传输主动权掌握在硬盘上. 硬盘找到数据后,可以立即使用非零偏转(no ----零偏移)进行数据传输,而无需等待硬盘控制器的服务命令.
简而言之,ATA TCQ具有命令排列功能,但是即使硬盘具有最佳的数据访问权限,数据传输的能力也完全由硬盘控制器控制,但是因为它必须等待硬盘控制器的服务命令,导致严重的等待. NCQ是不同的. 借助FPDMA,硬盘可以确定数据读取和传输的时间,从而使NCQ成为可以真正提高系统性能的技术.
结论
NCQ技术的引入可以说已经完全成熟. 首先,随着英特尔超线程处理器的广泛普及,用户可以在使用计算机的同时向系统申请多个线程. 其次,SATAII标准硬盘和支持NCQ技术的英特尔ICH6R南桥. 大量发布可以满足用户在硬件法规方面的多线程要求. 但是,作为一种新兴技术,NCQ需要在相关设计和设备支持方面进行改进. 可以预见,在未来的市场中,SATA TCQ和NCQ将形成并存的局面,但是随着SATAII的进一步普及,SATA TCQ最终将被市场淘汰,NCQ成为真正的老大哥.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-259809-1.html
具有领海和专属经济区
保证国家安全