同时多线程是指是
超标量技术与
多线程技术的结合。它的基本思路是把注意力返回到
处理器本身,从充分利用
CPU的效率、挖掘单个物理CPU的潜力人手,通过发射更多的指令来提高处理器的性能。
简述
同时多线程(Simultaneous Multi-Threading,SMT)最重要的意义是利用操作系统的虚拟多重处理,把两个(或多个)CPU看成是一个处理器。这样,就能够在每个
时钟周期都可以从多个
线程中选择多条不相关的指令发射到相应的功能部件去执行。由于基本解决了相关性问题,因此SMT处理器完全有可能在每个指令周期内填满所有的发射槽。
SMT技术是超标量技术与多线程技术的充分协同与结合,可以解决影响处理器性能的诸多难题。
实现方法
主要有两种主要的多线程实现方法。
第一种方法是细粒度(Fine-Grained)多线程技术,它在每条指令间都能进行线程的切换,从而导致多个线程的交替执行。通常以时间片循环的方法实现这样的交替执行,在循环的过程中需要跳过被阻塞的线程。要实现细粒度的多线程,
CPU必须在每个时钟周期都能进行线程的切换。由于一个线程阻塞后其他线程的指令还能够立即执行,所以细粒度多线程的主要优点是能够隐藏由任何或长或短的阻塞带来的吞吐率的损失。而其主要的缺点是减慢了每个独立线程的执行,这是因为即使没有任何阻塞,线程也会被其他线程的指令插入执行而导致延迟。
第二种方法是粗粒度(Coarse-Grained)多线程技术,它是基于细粒度多线程的优缺点而提出的。粗粒度多线程之间的切换只在发生代价较高、时间较长的阻塞出现时,例如二级Cache失效时才进行线程间的切换。这一改变大大减少了线程间切换的次数,并且不会减慢每个独立线程的执行,这是因为只有当线程发生高代价阻塞时才执行其他线程的指令。然而,粗粒度多线程也有较大的缺点:不能有效地减少
吞吐率的损失,特别是对于较短的阻塞而言。这一缺点是由粗粒度多线程的流水线建立时间的开销造成的。由于实现粗粒度多线程的CPU只执行单个线程的指令,因此当发生阻塞时,流水线必须排空或暂停。阻塞后切换的新的线程在指令执行产生结果之前必须先填满整个流水线。由于有建立时间的开销,粗粒度多线程对于减少高代价阻塞时带来的损失较为有效,此时流水线的建立时间相对于阻塞时间可以忽略不计。
意义
SMT最重要的意义是利用操作系统的虚拟多重处理,把两个(或多个)CPU看成是一个处理器。这样,就能够在每个时钟周期都可以从多个线程中选择多条不相关的指令发射到相应的功能部件去执行。由于基本解决了相关性问题,因此SMT处理器完全有可能在每个指令周期内填满所有的发射槽。
SMT技术是超标量技术与多线程技术的充分协同与结合,可以解决影响处理器性能的诸多难题。
1)减少结构相关性的影响
当一条指令要使用的功能部件被前面的一条指令所占用而无法执行时,就产生了指令间的结构相关性。在STM处理器中,不仅支持在超标量处理器中采用的乱序执行,还采用从多个不同线程中选择指令的方式,大大减少了功能部件冲突的概率。
2)减少逻辑相关性的影响
逻辑相关性包括“伪相关”(有“读后写”、“写后写”)和“真相关”(“写后读”)。对于前者,SMT处理器沿用了超标量处理器中采用的“寄存器重命名”策略加以解决;对于后者,超标量处理器无法解决,而SMT处理器为每个线程配备了独立的寄存器文件,不仅可以在线程切换过程中快速保存和恢复现场,而且由于只要选择不同的线程就不存在相关。当再调度到同一线程时,先前的指令已经执行完毕。
3)减少控制相关的影响
对于超标量处理器来说,转移预测的正确率对于减少控制相关非常重要。可惜预测的正确率并非百分之百,而且随着IPC和指令流水级数的增加,作废的指令条数也会迅速增加。STM处理器将两个转移方向映像到不同的线程中执行,等转移地址确定后,从两个线程中选择正确的一个继续执行,中止另一个。这一方法与转移预测技术结合,会将控制转移危害减轻许多。
4)隐藏远程访问和同步等待延迟
在大规模并行计算机系统,特别是拥有数千个处理器节点的DSP(分布共享处理器)系统中,处理器访问远程存储空间的延迟可以高达200多个时钟周期。在如此大的系统中,多个节点间的同步等待延迟也不容忽视。传统处理器通过忙等待或一个耗时很长的操作系统级线程切换来处理此类情况,随着高性能计算对系统效率要求的不断提高,这样的处理方式已经不能满足要求了。