zoukankan      html  css  js  c++  java
  • 浅谈CPU性能问题

    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》

  • 相关阅读:
    网页如何展示PPT文档
    关于DLL中Resources文件修改
    解決 IE10 浏览器无法使用 ASP.NET From 验证登录的问题
    Ubuntu 13.10 下安装 eclipse
    Ubuntu 13.10 下安装node
    关于AutoCAD.NET的辅助方法
    Linux下安装oracle11g
    Linux下配置VNC
    Linux下安装McAfee防病毒软件(企业版本)
    .net 下word 中的图片与文字分离
  • 原文地址:https://www.cnblogs.com/mylearning-log/p/10854676.html
Copyright © 2011-2022 走看看