处理器多核CPU和单核CPU,和多个CPU

作者:知乎用户
链接:https://www.zhihu.com/question/20998226/answer/18659825
来源:知乎

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

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

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

你是订货商 以你们公司的生产能力需要上游厂商两条生产线的供应能力来匹配
那你是选择一个有两条生产线的公司还是选两个只有一条生产线的公司呢?
很明显 如果选择两个公司 那么这两个公司之间的任务分配等等调度问题都需要你来解决,而选择一个公司的话,生产调度的问题就是他们自己的事了。

多核cpu就是多个cpu的最佳替代方案。
1:多核CPU功耗低,多个CPU功耗大
2:多核CPU体积小,多个CPU体积大
3:多核CPU所有核心封装在同一个dia里,每个核心之间交换数据的速度极快。多个CPU之间交换数据需要经过以下步骤:1CPU-1内存-主板芯片-2内存-2CPU(主板芯片是主板的核心组成部分,可以比作CPU与周边设备沟通的桥梁),交换数据的速度被慢速内存和低速带宽拖累。
4:多核cpu共用一组内存,数据共享。多个CPU每个CPU必须配备专属内存,否则无法工作。

(作者:肖邦的辣椒
链接:https://www.zhihu.com/question/20998226/answer/32032590
来源:知乎)

时间: 2024-10-11 15:49:57

处理器多核CPU和单核CPU,和多个CPU的相关文章

1.1 让CPU占用率曲线听你指挥[cpu manager]

[本文链接] http://www.cnblogs.com/hellogiser/p/cpu-manager.html [题目] 写一个程序,让用户来决定Windows任务管理器(Task Manager)的CPU占用率.程序越精简越好,计算机语言不限.例如,可以实现下面三种情况: 1.    CPU的占用率固定在50%,为一条直线: 2.    CPU的占用率为一条直线,但是具体占用率由命令行参数决定(参数范围1~ 100): 3.    CPU的占用率状态是一个正弦曲线. [分析] 如果不考

Windows系统CPU内存网络性能统计第二篇 CPU CPU整体使用率

分享一下我老师大神的人工智能教程吧.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net 本文配套程序下载地址为:http://download.csdn.net/detail/morewindows/5160810 转载请标明出处,原文地址:http://blog.csdn.net/morewindows/article/details/8678359 欢迎关注微博:http://weibo.com/MoreWindo

c语言设置cpu affinity (设置程序需要使用的cpu内核) cpu mask

最近打算写个小程序, 需要控制使用的是哪个 cpu 内核,所以做了一些调查, 整理一下分享给大家. ps: 因为毕业季很久没有写博客了, 以后继续. 顺便鄙视一下那些转载不声明出处的, by watkins.song pps: 最近有了个新的id, 因为在Oracle, wei.x.song, 不知到以后用哪个id比较酷一点 主要参考: http://www.gnu.org/software/libc/manual/html_node/CPU-Affinity.html/ http://stac

多核编程 与 单核多线程编程的区别

1.锁竞争: 单核中,如果单个线程取得所,则获取CPU运行时间,其他等待获取锁的线程被阻塞.使用了锁,影响的只是枷锁和解锁的耗时,CPU始终运行. 多核中,若2个(更多)线程使用同一把锁,则会导致CPU饥饿.实际还是串行化执行! 2.线程分解和执行的区别: 对单核CPU,对客户端软件,采用多线程,主要是 创建多线程将一些计算放在后台执行,而不影响用户交互操作.(用户界面 & 其他计算 并行进行)提高用户的操作性能! 多核中,分别出多个线程,不再限于将用户界面操作和其他计算分离.分解多个线程使为了

[ Linux ] [ OS ] [ CPU ] Linux系統下如何查看CPU型號、核心數量、頻率和溫度?

如何查看 linux 版本 及 Kernel 版本 http://benit.pixnet.net/blog/post/19390916-%E5%A6%82%E4%BD%95%E6%9F%A5%E7%9C%8B-linux-%E7%89%88%E6%9C%AC-%E5%8F%8A-kernel-%E7%89%88%E6%9C%AC - CPU https://magiclen.org/linux-view-cpu/ - Memory https://blog.longwin.com.tw/201

mysql cpu 100% 满 优化方案 解决MySQL CPU占用100%的经验总结

下面是一些经验 供参考 解决MySQL CPU占用100%的经验总结 - karl_han的专栏 - CSDN博客 https://blog.csdn.net/karl_han/article/details/5630782 MySQL服务器 IO 100%的分析与优化方案 - hello_katty的专栏 - CSDN博客https://blog.csdn.net/hello_katty/article/details/83268370 MySQL服务器CPU跑满100%的情况分析 - qq_

SQLSERVER服务器的CPU 100%紧急对应:查询占CPU高的session并KILL

---查询使用CPU高的sessionSELECT TOP 10[session_id],[request_id],[start_time] AS '开始时间',[status] AS '状态',[command] AS '命令',dest.[text] AS 'sql语句', DB_NAME([database_id]) AS '数据库名',[blocking_session_id] AS '正在阻塞其他会话的会话ID',[wait_type] AS '等待资源类型',[wait_time]

[原]调试实战——程序CPU占用率飙升,你知道如何快速定位吗?

原调试debugwindbghangprocess explorer 前言 如果我们自己的程序的CPU Usage(CPU占用率)飙升,并且居高不下,很有可能陷入了死循环.你知道怎么快速定位并解决吗?今天跟大家分享几种定位方法,希望对你有所帮助. 如何判断是否有死循环? 通过电脑风扇的声音猜测. 如果风扇一直响个不停,说明电脑很热.高CPU占用率会导致CPU发热量增大,从而导致风扇狂响.如果听到风扇响个不停,可以打开任务管理器看看CPU占用率是不是很高.如果发现是我们的进程导致的高CPU占用率,

操作系统中线程的实现模型

转自https://blog.csdn.net/fuzhongmin05/article/details/55802984 1.为什么需要线程? 首先需要回答一个问题,为什么操作系统需要线程.如果非要说是为什么需要线程,还不如说为什么需要进程中还有其它进程.这些进程中包含的其它迷你进程就是线程.进程有以下缺陷: 1.进程只能在一个时间内干一件事(执行一个程序执行流),而如果想同时干两件或多件事情,进程就不够用了.2.进程在执行过程中如果阻塞,例如等待输入,整个进程就将挂起,而无法继续执行.这样,