IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 什么是计算机的性能? -> 正文阅读

[系统运维]什么是计算机的性能?

“原来的电脑性能跟不上了”、“这个程序性能需要优化一下”。那什么是计算机的性能呢?学习和研究计算机组成原理,就是在理解计算机是怎么运作的,以及为什么要这么运作。“为什么”所要解决的事情,很多时候就是提升“性能”。

1. 什么是性能?

两个指标用来衡量计算机的标准

  1. 响应时间(Response Time),也称执行时间(Execution Time)
    响应时间是指执行一个程序需要花费的时间。响应时间越小也就意味着花的时间越少,计算机的性能自然性能就越好。
  2. 吞吐率(Throughput),也称带宽(Bandwidth)
    吞吐率是在一定的时间范围内,能够处理的数据或者执行的程序指令数量。吞吐率越大,计算机的性能也越好。这也就解释了为什么要用8核、16核的CPU了。

2. 如何提升性能?

  1. 提升吞吐率的方法 --> 初步认为:较容易, “大力出奇迹”,多堆硬件。(略)
  2. 降低响应时间的方法 --> 难!10年前就处于“挤牙膏”模式了。
    如果 性 能 = 1 响 应 时 间 性能=\frac{1}{响应时间} =1?
    同样一个程序,在 Intel 最新的 CPU Coffee Lake 上,需要 30s 就能运行完成。而在 5 年前 CPU Sandy Bridge 上,需要 1min 才能完成。那么Coffee Lake 的性能是 1/30,Sandy Bridge 的性能是 1/60,两个的性能比为 2。于是,就说Coffee Lake 的性能是 Sandy Bridge 的 2 倍。
    世界各大CPU和服务器都组织了一个叫作 SPEC(Standard Performance Evaluation Corporation)的第三方机构,专门用来指定各种“跑分”的规则。
    在这里插入图片描述
    SPEC 提供的 CPU 基准测试程序,就好像 每届CPU 的“高考”。通过数十个不同的计算程序,对于 CPU 的性能给出一个最终评分。这些程序丰富多彩,有编译器、解释器、视频压缩、人工智能国际象棋等等,涵盖了方方面面的应用场景。这是SPEC跑分连接

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

用时间来衡量计算机性能是显而易见的,但存在两个问题:
a) 时间不准
实例:自行编写的同一个程序,每一次运行的时间会是不一样的,有时45ms,有时53ms。为什么呢?
答:运行时间的计算用Wall Clock Time或Elapsed Time,是程序运行结束时间减去程序开始运行的时间。但是,
1)计算机会同时运行许多程序,CPU不停地在各个程序之间进行切换。在这些走掉的时间中,很可能CPU切换运行其他程序了。
2)有些程序在运行时需要从网络、硬盘读取数据,再给内存和CPU,需要花费时间。
因此,准确统计程序运行时间,比较不同计算机的性能,需要减去上述2种时间。
应用:Linux操作系统中运行如下命令,可以统计Wall Clock Time

$ time seq 1000000 | wc -l
1000000


real  0m0.101s
user  0m0.031s
sys   0m0.016s

说明:
real time:即Wall Clock Time,指运行程序这个过程花费的时间。
user time:指CPU花在当前用户执行程序的时间。
sys time:指CPU花在操作系统内核执行程序的时间。
CPU执行时间(即CPU Time) = user time + sys time
CPU Time=user time+sys time=0.031+0.016=0.047s,可见运行程序的时间中只有不到一半的时间用在了CPU计算上。
在这里插入图片描述
同样的程序换一台Linux计算机结果如下:

[root@ecs-ffe4 ~]# time seq 1000000 | wc -l
1000000

real	0m0.011s
user	0m0.016s
sys	    0m0.004s

发现CPU Time=user time+sys time=0.016+0.004=0.020s > real time。这是为什么呢?
答:这是一台多核CPU或多CPU计算机,它将seq和wc两条命令分别给两个CPU进行运行。user time和sys time是两个CPU运行时间的相加的结果。而real time是运行过程中实际的时间花销,极端情况user time+sys time会是real time的2倍。
b)即使确定了CPU时间,也不一定能比较出两个程序的性能
例如,CPU的满载运行 VS. CPU的降频运行 VS. CPU的超频运行。此外,程序运行还会受主板、内存等硬件的影响。
因此,需要把程序的CPU时间拆解为CPU时钟周期数(CPU Cycles)时钟周期时间(Clock Cycle)
程 序 的 C P U 执 行 时 间 = C P U 时 钟 周 期 数 × 时 钟 周 期 时 间 程序的 CPU 执行时间 =CPU 时钟周期数×时钟周期时间 CPU=CPU×

