SMT处理器的优势与劣势:
SMT设计对多线程负载而言是较为适用的,多线程负载中的每一个线程通常都不会完全耗尽处理器的所有资源。对双路SMT处理器而言,假如正在执行的两个线程都需要花大量时间等待主内存的数据传送,那么它的执行效率与不支持SMT的传统双核CMP处理器是类似的,而且由于SMT处理器的硬件功能单元总数要比传统的双核CMP少很多,因此其执行效率要比CMP更好。在这种理想状态下,每个双路SMT执行核心都可以比得上一对不支持SMT的传统CMP核心,这样处理器的总体功耗便会减小许多。
据AMD宣称,由于无需在等待主内存传输数据方面耗费过多的时间,因此在实际应用中,一个双路SMT核心的效率相当于1.3个传统CMP核心。换句话说,如果主内存的数据传输操作不再是系统的瓶颈,那么SMT处理器会由于其中的执行单元数量相对较少而执行效率相比CMP核心降低,在这种情况下,SMT处理器会与传统单核设计的处理器类似(主要执行单元数量与传统单核类似),不过其中又比传统的单核处理器设置了更多额外的硬件单元,这样整体的效率相比传统的CMP多核设计便会出现下降的现象。
AMD给出的1.3倍数据恐怕有点略显悲观,之前曾有人宣称SMT的执行效率可能达到传统CMP核心的1.7倍左右。不过这种效率值与处理器的实际工作负载是有很大依赖作用的,而这些效率倍数通常都是在比较极端的条件下给出的,所以大家不应该过分迷信这样的效率倍数数字。实际上,在实际的工作中SMT处理器经常会由于执行单元数量的不足,而令其中执行的线程处于停等的状态下。
Bulldozer方案:进一步增加整数执行单元的套数
面对以上SMT处理器的不足,AMD提出的解决方案是直接增加整数执行单元的数量,这样每个线程都可以独享一套整数执行单元。而传统的SMT处理器则通常只会在执行单元的缓存部分进行扩容,比如为不同线程设置独享的寄存器文件等;而Bulldozer中则在增加寄存器文件的基础上进一步增加了整数执行单元的数量,这样每一个线程都能独享一套整数执行管线资源。
总体上看,Bulldozer设计与传统SMT处理器设计的唯一区别就是增加了整数执行单元的套数。因此,我们说Bulldozer并不是真正意义上的“双核”设计,而应该说是“1.5核”设计更为恰当一些,相比之下,传统SMT处理器的设计则可以称为是一种“1.2核”的设计。
AMD自称Bulldzoer的每个核心都可以平均按1.8核的效率执行双线程任务,这样的效率等级在外人看起来似乎有点过分乐观。当然,这里需要再次提醒大家注意的是SMT处理器的执行效率与其所实际执行的工作任务是息息相关的。不过有一点可以肯定的是,尽管Bulldozer的执行效率会比传统的SMT更高,不过这种更高是以增加了不少高功耗的整数执行单元为代价换来的。而且,在实际的应用中,Bulldozer架构能不能够充分发挥自己执行单元上的数量优势,还需要看Bulldozer在处理器缓存架构,处理器内部缓冲器和指令缓存方面的设计效果如何而定,而并不能仅仅看整数执行单元数量的多少来判断执行效率的高低。
最后,Bulldozer浮点执行部分的性能较高,在Bulldzoer中浮点执行单元采用的是双线程共享式的设计,假如内存带宽足够的话,处理器执行浮点任务时的性能应当是比较高的。
Bulldozer会是AMD的救命稻草吗?
Bulldozer架构的推出并不算是AMD在处理器架构设计领域的一次冒险之举。在此之前IBM/Intel等公司曾推出过其它几款宽位执行SMT产品,而这次的Bulldozer只是在这些SMT设计的基础上进行了谨慎的改良化设计。
在处理器设计领域,改良型的方案通常要比彻底的改革方案效果更好。许多风格激进的改革派设计方案如安腾,奔腾四Netburst,IBM Cell等均很快战死沙场,反而是许多改良型的设计方案最终赢得了胜利。
从渐进式改良的观点看,AMD这次为Bulldozer加入四个整数执行单元可谓改良幅度较大。这样的改良当然需要对处理器内部的其它功能单元进行许多微调和重新设计的配合才能充分发挥作用,比如缓存容量,缓存联合路书,缓存延迟参数,指令缓冲区的大小,资源分区策略,解码器带宽等等。虽然在设计新处理器时通常都需要面对这些参数的调整,但对AMD而言仍然需要冒很多风险,一般在设计成熟的过程中,设计人员会逐步对这些参数进行调整,但留给Bulldozer的时间已经不多了,AMD的Bulldozer处理器很快便会上市,因此在这方面AMD不能够出现任何的差错。
不过,让Bulldozer产品如期上市,并且能够对Intel的产品在性价比,性能/功耗比方面形成较大的威胁,还算不上是AMD的终极目标。
- 第1页:SMT处理器基础
- 第2页:SMT处理器的优势与劣势