Power芯片的多线程技术

 

IBM公司从POWER5芯片开始提供了同步多线程技术(SMT),实现了业界领先的吞吐量和性能,从而可以大大地提高服务器的利用率,并能整合系统负载达到更有效的管理。

 

多线程的概念:

传统的CPU 在某一时间只能处理一个指令序列,通常我们把它称为一个线程。在线程处理的过程中CPU 的处理单元需要不断调入指令与数据进行处理。随着CPU 技术的发展,CPU 的主频与性能不断提高,从而要求调入指令和数据的速度也不断提高。但是内存技术的发展并没有跟上CPU 发展的速度,内存通常无法提供足够的指令和数据给CPU 进行处理。为了解决这个问题,业界通常采用多级缓存的方式:CPU 处理单元中的寄存器是最快的,通常一个CPU 中有一、二百个寄存器,它可以在一个时钟周期内提供指令和数据;其次是一级缓存,它的大小通常为几十KB,它需要几个时钟周期的访问时间;再其次是二级缓存,它的大小通常为几MB,它需要十几个时钟周期的访问时间;然后是内存,从内存中取得数据需要几十个时钟周期的访问时间;而最慢的是硬盘,通常需要几千甚至几万个时钟周期的访问时间。当CPU 需要处理下一条指令时,它通常按照寄存器、一级缓存、二级缓存、内存、硬盘这一顺序去查找。如果在内存中仍然找不到需要的指令或数据时,系统会进行Context Switch,终止此线程在CPU 上的运行,使其处于等待状态,而让其它的线程运行。当此线程需要的数据被调入内存后,此线程处于就绪状态,可以被调度到CPU 上运行。线程间的Context Switch 需要几十个时钟周期。

由此可见当CPU 需要从内存中取数据时,处理单元需要空转几十个时钟周期,有关统计显示当前CPU 处理单元的平均利用率不足25%。为了提高CPU 处理单元的利用率,设计者采用了线程级的并行技术,即在CPU 的核心中执行一个以上的指令序列。对于操作系统来说,一个物理的处理器相当于两个逻辑的处理器。一般来说,多线程的演变可以大致划分为以下四种模式:

l  单线程

l  粗粒度多线程

l  细粒度多线程

l 同步多线程

 

单线程模式,在此模式下,每周期一个线程执行两条指令。注意,在单线程模式中,第一周期只用到两个执行单元(FX0 LS0)。在此模式下,如何利用执行单元依赖于指令级的并行算法,该算法是由编译器或汇编语言程序员利用超大处理器中的八个指令管道(FX0 - CRL)产生的。

粗粒度多线程,在任一时刻只有一个线程执行,当线程遇到一个长延迟事件时,如二级缓存不命中,则系统调度另一个线程执行,而不是让系统资源空转等待此线程。这一机制可以提高整个系统的利用率。这两个线程共享许多系统资源,如CPU 的寄存器和缓存等,因此这两个线程的切换比Context Switch 要快得多,只需要几个时钟周期。IBM 在使用PowerPC RS64 IV 处理器的pSeries 680 pSeries 660-6M1 上使用过这种粗粒度的多线程技术。

细粒度多线程,采用这种多线程的系统循环的执行两个线程的指令,这就需要在处理器的设计上增加许多冗余的部件。如果一个线程遇到长延迟事件时,对应这一线程执行的时钟周期仍然没有被利用。

同步多线程(SMT),与其它的多线程技术一样,同步多线程能够从多个线程中取出指令来运行,它能够同时执行不同线程的指令。通过同步多线程技术,系统能够动态调整系统环境,如有可能同时执行不同线程的指令。当一个线程遇到长延迟事件时,允许另一个线程使用所用的处理单元。

本质上,同步多线程是一种将线程级并行处理(多CPU)转化为指令级并行处理(同一CPU)的方法。POWER5 是实现这一技术的第一款IBM PowerPC 处理器,既可以处理单线程,也可以处理双线程。每个处理器核上有两个线程,并且AIX 将每个线程配置为一个单独的逻辑处理器。尽管SMT 是实现在物理硬件上的,但它的使用却是在操作系统层激活的,要求操作系统软件支持这一特性。在POWER5 上, AIX V5.3 支持SMT

 

 

关于我们 | 新闻中心 | 合作伙伴 | 联系我们 |
西安优盛信息技术有限公司  版权所有©2007-2018  陕ICP备07501629号
在线客服系统