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方案:进一步增加整数执行单元的套数

深度剖析Bulldzoer及AMD产品战略探讨

面对以上SMT处理器的不足,AMD提出的解决方案是直接增加整数执行单元的数量,这样每个线程都可以独享一套整数执行单元。而传统的SMT处理器则通常只会在执行单元的缓存部分进行扩容,比如为不同线程设置独享的寄存器文件等;而Bulldozer中则在增加寄存器文件的基础上进一步增加了整数执行单元的数量,这样每一个线程都能独享一套整数执行管线资源。

总体上看,Bulldozer设计与传统SMT处理器设计的唯一区别就是增加了整数执行单元的套数。因此,我们说Bulldozer并不是真正意义上的“双核”设计,而应该说是“1.5核”设计更为恰当一些,相比之下,传统SMT处理器的设计则可以称为是一种“1.2核”的设计。


相关内容