4. 再看如何提升计算机性能?

  1. 时钟周期(即时钟周期时间,Clock Cycle)
    实例:某计算机使用的CPU是Intel Core-i7-7700HQ 2.8GHz。这里的2.8GHz被称为计算机的主频(Frequency/Clock Rate)。
    理解:CPU可以在1s时间内执行2.8G条简单指令。是CPU的“钟表”,是CPU能够识别的最小时间间隔,就像墙上的挂钟能够识别的最小时间单位为秒。
    时钟周期的产生部件是晶体振荡器(Oscillator Crystal),简称晶振。计算机中有晶体振荡器,电子石英表中也有晶振。晶振是计算机CPU使用的电子表。晶振的一个“滴答”就是时钟周期。2.8GHz CPU的时钟周期为1/2.8G=0.36ns。
    结论:主频越高,CPU的计算性能越快。
    有时候说的“超频”其实就是把CPU的时钟周期调快,加速CPU的计算。当然这个快是由散热、使用寿命代价的。
    根据 程 序 的 C P U 执 行 时 间 = C P U 时 钟 周 期 数 × 时 钟 周 期 时 间 程序的 CPU 执行时间 =CPU 时钟周期数×时钟周期时间 CPU=CPU×
  2. 方法:
    方法一. 缩短时钟周期时间 --> 提升主频,即换性能更好的CPU,工程上很难改变。
    方法二. 减少CPU时钟周期数。将CPU时钟周期数分解为:CPU时钟周期数 = 指令数×每条指令的平均时钟周期数(Cycles Per Instruction,简称 CPI)。
    因此, 程 序 的 C P U 执 行 时 间 = 指 令 数 × C P I × 时 钟 周 期 时 间 程序的 CPU 执行时间 =指令数×CPI×时钟周期时间 CPU=×CPI×
    提升计算机性能归结为:
    1) 时钟周期时间,即计算机主频。例如80386 CPU主频为33MHz,而现在的Core-i7 CPU主频为2.8GHz,提升了将近100倍。
    2)CPI,每条指令的平均时钟周期数。例如流水线技术(Pipeline)可以减少CPI,对CPI进行优化是计算机组成的重要内容之一。
    3)指令数,指执行特定程序需要多少条指令,用哪些指令。这主要依靠编译器解决。
    把自己想象成CPU,自己编写程序时如何提高速度呢?主频好像打字速度、CPI好像熟悉快捷键的程度,指令数好像程序设计的合理性。

5. 计算机性能指标实例

例题1. 某计算机主频为1GHz,运行的目标代码有2x105条指令,分为4类,各类指令所占比例和各自CPI如下表所示。

指令类型CPI指令混合占比
算术和逻辑160%
Load/Store218%
转移412%
Cache缺失访存810%

求:
1. CPI
2. MIPS
3. 该程序的CPU时间
解:
CPI=1x60%+2x18%+4x12%+8x10%=2.24
MIPS=f/CPI=1GHz/2.24=1000MHz/.2.24=446
CPU时间=2x105xCPI/f = 2x105x2.24/(1x109)=4.48x10-4

CPU时间=指令数量/(MIPSx106)
例题2. 假定基准程序A 在某计算机上的运行时间为100s、其中90s为CPU时间、 其余为I/O时间。若CPU速度提高50%, I/O速度不变, 则运行基准程序A所耗费的时间是多少?
解:运行时间=CPU时间+I/O
100s = 90s+10s
T=90/(1+50%) + 10 = 70s
例题3. 程序P在机器M上的执行时间是 20s, 编译优化后、 P 执行的指令数减少到原来的70%、 而CPI增加到原来的1.2倍,则P在M上的执行时间是多少?
解: 设CPU时钟频率为f(主频),原来程序P有x条指令
则原来CPI=20f/x
精简指令后,程序P有0.7x条指令,CPI=1.2CPI=24f/x
因此,P在M上的执行时间为:(指令数xCPI)/f=(0.7x CPI)/f = 16.8 s
例题4. 假定计算机M1和M2具有相同的指令集体系结构(ISA), 主频分别为1.5GHz和1.2GHz。在M1和M2上运行某基准程序P、平均CPI分别为2和1, 则程序P在Ml和M2 上运行时间的比值是多少?
解: 运行时间=(指令数xCPI)/主频
tM1=指令数x2/1.5,tM2=指令数x1/1.2
所以, tM1:tM2=1.6
例题5. 主存储器容量为64Kx32,可以得知: 216=64K,即地址总线(AB)宽度为16 bits。32表示数据总线(DB)宽度为32。进一步可知MAR为16位,PC为16位,MDR为32位。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-09-18 10:39:18  更:2021-09-18 10:39:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:54:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码