多核CPU和单核的区别~
昨天有同学问我多核cpu和单核的区别大不大,今天简单写一篇回复下吧。大家有其他问题也可以文末给我留言,我会尽量抽时间写文回复。
首先回顾下基本概念,cpu,就是中央处理器,包括运算器和控制器。cpu的主要功能就是“一行一行的执行代码”。所以大家可以把cpu看成是医院的医生诊室,在一定时间内执行一行代码(给一个病人诊断治疗)。
所以单核cpu就是,代码经过前面一系列的前导操作(类似于医院挂号),然后到cpu处执行时发现,就只有一个cpu,大家排队执行。(类似于10个挂号窗口挂号,结果跑到医生那只有一个医生,只能排队等)。
这时候想要提升系统性能,只有两个办法,要么提升cpu性能(让医生看病快点),要么多加几个cpu(多整几个医生)。
多年前英特尔奔腾年代不断提升主频,就是提升cpu性能的思路。那个时候正是我读大学的时候,配电脑就是分析主频,秀操作就是超频。还有人搞什么液氮冷却超频……
后来主频实在玩不下去了,因为随着主频提升对工艺要求,EMI/EMC要求,发热量等要求太高,扛不住了,所以不得不转换思路,开始研究多核这条路了(一个医生已经007了,实在受不了了,不得不多配几个医生了)。
于是乎整起了多核心,多个cpu同步运行指令,这速度就起来了。多核还有两种不同思路,一种叫对称多核心,就是多个核心是完全相同的,譬如4核cortex-a53,这样的4个核心都是同一种内核a53,这种术语叫SMP。还有另一种就是多个核心不一样,譬如stm32mp157,内置2个cortex-a7,1个cortex-m4核心,所以它内部是有a7和m4两种不同类型的核心的,这种术语叫AMP。
一般经常说到的多核问题都是SMP的多核问题,amp这种析构多核大多数人还不太接触。我们今天主要是想说说smp。我从以下几个问题角度来讲一下。
1.多核的效率是单核的倍数吗?
譬如4核A53的cpu,性能是单核A53的4倍吗?理论上是,但是实际不可能,至少有两方面的损耗。
一个是多个核心的其他共用资源限制。譬如内存,你换了4核cpu难道内存也会加4倍吗?譬如cache,4核cpu的cache也是4倍设计吗?譬如寄存器,每个内核的寄存器都是独立的单核倍数设计吗?这就好像医院一样,1个医生换4个医生,但是做B超检查的还是一台机器,性能瓶颈就从医生转到B超检查了,不可能性能提升4倍的。
另一个是多核cpu之间的协调管理损耗。譬如你有4个任务要执行,怎么评论分配给多个cpu核心,避免那种“旱的旱死,涝的涝死”的情况,这就是所谓负载均衡的问题,在支持多核的os调度器设计时要考虑的。譬如多个核心同时运行两个相关的任务,需要考虑任务同步的,这也需要消耗额外性能。
这就好像公司工作一样,一个人的时候至少不用开会浪费时间,自己跟自己商量就行了。两个人就要开会同步工作,协调分配,所以工作效率绝对不可能达到2倍。要是几千几万人呢?那一天工作8小时有6小时在开会,干活时间只有30%不到了。
但是多核心宏观上总是提升了系统总体性能的,这就好像公司,团队人多了对外输出能力总是更强的(管理不失水准情况下)。所以SMP是目前提升系统性能的一种主流思路。
2.多核在编程上有区别吗?
如果你是做操作系统底层开发移植,那么多核和单核是有区别的,这个大家不妨去看看一些SMP SOC的Linux kernel源码就知道了,在我们经常分析的head.S中就有不少处理smp相关的代码。
但是如果你是做应用层开发,那对你来说区别很小了。
现在崇尚大家用多线程编程,也是因为SMP的硬件成为主流了,编程时把工作分开到多个线程中,这样调度器就可以将他们同时调度到多个cpu去运行,就可以提升系统性能,让你感觉到软件运行速度更快了。所以多线程编程要注意同步和临界区问题等,也都是并行运行带来的。
1.STM32U5,意法半导体新打造的超低功耗MCU旗舰版
2.【例说Arm-2D界面设计】从不规则图标的显示说起
3.STM8CubeMX和STM32CubeMX功能一样吗?
4.这九种情况下的单片机项目尽量不要接~
5.偷偷把室友的STM32换成了GD32后。。。
6.剖开苹果A15芯片,看看die的布局!
免责声明:本文系网络转载,版权归原作者所有。如涉及作品版权问题,请与我们联系,我们将根据您提供的版权证明材料确认版权并支付稿酬或者删除内容。
多核CPU和单核的区别~相关推荐
- 多核cpu应用场景_2019电脑CPU怎么选_多核cpu和单核的区别|哪个好-太平洋电脑网...
[PConline 杂谈]如今的办公场景中,混杂着各种各样的应用:文档处理,网页浏览,多媒体编辑.人们装机来办公,茶余饭后时间可能还想玩几局游戏放松放松,最起码的要求就是"流畅不卡" ...
- 多核CPU,单核CPU,超线程技术,与多线程程序深入浅出
CPU核心单元组 他只是CPU的一部分,不能称为CPU,它负责逻辑运算,是最重要的一部分. CPU CPU是CPU核心单元组(逻辑处理单元),时钟电路,高速缓存器等等组合的一个整体,其中CPU核心单元 ...
- 线程VS进程,多线程VS多进程,并行VS并发,单核cpuVS多核cpu
目录 概论 进程VS线程 并发VS并行 多线程VS多进程 总结 概论 程序是为完成特定任务.用某种语言编写的组指令的集合.即指一段静态的代码,静态对象. 进程是程序的次执行过程, 或是正在运行的 一个 ...
- 内核/逻辑处理器/线程/多线程/多CPU/多核CPU
文章目录 1. 逻辑CPU 2. 线程数和逻辑CPU个数,内核个数 3.线程/进程/多核CPU 1. 逻辑CPU 先查看电脑cpu信息,可以看到,是8个逻辑cpu 2. 线程数和逻辑CPU个数,内核个 ...
- 多核cpu与多线程理解
计算机cpu与多线程 进程和线程: 进程包含线程,一个进程中包含多个线程. 线程是cpu调度和分配的基本单位,进程是操作系统进行资源分配(cpu,内存,硬盘io等)的最小单位. 单核cpu: 实现多进 ...
- 单核CPU与多核CPU的区别,多线程的优点,什么是并行?并发?
单核cpu:是一种假的多线程,因为在一段时间内只能执行一个线程的任务.但是由于cpu执行时间特别短,所以感觉不出来 多核cpu可以更好的发挥多线程的效率 一个java应用程序java.exe,其实至少 ...
- 单核CPU与多核CPU的区别
1.单核CPU 1.1 工作原理 工作原理:单核CPU较为死脑,在通电时该CPU就会执行存储块中的指定地址的指令,如果你想要执行内存块其他地方的代码必须调整总线位置才可以让其执行.单核CPU就相当于阻 ...
- CPU 和 CPU Core 有啥区别?多核 CPU?多个 CPU?单核 CPU 为何也支持多线程呢?
由于现在大多计算机都是多核CPU,多线程往往会比单线程更快,更能够提高并发,但提高并发并不意味着启动更多的线程来执行.更多的线程意味着线程创建销毁开销加大.上下文非常频繁,你的程序反而不能支持更高的T ...
- 如何区分单核与多核cpu及理解并行与并发
一.单核cpu和多核cpu的区分: 1.单核cpu: 实际上是一种假的多线程,因为在同一时间单元内 ,只能执行一个线程任务,只不过在非常短时间内迅速切换执行不同线程,让人误认为是在同时执行多个线程 2 ...
最新文章
- 小程序用thinkPHP上传文件到腾讯云对象存储空间
- Scrum Mastery:产品开发中如何优化产品价值?
- Evolview:提升系统进化树颜值
- mysql 集群 备份_mysql cluster集群备份还原
- 5.3.2 TCP连接管理
- Show percentage use PHP
- 【正则表达式】之Possessive Quantifiers
- Dataset:Big Mart Sales数据集的简介、下载、案例应用之详细攻略
- (数据结构与算法)稀疏数组案例
- mysql 设置时区,【MySQL】修改时区设置
- mysql改表字段类型导致数据丢失_故障分析 | 记一次 MySQL 主从双写导致的数据丢失问题【转】...
- sqlserver查询补全时间_mssql 按日期分组(group by)查询统计的时候,没有数据补0的解决办法...
- android 360旋转动画,ANDROID——仿360手机卫士的旋转打分控件
- POJ 1724 ROADS(bfs最短路)
- (7)FPGA十大设计思想(第2天)
- BZOJ 4269: 再见Xor [高斯消元 线性基]
- mysql之使用python操作mysql需要commit的情况
- ubuntu安装完无法用xshell,远程链接
- matlab单位采样序列程序,matlab产生pn序列
- vmplayer linux kernel headers