TCQ:Tagged Command Queuing,标记命令队列,首先是用在SCSI接口的硬盘上面,不过传统的P-ATA或者新兴的S-ATA也可以实现TCQ功能。SCSI的TCQ要强大
得多,这主要表现在队列类型及深度。SCSI TCQ支持三种队列类型,分别是简单队列(Simple Queue)、有序队列(Ordered Queue)和队列头(Head of Queue)。而ATA命令排队(TCQ和NCQ)只是简单队列,即硬盘享有以任意顺序排列和优化命令的完全自主权。

TCQ的优点主要表现在:
1. 提高随机读取速度
2. 在多执行序( Multi-Threaded )环境及高随机读取负荷 (High Randum I/O
Workloadings) 下,仍能维持高性能表现。
3. 将重复性及相冲突之指令予以重新排序,提高硬盘效能

至于队列深度的规定,ATA命令排队最大为32级,SCSI TCQ为256级,对PC和入门级服务器、网络存储设备来说, ATA的32级深度已经足够,而SCSI面向的多主机/多设备应用环境则要求更深的队列深度。不过,由于队列越深(实现)成本也就越高,并且满深度利用队列时大量的待处理命令反倒可能成为性能瓶颈,因此并行SCSI硬盘通常只用到64级深度,256级的队列深度往往在磁盘阵列子系统中实现。

此外,ATA命令排队还有一些局限性,譬如排队命令与非排队命令不能混合使用、发生错误将导致硬盘放弃队列中的全部命令(主机必须管理恢复过程)。而我们需要记住的就是,ATA TCQ的概念要小于TCQ(NCQ也一样,因为它本身也是一种TCQ,只是称呼不同而已),两者间不能划等号。

什么是NCQ呢?

NCQ被称为“全速命令队列(Native Command Queuing,NCQ)”。全速命令队列是SATA II最先进和最令人期待的特性,是SATAⅡ规范中的重要组成部分,也是SATAⅡ规范唯一与硬盘性能相关的技术。NCQ是一项强大的接口/硬盘技术,它通过在硬盘内部优化作业的执行顺序来提升硬盘性能和使用寿命。

首先让我们来看一下硬盘是怎样读写信息的。硬盘通过将信息写入磁盘磁道上的特定位置进行信息存储,硬盘访问磁盘上信息的过程如下:

● 寻找存储数据的目标磁碟(platter),访问该磁碟。

● 寻找磁碟上存储数据的目标磁道(track),访问磁道。

● 寻找磁道上存储数据的目标簇(cluster),访问簇。

● 寻找簇上存书数据的目标扇区(sector),访问扇区。

● 寻找目标数据,读取数据。

通过上面的步骤,硬盘即可获取所需要的数据信息。硬盘写入数据的步骤也是如此,区别仅仅在于读操作变为写操作。大多数情况下数据存入硬盘并非是顺序存入,而是随机存入,甚至有可能一个文件被分配在不同盘片上。对于不支持NCQ的硬盘来说,大量的数据读写需要反复重复上面的步骤,而对于不同位置的数据存取,磁头需要更多的操作,降低了存取效率。支持NCQ技术的硬盘对接收到的指令按照他们访问的地址的距离进行了重排列,这样对硬盘机械动作的执行过程实施智能化的内部管理,大大地提高整个工作流程的效率:即取出队列中的命令,然后重新排序,以便有效地获取和发送主机请求的数据,在硬盘执行某一命令的同时,队列中可以加入新的命令并排在等待执行的作业中。显然,指令排列后减少了磁头臂来回移动的时间,使数据读取更有效。

如图所示,如果新的命令恰好是处理起来机械效率最高的,那么它就是队列中要处理的下一个命令。举个例子:比如向硬盘下达一组数据传送指令,由于数据在磁盘上分布位不同,磁头可能会先读取260扇区,再读取7660扇区,然后又读取261扇区……如果我们对指令进行优化排列,可以先读260扇区,接着依次读261扇区,最后读取7660扇区……显然,指令排列后减少了磁头臂来回移动的时间,使数据读取更有效。并且有效的排序算法除了考虑目标数据的线性位置,也会考虑其角度位置,并且还要对线性位置和角度位置进行优化,以使总线的服务时间最小,这个过程也称做“基于寻道和旋转优化的命令重新排序”。

不过,要充分享用NCQ技术,光硬盘支持是不行的,还要对应的硬盘控制器(如南桥芯片中的磁盘控制器)支持才行。例如Intel从945芯片组的ICH7南桥开始支持NCQ技术,nVidia从nForce4 SLI芯片组开始支持NCQ技术。

下面是seagate官方关于支持NCQ硬盘的数据。

从seagate推出高端NCQ硬盘以来,一直深受广大用户拥戴,这次NCQ硬盘向低端

发展,体现了seagate对用户的全方位考虑。据相关媒体报道,拥有NCQ技术的新款硬盘相对没有NCQ技术的旧版硬盘产品。整体性能可以提升5%~20%,而拥有NCQ技术的这款低端产品的上市无疑是普及硬盘领域最新技术的最好途径。

