硬盘缓存(Cache)与NCQ技术

硬盘缓存是用于存储读写硬盘的中间数据,一般称为cache,详细可以分为写缓存、读缓存,其中读缓存中还有预读取的过程,整个过程由操作系统(OS)来控制。
就这两种缓存和预读取来分别详细举例:

(1) 写缓存

向硬盘写入数据的时候,不是直接写入硬盘,而是先写入cache,等待硬盘空闲的时候,再将数据写入硬盘。

现在有些硬盘还支持NCQ技术,把数据在cache中进行排序,再写入硬盘。 这样做的好处是提高硬盘的响应速度,减少硬盘的寻道时间,延长硬盘的使用寿命。

NCQ:操作系统所看到的磁盘地址都是顺序的虚拟磁盘地址,再通过磁盘映射表映射到物理的磁盘地址上,会导致实际在磁盘寻道时不一定是顺序寻道的。

举个例子:比如向硬盘下达一组数据传送指令,由于数据在磁盘上分布位不同,磁头可能会先读取777扇区(512字节),再读取77777扇区,然后又读取778扇区……如果我们对指令进行优化排列,可以先读777扇区,接着依次读778扇区,最后读取77777扇区……显然,指令排列后减少了磁头臂来回移动的时间,使数据读取更有效。并且有效的排序算法除了考虑目标数据的线性位置,也会考虑其角度位置,并且还要对线性位置和角度位置进行优化,以使总线的服务时间最小,这个过程也称做"基于寻道和旋转优化的命令重新排序"。

(2) 读缓存

无论读写数据,都将数据在cache中保留一份副本,直到cache存满,则删除最早的副本。 这样的好处是, 应用程序往往对某一个文件频繁读写,这样读写就可以在cache中完成,而不需要访问硬盘,大大了提高速度。所以硬盘缓存是硬盘的一个十分重要的参数,当然是越大越好。

结合NCQ技术,可以确保磁盘在物理上寻道时是顺序的,减少磁盘的寻道时间。

(3) 预读取

如果硬盘空闲,预先将上次读取的数据后面一段也读到cache中,当系统读取这块数据的时候,能够快速响应,这项技术本身没有太大用处,当结合NCQ技术的时候,可以减少寻道时间。

总结:会产生以上cache机制的核心原因就是内存是读写速度远大于磁盘的读写速度

猜你喜欢

转载自blog.csdn.net/haohaoxuexiyai/article/details/123090341