计算机组成 - 性能指标:通过 CPU主频谈谈性能究竟是什么
计算机组成 - 性能指标:通过 CPU主频谈谈性能究竟是什么
计算机组成原理目录:https://www.cnblogs.com/binarylei/p/12585607.html
1. 性能 = 1 / 响应时间
- 响应时间(Response time)或者叫执行时间(Execution time)
- 吞吐率(Throughput)或者带宽(Bandwidth)
2. 计算机的计时单位:CPU 时钟
上文我们提到,使用执行时间(Wall Clock Time 或者 Elapsed Time)来衡量性能的指标。但是直接使用执行时间,有以下两个问题。
- 执行时间不准。现代计算机往往同时运行多个程序,CPU 在切换,因此这个时间通常都不能反应单个任务的执行时间。并且程序往往还需要从网络、硬盘去读取数据,这个时间也需要剔除。
- 执行时间依赖设备的性能。设备主频越高性能越好,如 Intel Core-i5-8250U 1.6GHz / Intel Core-i7-7700HQ 2.8GHz。
所以,就有以 CPU 时钟为最小单位计算程序 CPU 执行时间的方法。
程序的 CPU 执行时间 = CPU 时钟周期数 × 时钟周期时间
CPU 时钟周期数 = 指令数 × 每条指令的平均时钟周期数
程序的 CPU 执行时间 = (指令数 × CPI) × 时钟周期时间
程序 CPU 执行时间各参数如下:
-
时钟周期时间(CPU Cycle):就是计算机主频(Frequency/Clock Rate),主频越高性能越好,这个取决于计算机硬件。我们所熟知的摩尔定律就一直在不停地提高我们计算机的主频。
比如 2.8GHz,我们可以先粗浅地认为,CPU 在 1 秒时间内,可以执行的简单指令的数量是 2.8G 条。更准确一点描述是,这个 CPU 时钟周期(CPU Cycle)就是 1/2.8G。
-
每条指令的平均时钟周期数(Cycles Per Instruction,简称 CPI):就是一条指令到底需要多少 CPU Cycle。不同的指令需要的 Cycles 是不同的,加法和乘法都对应着一条 CPU 指令,但是乘法需要的 Cycles 就比加法要多,自然也就慢。
在后面讲解 CPU 结构的时候,我们会看到,现代的 CPU 通过流水线技术(Pipeline),让一条指令需要的 CPU Cycle 尽可能地少。因此,对于 CPI 的优化,也是计算机组成和体系结构中的重要一环。
-
指令数:代表执行我们的程序到底需要多少条指令、用哪些指令。这个很多时候就把挑战交给了编译器。同样的代码,编译成计算机指令时候,就有各种不同的表示方式。
我们对于“响应时间”这个性能指标进行抽丝剥茧,拆解成了计算机时钟周期、CPI 以及指令数这三个独立的指标的乘积,并且为你指明了优化计算机性能的三条康庄大道。也就是,提升计算机主频,优化 CPU 设计使得在单个时钟周期内能够执行更多指令,以及通过编译器来减少需要的指令数。
3. 如何提升计算机性能
从 80 年代开始,CPU 的主频按照摩尔定律一路飙升。但到了 21 世纪,单核 CPU 的主频很难提升,硬件工程师转向多核 CPU 的设计。
- 摩尔定律:提升 CPU 主频,每 18 个月 CPU 的主频会翻一番。
- 阿姆达尔定律:多核 CPU,并行计算。
3.1 摩尔定律:从 80 年代开始 CPU 主频一路飙升
上文讲 CPU 的性能时,我们提到了这样一个公式:
程序的 CPU 执行时间 = 指令数 × CPI × Clock Cycle Time
如果要提升计算机的性能,我们可以从指令数、CPI 以及 CPU 主频这三个地方入手。要搞定指令数或者 CPI,乍一看都不太容易。于是,研发 CPU 的硬件工程师们,从 80 年代开始,就挑上了 CPU 这个“软柿子”。在 CPU 上多放一点晶体管,不断提升 CPU 的时钟频率,这样就能让 CPU 变得更快,程序的执行时间就会缩短。
于是,从 1978 年 Intel 发布的 8086 CPU 开始,计算机的主频从 5MHz 开始,不断提升。1980 年代中期的 80386 能够跑到 40MHz,1989 年的 486 能够跑到 100MHz,直到 2000 年的奔腾 4 处理器,主频已经到达了 1.4GHz。但我们也可以看到,2019 年的最高配置 Intel i9 CPU,主频也只不过是 5GHz 而已。相较于 1978 年到 2000 年,这 20 年里 300 倍的主频提升,从 2000 年到现在的这 19 年,CPU 的主频大概提高了 3 倍。
3.2 功耗:CPU 的人体极限
其实,当时已经基本垄断了桌面 CPU 市场的 Intel 更是夸下了海口,表示奔腾 4 所使用的 CPU 结构可以做到 10GHz,但最终却失败了。奔腾 4 的主频为什么没能超过 3.8GHz 的障碍呢?答案就是功耗问题。
答案就是功耗问题。什么是功耗问题呢?我们先看一个直观的例子。一个 3.8GHz 的奔腾 4 处理器,满载功率是 130 瓦。这个 130 瓦是什么概念呢?机场允许带上飞机的充电宝的容量上限是 100 瓦时。如果我们把这个 CPU 安在手机里面,不考虑屏幕内存之类的耗电,这个 CPU 满载运行 45 分钟,充电宝里面就没电了。而 iPhone X 使用 ARM 架构的 CPU,功率则只有 4.5 瓦左右。
如果想要提升 CPU 主频,无论是下面这两个操作都会增加功耗,带来耗电和散热的问题。
- 增加密度:同样的面积里面,多放一些晶体管;
- 提升主频:让晶体管“打开”和“关闭”得更快一点。
在 CPU 里面,能够放下的晶体管数量和晶体管的“开关”频率也都是有限的。一个 CPU 的功率,可以用这样一个公式来表示:
功耗 ~= 1/2 × 负载电容 × 电压的平方 × 开关频率 × 晶体管数量
功耗增加太多,就会导致 CPU 散热跟不上,这时,我们就需要降低电压。这里有一点非常关键,在整个功耗的公式里面,功耗和电压的平方是成正比的。这意味着电压下降到原来的 1/5,整个的功耗会变成原来的 1/25。
事实上,从 5MHz 主频的 8086 到 5GHz 主频的 Intel i9,CPU 的电压已经从 5V 左右下降到了 1V 左右。这也是为什么我们 CPU 的主频提升了 1000 倍,但是功耗只增长了 40 倍。比如说,Surface Go 轻薄笔记本上,微软就是选择了把电压下降到 0.25V 的低电压 CPU,使得笔记本能有更长的续航时间。
3.3 阿姆达尔定律:多核时代的到来
在 Intel 努力将奔腾 4 处理器的主频提升到 10GHz 时,Intel 的对手 AMD 却多核 CPU 上大获成功,更是代表着“主频时代”的终结。
每天用心记录一点点。内容也许不重要,但习惯很重要!
posted on 2020-03-31 09:44 binarylei 阅读(3042) 评论(0) 编辑 收藏 举报