NCQ TCQ 什么是NCQ 什么是TCQ 区别相关推荐

  1. NCQ与TCQ的区别及测试比较

    硬盘指令队列NCQ/TCQ技术详解&性能测试 作者:Darren NCQ(Native Command Queuing)与TCQ(Tagged Command Queuing)都是设计通过把计 ...

  2. SSD 因 NCQ hang,failed command: WRITE FPDMA QUEUED / tag 28 ncq 4096 out

    新购入的建兴ZETA 256G,在CentOS 7.2中,用PostgreSQL自带的fsync测试工具pg_test_fsync测试IOPS时,突然IO hang住了. dmesg报了一堆这样的超时 ...

  3. SATA学习笔记 13 ---SATA NCQ

    1. NCQ的简介 NCQ在SATA 2.0中被引入 最多支持32个命令outstanding 主要是硬盘侧的优化.支持NCQ 特性的硬盘可以根据收到的多个command去优化执行步骤(不是保序执行的 ...

  4. SATA SSD需要NCQ开启吗?

    一.故事开篇 最近有同学在咨询,SATA SSD是否需要NCQ功能?借此机会,今天我们来聊聊这个比较古老的话题,关于SATA协议的NCQ的故事. 首先我们先回顾下SATA与NCQ的历史: 2003年, ...

  5. 硬盘开启NCQ功能全解

    硬盘发展的速度大家是有目共睹的,在2005年,SATA接口的硬盘顺利代替了PATA硬盘,成为市场中主流的热点产品.而在2005年末,关于SATA硬盘的一项新的技术NCQ又进入了人们的视野. 对于硬盘的 ...

  6. SATA系列专题之六:浅析NCQ原生指令序列

    一.故事前传 在之前的文章中, 我们已经针对SATA相关内容进行了较为详细的解析,如果感兴趣的话,请见之前文章: 1,浅析SATA Physical Layer物理层OOB信号: 2,SATA Lin ...

  7. 存储系统结构(类型)详细说明【4】

    文章目录 存储系统架构 中低端SAN/NAS融合存储架构:双控制器 双控存储结构图 高端SAN阵列架构:多控制器 高端SAN阵列架构:网格存储 集群NAS存储架构 分布式存储架构:无中心节点 分布式存 ...

  8. PCIe例程理解(一)用户逻辑模块(接收)仿真分析

    前言 本文从例子程序细节上(语法层面)去理解PCIe对于事物层数据的接收及解析. 参考数据手册:PG054: 例子程序有Vivado生成: 为什么将这个内容写出来? 通过写博客,可以检验自己理解了这个 ...

  9. Linux 内核引导选项简介 *********很多常用的受益匪浅

    内核引导选项大体上可以分为两类:一类与设备无关.另一类与设备有关.与设备有关的引导选项多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导选项.比如,如果你想知道可以向 AHA154 ...

最新文章

  1. opencv--车牌识别
  2. druid seata 配置_分布式事务解决方案——Seata使用
  3. python中删除列表中的空元素以及如何读取excel中的数据
  4. CentOS Git服务安装
  5. Javascript中的\r\n
  6. 【C++】读取文件夹下所有文件名
  7. rsync+shell脚本完成自动化备份
  8. 超出网络bios会话限制_如何设置网络以防止数据丢失
  9. Azkaban任务调度(使用带有依赖的任务调度)【mapreduce数据清洗,数据入hive库,kylin预编译、数据分析】
  10. 学习OpenCV,看这些!
  11. apscheduler -定时任务
  12. 按照月的第几周统计_Excel财务案例分享(3)——使用函数制作销售月报和周报...
  13. 阿里技术专家光锥:亿级长连网关的云原生演进之路
  14. 水很深的深度学习-Task05循环神经网络RNN
  15. 安装redis k8s_K8S 生态周报| Docker v19.03.6-rc2 发布
  16. 找工作知识储备(3)---从头说12种排序算法:原理、图解、动画视频演示、代码以及笔试面试题目中的应用
  17. 2021最新Node.js视频教程(基础+全栈项目)
  18. ubuntu boot修复
  19. 定制化件T恤其实很简单,您需要了解的有以下几点
  20. 小马哥robofly四轴代码解读:PWM电机输出

热门文章

  1. 如何使用轻量应用服务器自带的Cloudreve应用镜像搭建属于自己的云网盘?
  2. Word2vec工作原理
  3. 图片相似度计算:深入理解DCT变换以及感知哈希
  4. 【读书笔记】Haskell函数式编程入门 I 基础篇 2. 类型系统和函数
  5. 《数据结构与算法之红黑树(Java实现)》
  6. 程序包xxx不存在 问题的完美解决
  7. 命令行模式:MySQL服务端的登录和退出
  8. windows用Redis Desktop Manager无法通过6379端口连接ubuntu redis问题
  9. 转载的--------------------HTTP协议中的短轮询、长轮询、长连接和短连接
  10. The superclass javax.servlet.http.HttpServlet was not found on the Java Buid Path