NCQ是属于SATA 300规范中的一条,它是一项提升硬盘性能的技术,笔者下面来具体解释它。 我们知道硬盘和内存不同,硬盘结构上有很大部分是机械的,其性能一定受到机械部件特性比如马达转速等等的影响,所以硬盘速度始终只能慢慢提高。 我们的硬盘是怎么写数据的?其过程很简单,从磁碟的最外圈开始往内圈写,一个圈叫做一个磁道track,所有碟(platter,即平时说的单碟),面(一个碟可能有两个面)上同一磁道组成一个柱面(cylinder),写硬盘就是按照从外到里一点点顺序写的。可惜我们读取的时候肯定不是按照这样的顺序的,我们一般是随机的读取分散在盘片上的数据,我们需要在快速转动的同时准确定位,可以想象这是多么不容易。 上图中暗红的是就是一个磁道(track),黄色的是扇区(sector)。 要精确定位,我们会遇到两个敌人:寻道延迟和转动延迟。 寻道延迟是磁头找到磁道的时间。我们可以想象一下磁头反复地在一个个同心圆之间伸长,缩短,其延迟就是寻道延迟,或者在硬盘技术参数中称为寻道时间。 要减少寻道时间,一般的做法就是对任务的重新排序。因为如果我们的定位任务按照先来后到的顺序依次进行,那延迟肯定很大。这里可以举一个很好理解的例子。如果3个人同时乘电梯,A先按按钮要到10楼,B要到5楼,C到15楼,如果按照先按先送的顺序,电梯先到10楼,再下来到5楼,又上去到15楼,显然浪费了很多时间,而正常的顺序是从下往上的顺序排列的,这个例子很普通,但是可能大家乘电梯的时候从来不会考虑到吧:)当然寻道时间的优化比这个复杂得多,算法也聪明得多。 转动延迟是找到准确磁道后,那个正确的地址所在位置转到磁头下面的时间。这里我们可以想象转得越快,这个时间就越短,对5400转硬盘,转一圈要11.1毫秒,7200转要8.3毫秒,而万转硬盘只要6毫秒。 要减少转动延迟,一般的办法是提高转速,但是我们知道提高转速很难,否则我们不会到现在还在用7200转的硬盘。除了这个办法还有1.优化排序2.乱序执行。 两个延迟加起来就是我们遇到的总延迟,我们希望总延迟越小越好。以前的做法是优化排序任务从而减少寻道时间,但是后来发现追求最小寻道时间会导致转动延迟变大,两者相加不一定是最小的。所以提出了一种综合考虑寻道和转动的优化方法,这种方法就称为“tagged command queuing”,而在SATA 300标准中使用的特殊的优化方法就叫做“Native Command Queuing”,就是NCQ。 总算说到NCQ了,相信这样解释下来大家一定清楚它就是一种从寻道和转动两方面考虑的,目的在于减少总延迟的优化算法。关于TCQ和NCQ的具体区别和NCQ具体怎么操作就略过了,需要的可以查白皮书。SATA 300规范还引入3种新技术保证NCQ的效率。 (责任编辑:admin) |