序言

  1. 首先说明,本文中所要评估的计算机性能不是“系统性能”,而是指“CPU性能”。

  2. 系统性能的衡量,其实是指计算机的数据处理能力,它是一个与CPU处理速度、内存处理速度、硬盘读取速度和程序处理速度等多个因素相关的系统性能。可参考文章:http://blog.csdn.net/baidu_35692628/article/details/71364252

  3. 系统性能可以通过测量响应时间/吞吐率等方式得到,而要对这么多个因素进行定量比较是一个相当困难的工作。

  4. 这里逐步展开介绍如何评估“CPU性能”。

1. 计算机性能

  • 性能评估是复杂的。

    • 由于软件系统的规模及其复杂性,以及硬件设计和交互的复杂性。
  • 性能标准多种多样。

    • 响应时间(执行时间),有吞吐率(带宽)等等,需求点不同,性能指标往往不同。

    • 不过这些性能标准之间一般又是相互影响的,比如响应时间的减小意味着吞吐率的增大。

    • 现假如有两种改进计算机系统的方式:[1] 处理器更换为更高速的型号。[2] 多核并行分别处理独立任务。

      • 方法1:同时改进了响应时间和吞吐率。
      • 方法2:只增加了吞吐率。不会使任务完成得更快。
  • 响应时间来讨论计算机性能。

    • 为使性能最大化,我们希望任务响应时间/执行时间最小。
  • 计算机性能比较简单举例。

[1] 如果将计算机性能表示如下

PX=1执行时间X

P_X = \frac{1}{执行时间X}

[2]那么如果计算机X性能比计算机Y好,有如下关系

PX>PY,即

P_X >P_Y,即

执行时间X<执行时间Y

执行时间X

[3] 定量表达计算机的性能差异,我们使用“X是Y的n倍快”的表达方式

举例:如果X运行一个程序需要10s,而Y需要15s,那么性能比为

PXPY=执行时间Y执行时间X=1510=1.5

\frac{P_X}{P_Y} = \frac{执行时间Y}{执行时间X} = \frac{15}{10} = 1.5

[4] 性能执行时间是一个倒数关系。要增加性能就需要降低执行时间。

2. 性能测量 = 系统性能 + CPU性能

  • 执行时间相关术语

    • [1] wall clock time/response time/elapsed time:都指完成任务(执行完一段程序)所需的总时间。

      • 即我之前文章中总结的real time

      • 包括了硬盘访问、内存访问、I/O操作、操作系统开销等一切时间。

    • [2] CPU execution time:CPU执行时间,简称CPU时间。执行某一任务在CPU上所花费的时间。

      • user CPU time:即user time用户CPU时间。指在程序本身所花费的时间(用户空间)。

      • system CPU time:即sys time系统CPU时间。为执行程序而花在操作系统上的时间(内核空间)。

    • [3] clock cycle:时钟周期。

      • 为计算机一个时钟周期的时间,通常是处理器时钟,一般为常数。
  • 响应时间CPU执行时间的区别:(即CPU time 和 real time)

    • real time:用户感受到的时间,响应时间,可能有多个进程混杂,很难区分开

    • CPU执行时间:包括用户CPU时间和系统CPU时间。即user time + sys time

  • 确定了计算机性能测量标准。

    • 使用”系统性能(system performance)”来表示空载系统响应时间

    • 使用“CPU性能(CPU performance)”表示用户CPU时间

  • 要改进一个程序的性能,必须明确性能的定义。

    • 通过测量程序执行时间/响应时间/real time来寻找性能瓶颈。

