架构可以千变万化,面向需求、综合考量是王道。
来,简单举个例子。假设现在我们要设计一台计算机的处理器部分的架构。现在摆在我们面前的有两种选择,多个单核CPU和单个多核CPU。

如果我们选择多个单核CPU,那么每一个CPU都需要有较为独立的电路支持,有自己的Cache,而他们之间通过板上的总线进行通信。假如在这样的架构上,我们要跑一个多线程的程序(常见典型情况),不考虑超线程,那么每一个线程就要跑在一个独立的CPU上,线程间的所有协作都要走总线,而共享的数据更是有可能要在好几个Cache里同时存在。这样的话,总线开销相比较而言是很大的,怎么办?那么多Cache,即使我们不心疼存储能力的浪费,一致性怎么保证?如果真正做出来,还要在主板上占多块地盘,给布局布线带来更大的挑战,怎么搞定?

如果我们选择多核单CPU,那么我们只需要一套芯片组,一套存储,多核之间通过芯片内部总线进行通信,共享使用内存。在这样的架构上,如果我们跑一个多线程的程序,那么线程间通信将比上一种情形更快。如果最终实现出来,对板上空间的占用较小,布局布线的压力也较小。

看起来,多核单CPU完胜嘛。可是,如果需要同时跑多个大程序怎么办?假设俩大程序,每一个程序都好多线程还几乎用满cache,它们分时使用CPU,那在程序间切换的时候,光指令和数据的替换就要费多大事情啊!

所以呢,大部分一般咱们使用的电脑,都是单CPU多核的,比如我们配的Dell T3600,有一颗Intel Xeon E5-1650,6核,虚拟为12个逻辑核心。少部分高端人士需要更强的多任务并发能力,就会搞一个多颗多核CPU的机子,Mac Pro就可以有两颗。

2、了解多核技术   百度百科

内核是指在一枚处理器中集成两个或多个完整的计算引擎(内核)。多核技术的开发源于工程师们认识到,仅提高单核芯片的速度会产生过多热量且无法带来相应的性能改善,先前的处理器产品就是如此。他们认识到,在先前产品中以那种速率,处理器产生的热量很快会超过太阳表面。即便是没有热量问题,其性价比也令人难以接受,速度稍快的处理器价格要高很多。

多核技术能够使服务器并行处理任务,而在以前,这可能需要使用多个处理器,多核系统更易于扩充,并且能够在更纤巧的外形中融入更强大的处理性能,这种外形所用的功耗更低、计算功耗产生的热量更少。多核技术 是处理器发展的必然近20年来,推动微处理器性能不断提高的因素主要有两个:半导体工艺技术的飞速进步和体系结构的不断发展。

半导体工艺技术的每一次进步都为微处理器体系结构的研究提出了新的问题,开辟了新的领域;体系结构的进展又在半导体工艺技术发展的基础上进一步提高了微处理器的性能。这两个因素是相互影响,相互促进的。一般说来, 工艺和电路技术的发展使得处理器性能提高约20倍,体系结构的发展使得处理器性能提高约4倍,编译技术的发展使得处理器性能提高约1.4倍。但是今天,这种规律性的东西却很难维持。多核的出现是技术发展和应用需求的必然产物。

单芯片多处理器通过在一个芯片上集成多个微处理器核心来提高程序的并行性。每个微处理器核心实质上都是一个相对简单的单线程微处理器或者比较简单的多线程微处理器,这样多个微处理器核心就可以并行地执行程序代码,因而具有了较高的线程级并行性。由于CMP采用了相对简单的微处理器作为处理器核心,使得CMP具有高主频、设计和验证周期短、控制逻辑简单、扩展性好、易于实现、功耗低、通信延迟低等优点。此外,CMP还能充分利用不同应用的指令级并行和线程级并行,具有较高线程级并行性的应用如商业应用等可以很好地利用这种结构来提高性能。目前单芯片多处理器已经成为处理器体系结构发展的一种必然趋势。

3、数据级并行、指令级并行、线程级并行   http://www.zhihu.com/question/21823699

  1. 处理器是就是执行指令的机器。性能是处理器最重要的指标之一,《计算机系统结构.量化研究方法》中提出了下面一个处理器性能公式。CPU时间=指令数×CPI×时钟周期时间。这里的CPI(Cycle Per Instruction)。
  2. 因此提高性能,可以从以下几个方面着手。
  1. 降低指令数目。有硬件和软件两个方面可以降低指令数目。<1>通过编译器的优化来去除冗余指令。<2>使用数据级并行。在多媒体数据处理领域,会有这样一种情况发生:同一操作重复处理多个数据。因此很多专用处理器设置了SIMD指令(Single Instruction Multiple Data),如普通处理器执行以下指令,
AND Dest1  op_a  op_b
AND Dest2  op_c  op_d
  1. 在SIMD处理器中可能只需要这样一条指令就可以了
SIMD_AND Dest1 Dest2  op_a op_b op_c op_d
  1. 缺点是硬件代价稍高。
  2. 减少时钟周期,等价于提高时钟频率。这个方面可以通过两个手段来达到。<1>使用先进的工艺,这样就直接降低了关键路径的延迟,可以在固定时间内发射更多的指令,摩尔定律正是这个方面的体现。<2>使用流水线技术,这是指令级并行的一种,将执行路径拆分为若干段,减少了等待,在任一时间点上同时有N条指令在执行,原理可参考工业流水线技术,缺点是会由于指令的相关性带来指令阻塞,很难达到N倍的性能提升。
  3. 降低CPI。也就是减少平均每个指令使用的时钟周期。可以每个周期执行多条指令来实现,也就是指令级并行。上面所说的流水线技术就是其中一种。此外还可以使用多发射等技术来实现。
  1. 单独说一下多线程。我们平时所听到的多线程通常指的是操作系统层面的多线程,比如,我们同时在聊qq和听歌,操作系统通过时间片轮回的调度方法让处理器分别处理qq程序和播放器程序,只不过由于切换速度过快我们感受不到。处理器的多线程和这个类似。比如处理器中同时执行者t1, t2, t3三个程序(我们称为三个线程)。对于单发射处理器来说,每个时间点处理器只能被一个线程占用,比如t1,当执行到某一个时间点时,可能会执行一些速度很慢但不需要处理器协助的动作,如从硬盘取数据,为了避免处理器过长时间等待所造成的性能损失,我们可以去执行t2程序段,也就是切换到了t2线程。当然了,在切换之前需要保存断点以便重新切换回t1线程时可以继续执行。这也就是线程级并行,其实也是为了降低CPI。