这里小编可以粗略地解释一下SMT与CMT(群集多线程技术,被用于AMD“推土机”架构)的区别。后者虽不是AMD的原创技术,但却是因为“失败”的“推土机”架构而广为人知。
简单地说,SMT和CMT都是在硬件层面实现“并行计算”的一种解决方案,只不过一个更强调在指令层(Instruction Level Parallelism,简称ILP)上进行,而另一个则更强调在任务层(Task Level Parallelism,简称TLP)上进行。事实上,更强调指令优化的SMT和更强调任务优化的CMT并非完全对等的技术,也并没有谁比谁一定更好的说法。SMT是通过在单个CPU内核上采用多个线程(通常为2个)同时执行指令来实现并行计算,而CMT则是通过将任务分别派发给不同CPU内核(通常为2个一组)分别执行以实现并行计算——也就是说,CMT在设计上必然至少拥有2个CPU内核,而每2个内核就会组成一个“模块”(Module),所以AMD的8核CPU更准确的说法应该是“4模块8核CPU”——相当于“核”在这里降到了“线程”的级别。
从理论上来说,CMT在数据吞吐能力(Throughput)方面要好于SMT,毕竟是两个完整的CPU内核(所以理所当然成本也高点),但小编前面特别提到了“优化”这个关键词——这里小编有话要说。小编曾反复强调,再优秀的硬件设计也离不开软件的优化,其中最好的例子就是Mantle和DirectX 12给“老”显卡带来的巨大的性能提升——因为代码重写了(被优化了),所以硬件的性能得以充分发挥!