type
status
date
slug
summary
tags
category
icon
password
overview
性能是计算机体系结构中非常重要的概念,我们学习计算机组成,就是在学习计算机如何运行,为什么这样运行的,而这个为什么,往往就与性能相关。
本文将包含:性能的定义,度量方式以及提高性能的方式。
性能的定义
两台计算机运行同一个程序,A用了3分钟,B用了7min,我们说A的性能更好;
两个数据中心,A的带宽(简单理解为 单位时间完成的工作量)比B高,我们说A的性能比B更好;
以上两个例子,说明了性能定义的两个指标:响应时间与吞吐率。
对于不同用途的机器,我们应该关注不同的指标,就像上面那两个例子。
而对于cpu来说,我们一般把性能定义为:
性能=1/响应时间
性能的度量
对于度量性能,我们常使用时间这个指标,而由于度量方式的不同,对时间的定义也有很多种,让我们先来将这一点探清楚。
现代计算机都需要运行多个程序,为了整体的吞吐率,系统未必会选择去最小化一个程序的响应时间。因此,我们需要区分:任务时间与cpu工作时间。任务时间,是指一项程序任务从开始到结束所用的时间,而cpu时间,是指cpu为完成某项任务所花费的计算时间,不包括等待i/o或是其他程序运行的时间。此外,对于多核cpu,cpu时间是多个核上运行的时间总和。
正如前文所说,由于系统常常在多个程序之间切换运行,所以采用连续的时间指标并不准确,我们需要的是离散的时间间隔,也被称为时钟周期数(clock cycle)。
计算机是依靠时钟来确定硬件中发生的各种事件的,与时钟相关的概念有时钟周期长度,时钟频率,时钟周期数。人们常说的cpu主频,指的就是时钟频率。时钟周期长度与时钟频率为倒数关系,举个例子,当主频为2.8Ghz时,时钟长度为250ps。
cpu的主频越高,时钟周期长度就越短,运行地越快,与此同时散热压力也越大。如果你了解或自己动手组装过电脑,或许对“cpu超频”这个词语不会感到陌生,它指的是cpu的频率调的过高,这样会导致散热压力过大,久而久之cpu就会崩溃。
至此,我们确定了度量性能的指标为cpu工作时间,这个值和时钟等事物有关,具体的公式如下:
cpu工作时间==程序的cpu时钟周期数x时钟周期长度
时钟周期长度与cpu强相关,而程序的cpu时钟周期数可以和指令相关联起来:
cpu工作时间==指令数x每条指令的平均时钟周期数(CPI)x时钟周期长度
提高性能
按照前文的公式
cpu工作时间==指令数x每条指令的平均时钟周期数(CPI)x时钟周期长度
我们提高性能可以从三个方面入手:
- 减少指令数
和编译器有关。
- 减少CPI
现代cpu会通过流水线技术,优化CPI
- 减少时钟周期长度
提高cpu主频。鉴于功耗等问题,如今的cpu主频提升速度远不如从前。
值得注意的是,时钟周期长度是唯一能够可靠测量的指标。改动指令集以减少指令数目很有可能会增加CPI,从而抵消了改进效果,CPI和指令类型也有关,执行指令数目最少的代码未必执行的最快。
此外,指令数取决于体系结构而非具体的实现,而CPI和计算机的各种设计细节密切相关,以及应用程序中不同类型的指令所占的比例。因此,不同程序有不同CPI,就像相同指令集可以有不同的实现方式。
- 作者:Alex
- 链接:https://nextme.one/wureny.eth/article/cpuxingneng
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。