NCQ与TCQ的区别及测试比较

简介: 硬盘指令队列NCQ/TCQ技术详解&性能测试  作者:Darren     NCQ(Native Command Queuing)与TCQ(Tagged Command Queuing)都是设计通过把计算机发向硬盘的指令做重新排序,从而提高硬盘性能的技术。

硬盘指令队列NCQ/TCQ技术详解&性能测试


 
 
作者:Darren   

  NCQ(Native Command Queuing)与TCQ(Tagged Command Queuing)都是设计通过把计算机发向硬盘的指令做重新排序,从而提高硬盘性能的技术。NCQ技术在 300MB/s的Serial ATA II规格中引入,针对的是主流的硬盘产品,而TCQ技术是在SCSI2规格中引入(ATA-4标准中也有采用),针对的是服务器以及企业级硬盘产品。

  要使用NCQ、TCQ技术,芯片组硬盘接口和硬盘产品本身都必须支持才行,也就是说,如果你购买的一款新硬盘并不支持NCQ,即使你的主板是最新的支持NCQ的,也不能够打开这个功能从而提高性能。

  当电脑发送指令需要读取的数据存放在距离较远的扇区的时候,这种“指令队列”功能就能够起到作用,提高硬盘的读取性能了。有了指令队列,硬盘接受到这些指令之后会对它们进行重新的排序,使得磁盘转动的每一圈都读取最多的数据。

硬盘指令队列NCQ/TCQ技术详解&性能测试

  如图,例如电脑要求硬盘读取A、B、C、D四个位置上的数据,如果没有指令队列功能的话,硬盘需要旋转两圈半来读取所有需要的数据,而有了指令队列对指令做最优化排序,磁盘只需要转动一圈就可以了。

  NCQ可以同时处理32条指令,而TCQ可以同时处理216条指令(不过TCQ硬盘一般设计“只有”最大64条指令的队列),此外TCQ相比NCQ还有两个额外的功能:它可以根据需要指定不进行排序而是强制按照硬盘接受到指令的顺序读取,还可以支持高优先级指令,可以比队列中其他指令优先执行。

  NCQ的实际性能表现究竟会如何呢,让我们来看一下这个测试:

  测试使用的是支持NCQ的希捷ST3160023AS, 160 GB硬盘,测试平台为3.2 GHz Pentium 4, 1 GB内存, GeForce 6800显卡以及Intel主板,测试软件使用PCMark04以及IOMeter,在开启关闭NCQ的状态下做一个对比。

  结果在PCMark04中硬盘使用从5,978 MB/s 提升到了6,112 MB/s,只有2.24%的提升,Windows XP载入时间性能提高了9.76%,从8,947 MB/s达到了9,821 MB/s。IOMeter的测试中成绩从119提升到了142,提升幅度为19.32%。

  我们看到上述两款软件测试中差距比较大,这是因为NCQ功能对于那些硬盘接收到无序指令的情形最有效果,PCMark04硬盘性能测试使用的是一系列比较有序的指令读取测试,而IOMeter是随机工作负荷,所以结果也更好。我们注意到XP载入时间提升也是比较喜人的,由此看来NCQ技术还是大有必要的。

目录
相关文章
|
1月前
|
测试技术 网络安全
什么是软件测试? 软件测试都有什么岗位 ?软件测试和调试的区别? 软件测试和开发的区别? 一位优秀的测试人员应该具备哪些素质? 软件测试等相关概念入门篇
文章全面介绍了软件测试的基本概念、目的、岗位分类、与开发和调试的区别,并阐述了成为优秀测试人员应具备的素质和技能。
178 1
什么是软件测试? 软件测试都有什么岗位 ?软件测试和调试的区别? 软件测试和开发的区别? 一位优秀的测试人员应该具备哪些素质? 软件测试等相关概念入门篇
|
1月前
|
人工智能 前端开发
大模型体验体验报告:OpenAI-O1内置思维链和多个llm组合出的COT有啥区别?传统道家理论+中学生物理奥赛题测试,名不虚传还是名副其实?
一个月前,o1发布时,虽然让人提前体验,但自己并未进行测试。近期终于有机会使用,却仍忘记第一时间测试。本文通过两个测试案例展示了o1的强大能力:一是关于丹田及练气的详细解答,二是解决一道复杂的中学生物理奥赛题。o1的知识面广泛、推理迅速,令人印象深刻。未来,或许可以通过赋予o1更多能力,使其在更多领域发挥作用。如果你有好的测试题,欢迎留言,一起探索o1的潜力。
|
1月前
|
存储 测试技术 数据库
数据驱动测试和关键词驱动测试的区别
数据驱动测试 数据驱动测试或 DDT 也被称为参数化测试。
|
2月前
|
存储 算法 测试技术
面向对象测试和传统测试的区别
面向对象测试和传统测试的区别
53 9
|
3月前
|
运维 测试技术
测试与开发问题之测试开发工程师与软件开发工程师和测试工程师如何区别
测试与开发问题之测试开发工程师与软件开发工程师和测试工程师如何区别
|
3月前
|
安全 测试技术 网络安全
|
3月前
|
Kubernetes 监控 Java
发布策略:蓝绿部署、金丝雀发布(灰度发布)、AB测试、滚动发布、红黑部署的概念与区别
发布策略:蓝绿部署、金丝雀发布(灰度发布)、AB测试、滚动发布、红黑部署的概念与区别
402 0
|
5月前
|
编译器 测试技术 Linux
技术洞察:循环语句细微差异下的性能探索(测试while(u--);和while(u)u--;的区别)
该文探讨了两种循环语句(`while(u--);` vs. `while(u) u--;`)在性能上的微妙差异。通过实验发现,后者比前者平均执行速度快约20%,原因在于循环条件检查的顺序影响了指令数量。尽管差异可能在多数情况下不显著,但在性能关键的代码中,选择合适的循环结构能优化执行效率。建议开发者在编写循环时考虑编译器优化和效率。未来研究可扩展到不同编译器、优化级别及硬件架构的影响。
|
6月前
|
Java 测试技术 Python
《手把手教你》系列技巧篇(二十七)-java+ selenium自动化测试- quit和close的区别(详解教程)
【4月更文挑战第19天】本文介绍了WebDriver中关闭浏览器的两个方法:close和quit。close方法关闭当前窗口,如果这是最后一个窗口,浏览器也会退出。quit方法则直接退出浏览器并关闭所有关联窗口。示例代码展示了两者的区别,通常在自动化测试后使用quit来彻底关闭浏览器。close和quit在HTTP请求上的差异也进行了说明,close请求的是 `/session/{session id}/window/current`,而quit请求的是 `/session/{session id}`。
124 8
|
6月前
|
Java 测试技术 API
安卓APP和iOS APP在测试上的区别是什么?
安卓APP和iOS APP在测试上的区别是什么?
189 0