为什么CPU要从单核发展到多核?
前言
这里首先直接给出结论:CPU从单核发展到多核的原因是如果维持单核,则为了提高CPU性能只能不断提高时钟频率,从而会导致CPU功耗急速上升,导致机箱过热,来不及散热。
历史
2004年,Intel CEO 贝瑞特曾为奔腾4处理器的时钟频率无法突破4GHZ而下跪道歉,并承认“兆赫神话”是错误的,即时钟频率并不是CPU性能的全部。

CPU性能公式
CPU的性能是每秒执行的指令数。公式如下:
CPU性能 = 时钟频率 × IPC
其中:
- 时钟频率=1/时钟周期,时钟频率为每秒执行的时钟周期数,单位了Hz
- 时钟周期是计算机中最小的工作单位,为一个振荡需要的秒数
- IPC(Instruction Per Cycle): 一个时钟周期完成的指令数,单位为"指令/时钟周期"
从中我们可以看出:
- 主频并不是CPU性能的全部,我们还能够通过提高IPC来提高CPU性能,比如流水线、超标量等技术就是提高IPC的典型技术。
- 两个不同厂商的CPU不能仅通过比较时钟频率来决定性能好坏,因为不同厂商CPU的架构不同,导致IPC不同。
CPU功耗
首先给出已知条件:
CPU功耗正比于"电流 × 电压 × 电压 × 主频"
主频正比于"电压"
IPC正比于"电流"
我们可以看出:
CPU功耗正比于 "主频的三次方"
CPU功耗正比于 "IPC"

因此:
- 增加主频会以三次方的速度增加功耗,因此这就证明了只提高主频并不是个好主意。
- 增加IPC只会以线性的速度增加功耗。
- 如果我们增加一倍IPC,减少一倍时钟频率,则根据CPU性能公式得:CPU性能不变,但CPU功耗减少了。
下图为一个笑话,即主板太热都可以在上面煮鸡蛋。

