码迷,mamicode.com
首页 > 其他好文 > 详细

浅谈CPU性能问题

时间:2019-05-14 21:59:14      阅读:277      评论:0      收藏:0      [点我收藏+]

标签:定义   时间间隔   方式   推荐   time   不同   cut   振荡器   最小   

1.什么是性能:

我们需要有个标准来衡量。这个标准中主要有两个指标:

第一个是响应时间(Response time)或者叫执行时间(Execution time)。想要提升响应时间这个性能指标,你可以理解为让计算机“跑的更快”

第二个是吞吐率(Throughout)或者带宽(Bandwidth),想要提升这个指标,你可以理解为让计算机“搬得更多”。

我们一般把性能,定义成响应时间的倒数,也就是:性能 = 1 / 响应时间

2.计算机的计时单位:CPU时钟

由于时间这个性能指标还会受到主板、内存这些其他相关硬件的影响,所以我们需要对“时间”这个我们可以感知的指标进行拆解,把程序的CPU执行时间变成CPU时钟周期数(CPU Cycles)和时钟周期时间(Clock Cycles)的乘积。

程序的CPU执行时间 = CPU时钟周期数 * 时钟周期时间

1)时钟周期时间:

你在买电脑的时候,一定关注过CPU的主频。比如我手头的这台电脑就是Intel COre-i7-7700HQ 2.8GHz,这里的2.8GHz就是电脑的主频。这个2.8GHz,我们可以粗浅的认为,CPU在1秒时间内,可以执行的简单指令的数量是2.8G条

如果想要更准确一点描述,这个2.8GHz就代表,我们CPU的一个“钟表”能够识别出来的最小的时间间隔。

在CPU内部,和我们平时戴的电子石英表类似,有一个叫晶体振荡器(Oscillator Crystal)的东西,简称为晶振。我们把晶振当成CPU内部的电子表来使用。晶振带来的每一次“滴答”,就是时间周期时间。

2)CPU时钟周期数:

我们再做一个分解,把他变成“指令数 * 每条指令的平均时间周期数(Cycles Per  Instruction,简称CPI)。不同的指令需要的Cycles是不同的,加法和乘法都对应着一条CPU指令,但是乘法需要的Cycles就比加法要多,我们的程序的CPU执行时间就可以变成这样三个部分的乘积。

程序的CPU执行时间 = 指令数 * CPI * Clock Cycles Time

因此,如果我们想要解决性能问题,其实就是要优化这三者。

1.时钟周期时间,就是计算机的主频,这个取决于计算机硬件。

2.每条指令的平均周期数CPI,就是一条指令到底需要多少CPU Cycle。在后面讲解CPU结构的时候,我们会看到,现代的CPU通过流水线技术,让一条指令需要的CPU Cycle尽可能地少。因此,对于CPU的优化,也是计算机组成和体系结构中的重要一环。

3.指令数,代表执行我们的程序到底需要多少条指令,用哪些指令。这个很多时候就把挑战交给了编译器。同样的代码,编译成计算机指令时候,就有各种不同的表示方式。

入门书籍推荐:

《计算机是怎么跑起来的》和《程序是怎样跑起来的》着重后面那本,可以说是一个入门微缩版本的“计算机组成原理”。

以及Coursera上的北京大学免费公开课《Computer Organization》

浅谈CPU性能问题

标签:定义   时间间隔   方式   推荐   time   不同   cut   振荡器   最小   

原文地址:https://www.cnblogs.com/mylearning-log/p/10854676.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!