存档

文章标签 ‘性能’

CMP读书笔记二:CMP简要介绍

2011年3月31日 sigma 2 条评论 7,983 views

注:上个学期就下过决心要把《Chip Multiprocessor Architecture Techniques to Improve Throughput and Latency》看完,并且写了一篇关于CMP的读书笔记,《CMP的提出》,之后,虽然看了下,但一直不想写,今天突然感觉应该把看的东西简要写写,算是总结,故有此文。为了使得这几篇文章脉络稍微清晰点,在这里先对片上多核处理器进行简要的介绍。

片上多核处理器(Chip Multicore Processor,CMP)就是将多个处理器核心集成到一个处理器芯片中,从而提高单个处理器的处理能力。

按照集成的处理器核心的数目,片上多核处理器可以分为多核处理器和众核(Manycore)处理器。

按照计算内核对等与否,片上多核处理器处理器又可以分为同构多核处理器和异构多核处理器。同构多核处理器的各个核心的结构相同,地位对等,现在主流的处理器厂商,如Intel,AMD所推出的处理器一般都是属于这类。异构多核处理器的各个核心的结构不同,功能也不同,地位也不同,分为主处理器和协处理器,IBM,索尼,东芝联手推出的Cell处理器就是一个典型的代表,Cell由一个Power主处理器单元(Power Processor Element ,PPE)和8个协同处理单元(Synergistic Processing Elements,SPE)组成,8个SPE结构不同的,不同的SPE可以快速的完成不同的类型的运算。

片上多核处理器的出现使得在一个处理器上并发地执行多个线程成为可能,大大的增加了处理器的吞吐量(throughput),一些吞吐量的应用,如web应用,可以充分的并且很简单地利用片上多核处理器代理的优势,详见关于提高处理器吞吐量的文章。但是,对于另外一些对延时敏感,需要高性能的应用,就不是那么容易直接利用多核带来的性能提升。

这些程序分为两类,一类是原来单核心处理器上的串行程序,这些程序不可以直接通过多线程手段在多核处理器上获得更高的性能,为了利用多核所能带来的性能提高,有两种方法可以提高这类程序的性能:第一种是通过增加一个辅助线程(helper thread),辅助线程要比主线程跑地快一点,但是可以跳过一些代码,功能主要是为主线程完成一些预取操作,比如将数据从主存搬到cache上;第二种是通过猜测多线程(thread-level speculation,TLS)来提高串行程序的性能,猜测多线程通过在执行过程中将一些原来的串行比较容易并行化的代码(如循环)的动态地分配给几个线程执行,从而提高程序的执行速度,但是猜测多线程会带来额外的消耗,一是线程分配的消耗,另外就是猜测失败重新执行的消耗。这部分内容详见以后会写的关于降低处理器单任务延时的文章。

第二类程序就是一些本来就是针对多核处理器设计的多线程程序,对于这类程序,可以直接将不同的线程映射到不同的处理器核心,但是,该类程序会因为不同的线程间的数据依赖以及共享资源的竞争导致不能取得理想的加速比。

该书电子pdf版:

Chip Multiprocessor Architecture Techniques to Improve Throughput and Latency

无觅相关文章插件,快速提升流量