3. CPU性能

  • 一个程序的CPU执行时间

    CPU执行时间=CPU时钟周期数×时钟周期

    CPU执行时间 = CPU时钟周期数 × 时钟周期

  • 时钟频率和时钟周期的倒数关系

    时钟周期=1时钟频率

    时钟周期 = \frac{1}{时钟频率}

    以上两式表明,减小CPU时钟周期数减小时钟周期(提高时钟频率),就能改进性能。但两者之间通常也是相互影响的。

  • 性能改进计算举例:

    某程序在一台时钟频率为2GHz的计算机A上运行需要10秒。现在将设计一台计算机B,希望将运行时间缩短为6秒。

    计算机的设计者采用的方法是提高时钟频率,但这会影响CPU其余部分的设计,使计算机B运行该程序时需要相当于计算机A的1.2倍时钟周期数。

    那么计算机设计者应该将时钟频率提高到多少?

    计算机A:

    10s=计算机A的CPU时钟周期数计算机A的时钟频率

    10s = \frac{计算机A的CPU时钟周期数}{计算机A的时钟频率}

    计算机B:

    6s=1.2×计算机A的CPU时钟周期数计算机B的时钟频率

    6s = 1.2 × \frac{计算机A的CPU时钟周期数}{计算机B的时钟频率}

    两者相比,

    计算机B的时钟频率计算机A的时钟频率=2

    \frac{计算机B的时钟频率}{计算机A的时钟频率} = 2

    得到,计算机B的时钟频率应为 4GHz.

  • CPU时钟周期与程序指令的关系

    • 一个程序所需要的CPU时钟周期数可写为
    • CPI = cycles per instruction,平均值
程序CPU时钟周期数=程序指令数×每条指令的平均时钟周期数

程序CPU时钟周期数 = 程序指令数 × 每条指令的平均时钟周期数

  • 性能计算举例:

    假设我们有相同指令集的两种不同实现方式。

    计算机A的时钟周期为250ps,对某程序的CPI为2.0;

    计算机B的时钟周期为500ps,对同样程序的CPI为1.2。

    对于该程序,请问哪台计算机执行的速度更快?快多少?(假设程序指令数为N)

    计算机A:

    计算机A的CPU执行时间=N×CPIA×CPU时钟周期A=N×2.0×250ps=500N ps

    计算机A的CPU执行时间 = N × CPI_A × CPU时钟周期A = N × 2.0 × 250ps = 500N\ ps

    计算机B:

    计算机B的CPU执行时间=N×CPIB×CPU时钟周期B=N×1.2×500ps=600N ps

    计算机B的CPU执行时间 =N × CPI_B × CPU时钟周期B = N × 1.2 × 500ps = 600N\ ps

    即,计算机A更快,为计算机B的1.2倍。

4. 经典的CPU性能公式

  • 一个程序的CPU执行时间:该公式将性能分解为三个基本因素,我们可以用该公式来比较和评估不同方案。

    CPU执行时间=指令数×CPI×时钟周期

    CPU执行时间 = 指令数 × CPI × 时钟周期

    CPU执行时间=指令数×CPI时钟频率

    CPU执行时间 = \frac{指令数 × CPI}{时钟频率}

    • 时钟周期:计算机的说明书中通常介绍了时钟周期,难以测量的指令数和CPI。

    • 指令数:由于指令数量取决于计算机体系结构,并不依赖于计算机的具体实现,因而我们可以在不知道计算机全部实现细节的情况下对指令数进行测量。

      • 用仿真器等软件工具可以测量出指令数,也可以用现代处理器中的硬件计数器来测量执行的指令数、平均CPI和性能损失源等。
    • CPI:CPI与计算机的各种设计细节密切相关,包括存储系统处理器结构,以及应用程序中不同类型的指令所占的比例。

      • 因此,CPI对于不同应用程序是不同的,对于相同指令集的不同实现方式也是不同的。
  • 计算机不同层次的性能测试指标及其测试单位

性能测试指标 性能测试单位
程序的CPU执行时间 程序执行的秒数
指令数 程序执行的指令数
CPI 每条指令的平均时钟周期数
时钟周期 每时钟周期的秒数
  • 唯一能够被完全准确测量的计算机性能指标是时间

