欢迎您访问科普小知识本站旨在为大家提供日常生活中常见的科普小知识,以及科普文章!
您现在的位置是:首页  > 科技

什么是硬盘的NCQ

科普小知识2023-09-28 20:59:33
...

什么是硬盘的NCQ

NCQ(Native Command Queuing)是SATA规范支持的一种新的功能,它是一种使硬盘内部优化工作负荷执行顺序,通过对内部队列中的命令进行重新排序实现智能数据管理,改善硬盘因机械部件而受到的各种性能制约,以发挥硬盘最高的效率、使延迟最小化。

我们的硬盘是怎么写数据的?其过程很简单,从磁碟的最外圈开始往内圈写,一个圈叫做一个磁道track,所有碟(platter,即平时说的单碟),面(一个碟可能有两个面)上同一磁道组成一个柱面(cylinder),写硬盘就是按照从外到里一点点顺序写的。可惜我们读取的时候肯定不是按照这样的顺序的,我们一般是随机的读取分散在盘片上的数据,我们需要在快速转动的同时准确定位,可以想象这是多么不容易。

什么是硬盘的NCQ暗红色的区域表示磁道,鲜红色的区域表示簇,而黄色区域表示磁盘上的扇区。

要精确定位,我们会遇到两个敌人:寻道延迟和转动延迟。

寻道延迟是磁头找到磁道的时间。我们可以想象一下磁头反复地在一个个同心圆之间伸长,缩短,其延迟就是寻道延迟,或者在硬盘技术参数中称为寻道时间。

我们可以将硬盘的存储数据的逻辑块地址(LBA,Logical Block Address)当作是一个地区内的不同的房子。如果要给这些房子送信,先送完第一间房子,然后再跑到2公里外的另一个房子,后再跑到第一个房子的邻居送信,最后把信送到附近不远的另一个房子,这是多么“愚蠢”的做法!显然,这浪费了大量的时间。下面的两个如分别表示了没有采用NCQ技术(non-NCQ)和采用了NCQ技术的两种不同的情况。

什么是硬盘的NCQ

 第一个图为不支持NCQ技术的硬盘的工作情况。和前面提到的送信的“愚蠢”做法的一样的,但是在刚开始的硬盘中确实是采用了这种做法

什么是硬盘的NCQ

第二个图是支持NCQ技术的硬盘的工作情况。这才是送信的最佳方式,它极大的提高了工作效率,节省了很多时间。

支持NCQ技术的硬盘对接收到的指令按照他们访问的地址的距离进行了重排列,这样对硬盘机械动作的执行过程实施智能化的内部管理,大大地提高整个工作流程的效率:即取出队列中的命令,然后重新排序,以便有效地获取和发送主机请求的数据,在硬盘执行某一命令的同时,队列中可以加入新的命令并排在等待执行的作业中。

转动延迟是找到准确磁道后,那个正确的地址所在位置转到磁头下面的时间。这里我们可以想象转得越快,这个时间就越短,对5400转硬盘,转一圈要11.1毫秒,7200转要8.3毫秒,而万转硬盘只要6毫秒。

要减少转动延迟,一般的办法是提高转速,但是我们知道提高转速很难,否则我们不会到现在还在用7200转的硬盘。除了这个办法还有1.优化排序2.乱序执行。

 两个延迟加起来就是我们遇到的总延迟,我们希望总延迟越小越好。以前的做法是优化排序任务从而减少寻道时间,但是后来发现追求最小寻道时间会导致转动延迟变大,两者相加不一定是最小的。所以提出了一种综合考虑寻道和转动的优化方法,这种方法就称为“tagged command queuing”,而在SATA 300标准中使用的特殊的优化方法就叫做“Native Command Queuing”,就是NCQ。