多个CPU
多核单CPU,只需要一套芯片组,一套存储,多核之间通过芯片内部总线进行通信,共享使用内存。在这样的架构上,如果我们跑一个多线程的程序,那么线程间通信将比上一种情形更快。如果最终实现出来,对板上空间的占用较小,布局布线的压力也较小。
而多核单CPU则适合对通讯I/O速度要求较快的应用,(相同核数量下)成本上也高一些,好像只有在超级计算机里会用到以万为单位的核心数,普通消费级产品也就是到16核封顶了,因为成本控制的原因。


Intel Nehalem架构 ↓_↓

Intel Sandy Bridge架构 ↓_↓

Intel Ivy Bridge架构 ↓_↓

多个CPU
多个CPU常见于分布式系统,用于普通消费级市场的不多,多用于cluster,云计算平台什么的。多CPU架构最大的瓶颈就是I/O,尤其是各个CPU之间的通讯,低成本的都用100M以太网做,稍微好一点的用1000M以太网,再好的就用光纤等等,但无论如何速度和通量都比不上主板的主线。所以多CPU适用于大计算量,对速度(时间)不(太)敏感的任务,比如一些工程建模,或者像SATI找外星人这种极端的,跑上几千年都不着急的。
每一个CPU都需要有较为独立的电路支持,有自己的Cache,而他们之间通过板上的总线进行通信。假如在这样的架构上,我们要跑一个多线程的程序(常见典型情况),不考虑超线程,那么每一个线程就要跑在一个独立的CPU上,线程间的所有协作都要走总线,而共享的数据更是有可能要在好几个Cache里同时存在。这样的话,总线开销相比较而言是很大的

区别与联系
- 1:多核CPU功耗低,多个CPU功耗大
- 2:多核CPU体积小,多个CPU体积大
- 3:多核CPU所有核心封装在同一个dia里,每个核心之间交换数据的速度极快。多个CPU之间交换数据需要经过以下步骤:1CPU-1内存-主板芯片-2内存-2CPU,交换数据的速度被慢速内存和低速带宽拖累。
- 4:多核cpu共用一组内存,数据共享。多个CPU每个CPU必须配备专属内存,否则无法工作。
- 5:多核CPU与多个CPU并不冲突,相反,两者会相互结合。目前有些大型机经常会有多个CPU,每个CPU都是多核的。如2个物理CPU,每个物理CPU都有2个核,那么最终的CPU就是4核的。
网友评论