为什么多核是必然的发展趋势?
原因有两点:
- 根据Moore定律,集成电路上可容纳的晶体管数量每18个月翻一番,因此CPU上的晶体管数量会越来越多。
- 多核能够使得在减少时钟频率的同时增加性能(多核能增加IPC),但事实上目前程序员写的软件几乎都不是针对多核环境写的。
目前,世界上最快的计算机是中国的"天河2号",CPU核数为3120000,根据沙行勉教授的观点,这种计算机一般只是为了争排名,根本不会实际使用,因为功耗太大。
虽然多核CPU是发展趋势,但是程序员们的程序还是依旧还是老样子,因此并行计算的学习是解决这个问题的方法。
参考文献
[1] http://tech.sina.com.cn/roll/2007-06-04/1054327912.shtml
[2] http://en.wikipedia.org/wiki/Clock_speed
[3] http://en.wikipedia.org/wiki/Instructions_Per_Cycle
为什么CPU要从单核发展到多核?的更多相关文章
- 【转载】Linux cgroup资源隔离各个击破之 - cpu隔离1
Linux cgroup 有两个子系统支持CPU隔离.一个是cpu子系统,另一个是cpuset子系统. cpu子系统根据进程设置的调度属性,选择对应的CPU资源调度方法 .1. 完全公平调度 Comp ...
- JMeter—系统性能分析思路(十三)
参考<全栈性能测试修炼宝典JMeter实战>第九章 性能监控诊断 第二节 系统性能分析思路和第三节 定位分析 系统在工作负载中的性能受到许多因素影响,处理器速度.内存容量.网络或磁盘I/O ...
- JMeter—系统性能分析思路
系统在工作负载中的性能受到许多因素影响,处理器速度.内存容量.网络或磁盘I/O控制器的数量以及磁盘的容量和速度是所以工作负荷的重要性能特征组件.还有其他应用程序自身的性能特征.工作负荷的特性.应用程序 ...
- Intel系列CPU的流水线技术的发展
Intel系列CPU的流水线技术的发展 CPU(Central processing Unit),又称“微处理器(Microprocessor)”,是现代计算机的核心部件.对于PC而言,CPU的规格与 ...
- 编程之美 1.1 让cpu占用率曲线听你指挥(多核处理器)
[目录] 不考虑其他进程,cpu画正弦曲线 获取总体cpu利用率 获取多核处理器单个cpu利用率 考虑其他进程,cpu画正弦曲线 下面的程序针对多核处理器,可以设置让任何一个cpu显示相应的曲线(本文 ...
- 让cpu占用率曲线听你指挥(多核处理器)
编程之美 1.1 让cpu占用率曲线听你指挥(多核处理器) [版权声明]转载请注明出处 http://www.cnblogs.com/TenosDoIt/p/3242910.html [目录] 不考 ...
- Python进阶----GIL锁,验证Cpython效率(单核,多核(计算密集型,IO密集型)),线程池,进程池
day35 一丶GIL锁 什么是GIL锁: 存在Cpython解释器,全名:全局解释器锁.(解释器级别的锁) GIL是一把互斥锁,将并发运行变成串行. 在同一个进程下开启的多个线 ...
- 【协作式原创】查漏补缺之Go并发问题(单核多核)
主要回答一下几个问题 1.单核并发问题 2.多核并发问题 2.几个不正确的同步案例 1.单核并发问题 先看一段go(1.11)代码: 单核CPU,1万个携程,每个携程执行100次+1操作, 思考n最终 ...
- 多核CPU硬件架构介绍
转自:http://book.51cto.com/art/201004/197196.htm SISD.MIMD.SIMD.MISD计算机的体系结构 1. 计算平台介绍 Flynn于1972年提出了计 ...
随机推荐
- idea中导入本地jar包
idea中有时需要从本地导入jar包. 1:file>projectstructure 或者右键项目 open module setting, 选择librarys,然后点击+号,选择要导入的语 ...
- Shiro起步
1.测试环境 IntelliJ Idea 2.pom配置 <?xml version="1.0" encoding="UTF-8"?> <p ...
- su 与 su - 区别
su与su -都是用来切换用户的命令,简单说它们之间的区别就是:su -切换的干净彻底,而su 切换用户却拖泥带水. su su username,切换到指定用户,但是当前目录不会变化,环境变量还是上 ...
- Spring框架第六篇之Spring与DAO
一.Spring与JDBC模板 1.搭建环境 首先导入需要的jar包: 以上jar中多导入了DBCP和C3P0的jar包,因为这里需要演示怎么配置多种数据源,所以导入了这两个包,在实际开发中无需导入这 ...
- Linux常见错误之Could not get lock /var/lib/dpkg/lock - open
在Ubuntu系统上安装vim是遇到的问题: root@ubuntu:/# vim The program 'vim' can be found in the following packages: ...
- MySQL 温故知心(三)
MySQL锁概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制.比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level loc ...
- 【Android】WebView读取本地图片
背景 咱的博客园APP,是通过一个WebView来展示新闻的详情的.新闻必然是图文并茂的,无论是支持离线缓存还是加速新闻的打开速度, 都需要咱们打通本地存储与WebView之间的桥梁. 思路 1:首先 ...
- Visual studio插件 Reshaper--- 常用快捷键
快速修复 alt+enter (alt+enter唤出快速修复面板,上下方向键进行选择,再次敲击enter键确定修改) 跳转到对象声明 ctl+鼠标左键 重构-重命名(ctl+r+r) esc键退出 ...
- 关于js中的取值问题
像这样是获取不到值的,弹出的消息是 underfined:<html><style type="text/css">input { border: 1px ...
- jxl.jar包,应该把它放在哪个文件下
①把鼠标放到自己的工程上右键 ②点击Properties or Build Path >> Configure Build Path, 然后弹出一个窗口,click AddExternal ...