多核 CPU 和多个 CPU 有何区别?

为什么非得要费力气把CPU核心封装到一个盒子里呢?

难道不能通过简单得增加CPU个数来达到同样或者稍弱的性能吗?


架构可以千变万化,面向需求、综合考量是王道。

来,简单举个例子。假设现在我们要设计一台计算机的处理器部分的架构。现在摆在我们面前的有两种选择,多个单核CPU和单个多核CPU。

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

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

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

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


这就像为什么你要去公司上班而不是在家里上班一样。去公司上班(多核CPU)的话,资源共享(共享缓存),沟通方便(CPU内数据传输速度远大于总线速度)。

除非信息技术(类比总线)上有突破性进展,否则我们还是每天要挤公车去公司上班(多CPU方案无法取代多核)。


不太了解底层细节,但我估计多核的重要优点之一是cache coherence实现起来效率更高,成本也比增加专用针脚和总线更低。


胶水双核_百度百科


多个CPU常见于分布式系统,用于普通消费级市场的不多,多用于cluster,云计算平台什么的。多CPU架构最大的瓶颈就是I/O,尤其是各个CPU之间的通讯,低成本的都用100M以太网做,稍微好一点的用1000M以太网,再好的就用光纤等等,但无论如何速度和通量都比不上主板的主线。所以多CPU适用于大计算量,对速度(时间)不(太)敏感的任务,比如一些工程建模,或者像SATI找外星人这种极端的,跑上几千年都不着急的。而且多CPU架构更简单清晰,可以用消费级产品简单做数量堆叠,成本上有优势。而多核单CPU则适合对通讯I/O速度要求较快的应用,(相同核数量下)成本上也高一些,好像只有在超级计算机里会用到以万为单位的核心数,普通消费级产品也就是到16核封顶了,因为成本控制的原因。


CPU的性能不是简简单单的线性相加关系~ 多个CPU协同合作,必然要耗费更多的时间和通过更复杂的设计来协同各个核心,难度不小。


首先简单的增加CPU个数的方式没有考虑到CPU与CPU之间如何高速通讯,其次如果采用了这种架构程序设计就应该要重新来过才可以高效的利用多个CPU,最后采用单芯片同构多核心的方式,你可以通过操作系统的设计让你感觉不到程序是在多个核心上运行的,但是速度就是比单核快很多。

当然如果核心数多了很多,操作系统设计的思路也得改变,如果调度管理这些核心就是另外一个复杂的话题了。


你是订货商 以你们公司的生产能力需要上游厂商两条生产线的供应能力来匹配


那你是选择一个有两条生产线的公司还是选两个只有一条生产线的公司呢?


很明显 如果选择两个公司 那么这两个公司之间的任务分配等等调度问题都需要你来解决,而选择一个公司的话,生产调度的问题就是他们自己的事了。


多核cpu就是多个cpu的最佳替代方案。

1:多核CPU功耗低,多个CPU功耗大

2:多核CPU体积小,多个CPU体积大

3:多核CPU所有核心封装在同一个dia里,每个核心之间交换数据的速度极快。多个CPU之间交换数据需要经过以下步骤:1CPU-1内存-主板芯片-2内存-2CPU,交换数据的速度被慢速内存和低速带宽拖累。

4:多核cpu共用一组内存,数据共享。多个CPU每个CPU必须配备专属内存,否则无法工作。


可以,占空间(不只是那块金属板,还有散热器,通讯芯片,主板),功耗大,没意义。


通常讲的多核指cpu的负责运算的核心, 但一个cpu不仅仅包含计算核心部分, 还有其他设备比如用于快速数据交换的cache以及与其他外设交互的控制器。在多核单cpu上存在着共享的部件, 那就必然涉及到冲突和协作的问题, 排队等待的问题。无论是单cpu多核, 还是多cpu多核, 最终的计算效率取决于我们对于硬件资源的利用率如何, 无论是什么结构, 性能的瓶颈总会是木桶论中最短的的那个木条


简单说就是一家子人干活和几家人干活的区别,假设总人数一样,一家人开个门就能协调,几家人就要过街才能商量


同样的核心数,多核比多U成本低且性能好,主板设计也简单。

当然,单U多核还是不够用的时候,还是要上多U了。


多个单核CPU:成本更高,因为每个CPU都需要一定的线路电路支持,这样对主板上布局布线极为不便。并且当运行多线程任务时,多线程间通信协同合作也是一个问题。依赖总线的传输,速度较慢,且每一个线程因为运行在不同的CPU上。导致不同线程间各开一个Cache,会造成资源的浪费,同时如果线程间协作就会有冗余数据的产生,更加大了内存的开销。

单个多核CPU:可以很好地规避基本上多个单核CPU提到的所有缺点。他不需要考虑硬件上的开销以及复杂性问题,同时也可以很好地解决多线程间协同工作的问题,减少内存的开销,因为多线程程序在多核CPU中运行是共用一块内存区的,数据的传输速度比总线来的要快同时不会有冗余数据的产生。

单个多核CPU的问题也是显而易见的,当多个较大程序共同运行时,内存就显得极为匮乏了,不光是Cache占用的的问题,同时还有程序的指令以及数据的替换问题


网上看到的。。。


简单来说多核cpu的互联速度非常快,多cpu使用系统总线互联,协同工作较慢


多核在总线间切换太慢


286初期就是多核CPU,

486时期,因为386不肯退市,导致有两个CPU。


多个CPU之间的协同一直是问题,至今没有十分成熟可大规模商用解决方案,协同问题处理不好,反而会拉低总体性能,目前不采用额外方案可以接受的也就4P。而多核,可以通过共享cache等手段,在一个封装里实现多个核心之间的高效协同。更详细的,可以参考已经破产的3leaf公司的专利


一个CPU核心就是一个诸葛亮,赫兹就是这个诸葛亮一天要吃多少碗饭。

例如,一个电脑里只有一个诸葛亮在进行计算,但这个诸葛亮一天能算十道题,要吃五碗饭。这就是少核大赫兹。或者一个电脑里有四个诸葛亮在计算,但每个诸葛亮只能算两道题,但每个只吃一碗饭。多核小赫兹。

当然,有些电脑里面有很多很多组诸葛亮,他们遇到问题一起进行计算,但饭量也很惊人。这便是多个CPU


推薦閱讀:

為什麼有這麼多人歧視 AMD?
為什麼沒有128位甚至更多位的處理器呢?用不著?還是做不出來?
為什麼網上的硬體圈子有種強烈的不認可低壓CPU(U結尾)的傾向?
哪位大神可以幫忙分析一下i7 7700與i7 7700k的區別?
AMD新公布的「線程撕裂者」Ryzen Threadripper處理器能否將Intel再次拉下神壇?

TAG:中央处理器CPU | 计算机 | 硬件 |