5. 不同计算机CPU性能评估

  • 经过上述章节分析,我们知道,当比较两台计算机性能时,必须考虑全部三个因素:时钟周期 + 指令数 + CPI.
    以免造成对性能的误解。

  • 各种软硬件因素如何影响CPU性能(的各个因素):

软件或硬件指标 影响什么 如何影响
程序算法 指令数,CPI (1)算法决定源程序执行指令的数目,从而也决定了CPU执行指令的数目;(2)算法也可能通过使用较快或较慢的指令影响CPI。例如当算法采用更多的浮点运算时,将导致CPI增大。
编程语言 指令数,CPI (1)编程语言的语句必须翻译为指令,从而决定了指令数;(2)编程语言也影响CPI。例如Java对数据抽象进行了大量支持,将进行间接调用,需要使用CPI较高的指令。
编译程序 指令数,CPI 编译程序的效率,既影响指令数,又影响CPI。因为编译程序决定了最后生成的计算机指令,所以会以复杂的方式影响CPI。
指令集体系结构 指令数,CPI,时钟频率 指令集体系结构影响CPU性能的所有方面,因为它影响完成某功能所需的指令数、每条指令的周期数以及处理器的时钟频率
  • 指令集架构ISA(即指令集体系结构)、汇编语言、处理器架构之间的关系

    • [1] 汇编语言属于指令集,汇编语言使用人类看得懂的方式来描述指令集。指令集包括汇编语言形式和二进制机器码格式。

    • [2] 指令集决定了处理器架构一部分(解码逻辑和执行单元),处理器的架构就是用硬件电路实现指令集。

      • 指令集架构规定了处理器如何识别这些汇编指令,以及如何与上层交互。
      • 例如汇编语言:add r1,r2,r3的解码逻辑为r1 = r2 + r3还是r3 = r1 + r2
      • 不同CPU有不同指令集,编译器无法为不同的CPU编译出相同的汇编指令。这也是为什么会有不同的编译器的原因
    • [3] 处理器识别了这些指令之后,如何执行这些指令就是处理器架构(微结构)的事情。

  • 所以,在不同计算机性能比较时,我们必须首先确定影响CPU执行时间的三大因素以及每个因素的软硬件影响因素。基本上就是一个控制变量的过程,如果有太多因素不同,就不能直观地进行比较。

Acknowledgements:
http://book.51cto.com/art/201201/313562.htm
https://www.zhihu.com/question/23474438/answer/24733170

2017.09.02

