1.2 多核体系结构
CMP有多种形式:两个处理器(双核)、四个处理器(四核)和八个处理器(八核)结构。有些结构是多线程,有些结构不是。在新的CMP中,高速缓冲存储器(cache)和内存的处理方式有着几种变体,在不同的实现中,处理器与处理器之间的通信方法也不同。来自各大主要芯片生产商的CMP实现中,在处理I/O总线和前端总线(Front Side Bus,FSB)上均不相同。
如果严格地从逻辑视图上查看被设计为利用多核体系结构的应用程序时,并看不出大多数区别。图1-1示范了支持多处理的3种常见配置。
|
| (点击查看大图)图1-1 |
图1-1中的配置1使用超线程(hyperthreading)。与CMP类似,使用超线程的处理器允许在一个芯片上执行两个或多个线程。然而,在超线程的封装中,多个处理器指的是逻辑上的,而不是物理上的。这些封装中有着两套硬件,但是不足以构成一个单独的物理处理器。这样,超线程允许处理器在将自身呈现给操作系统时,好像是完备的多处理器,但实际上只是在一个处理器上运行多个线程。
图1-1中的配置2是经典的多处理器。在配置2中,每个处理器位于一个独立的芯片上,而且有着自己的硬件。
配置3代表了当前多处理器的发展趋势,它在一个芯片上提供完整的多个处理器。
如同您将在第2章所看到的,一些多核设计在核的内部支持超线程。例如,一个使用了超线程技术的双核处理器可以将自己作为四核处理器呈现给操作系统。
混合型多核体系结构
混合型多核体系结构(hybrid multicore architecture)在一个封装中混合了多种处理器类型和/或线程模式。这样能够通过将多种独特的性能合并到一个功能内核中,提供有效的代码优化和特化(specialization)的方法。混合型多核架构的最常见示例是IBM的Cell broadband engine(Cell)。我们将在下一章中介绍Cell的体系结构。
需要注意的是每种配置是作为由两个或更多个能够并发执行多个任务的一组逻辑处理器来呈现给开发人员的。对系统程序员、内核程序员和应用程序开发人员的挑战是需要了解何时以及如何利用这一点。