计算机基础-计算机性能如何定量评估相关推荐

  1. 题库——“计算机基础”

    小雅兰为开学考试而奋斗 模块一 计算机基础概述    (1)信息技术基本知识    (2)计算机的发展与应用    (3)计算机的工作原理    (4)计算机系统的组成    (5)微型计算机主要硬件 ...

  2. 计算机基础选择题(2)

    计算机基础选择题(2) 2010年06月17日 11套 1.从某微机广告"P4-1.7G/128M/60G/40X/15/多媒体"可看出此微机的内存为__B____. A.1.7G ...

  3. D-HAZY :一个用于定量评估去雾算法的数据集

    原文 摘要 去雾处理是近年出现的一种图像增强技术.尽管它很重要,但是没有数据集来定量评估这些技术.在本文中,我们介绍了一个包含1400多对图像的数据集,这些图像包含地面真实参考图像和同一场景的模糊图像 ...

  4. 计算机基础知识同步训练,计算机应用基础:全国高等教育自学考试同步辅导/同步训练(非计算机专业公共基础课)最新版...

    本书结构及显著特点: 1.本书以自学考试大纲规定的考核知识点及能力层次为线索,按考试大纲规定的考核知识点及能力层次要求为线索分章辅导,将该章中的所有知识点按统考的各种题型编写在同步练习中,同时配有参考 ...

  5. 计算机基础课程教学创新,【计算机基础论文】大学计算机基础课程教学创新探讨(共5359字)...

    大学计算机基础课程教学创新探讨 摘要:怎样把计算机思维的培养当作是大学计算机基础课程教学的重要内容,已经被教育界所关注以及探讨.大学计算机基础课程是高校教学的基本课程,因此,应该对其教学创新进行探讨. ...

  6. 六种GAN评估指标的综合评估实验,迈向定量评估GAN的重要一步

    作者:Qiantong Xu.Gao Huang.Yang Yuan.Chuan Guo.Yu Sun.Felix Wu.Kilian Weinberger 生成对抗网络的评估目前仍以定性评估和一些可 ...

  7. 自然水体辐射特性与数值模拟 pdf_【技术·航天】定量评估贡献 精准决策未来 ——气象卫星数据在数值预报系统中贡献的定量评估...

    首先我们从本文的主角,气象卫星说起.气象卫星1960年就有了,1992年出现了星载微波图像仪数据,1998年出现了微波探测仪/微波湿度探测仪(AMSU/MHS)数据,1998年改进了高分辨红外辐射计( ...

  8. 大学计算机基础python-大学计算机基础最新章节_曾一著_掌阅小说网

    1.2 计算思维 1.2.1 计算思维的提出 随着计算机科学领域研究成果的不断丰富和完善,计算机技术已经应用于非常广泛的领域,如普适计算.商业智能.计算物理.计算医学等,与这些领域之间的融合越来越紧密 ...

  9. 中职学校的学生计算机基础较弱,中职学校计算机专业教学的现状分析及对策探究.doc...

    中职学校计算机专业教学的现状分析及对策探究 中职学校计算机专业教学的现状分析及对策探究 摘 要: 随着信息技术的发展,计算机已经成为人们日常学习和生活中不可或缺的工具,这也对中职计算机专业毕业生的能力 ...

最新文章

  1. linux 替换文件中某个字符串_word中如何删除包含某个特定字符串的整个段落?...
  2. 进程间通信 - 命名管道实现
  3. nodejs,python,sublime和Eclipse的包管理器
  4. CXF(2.7.10) - A simple JAX-WS service
  5. 10-9-用户登录控制
  6. 凝思系统如何调节分辨率_如何消除步进电机的噪音和振动?
  7. php实现快速排序和冒泡排序
  8. C++域作用符及其高级用法
  9. 工业级大数据接入MQ消息发送异常性及最终一致性解决方案-DW商业环境实战
  10. eclipse如何添加Memory Analyzer
  11. Three.js贴图效果一览
  12. 【九天教您南方cass 9.1】 14 坐标数据的纠正
  13. adapter java_Java 实现适配器(Adapter)模式
  14. dba成长随笔 -- 深入了解Oracle
  15. directx修复工具win7_win8下怎么装win7 win8下装win7方法【详细步骤】
  16. 程序员转行可以做什么?
  17. (轉貼) 太空探索/液態水存在?火星南極有廣大冰層 可能有生命 (News)
  18. 你的数据库到底应该如何存储密码?
  19. 【系统设计】本地生活之附近商家 LBS 服务实现
  20. 按照黑马教程学习javaWeb出现Property ‘dataSource‘ is requir报错HTTP Status 500 – Internal Server Error——解决方案

热门文章

  1. wcf 接收post数据_POST调用WCF
  2. two-04 索引 视图 多表联查
  3. 东软360度反馈测评系统解决方案
  4. 模式识别初步 - 基本概念
  5. 冒泡排序算法、时间复杂度和稳定性
  6. Go语言基础第07天(指针提高)
  7. word工具栏加载MathType选项卡的解决方法
  8. 对傅里叶变换公式的理解
  9. ecshop 360支付宝插件漏洞+ flow.php注入漏洞,ecshop支付宝注入漏洞分析
  10. Java计算器简易代码