性能的评价是具有挑战性的。本节将介绍性能评价的不同方法,然后从计算机用户和设计者的角度描述性能的度量标准,最后分析它们之间的联系,并提出经典的处理器性能公式。
个人计算机用户对降低**响应时间 (response time) **感兴趣:它代表开始一个任务到该任务完成需要的总时间,包括硬盘访问、内存访问、I/O 活动、操作系统开销和 CPU 执行时间。
数据中心的管理者通常对 吞吐率/带宽 (band width) 感兴趣——在给定时间内完成的任务数量。因此,在大多数时候,我们需要对个人移动设备采用不同的应用程序作为评测基准,并采用不同的性能度量标准。
如果考虑响应时间,那么就有 \(性能=\frac{1}{执行时间}\)。
尽管我们都知道时间是度量计算机性能的标准,但其实它可以用不同的方式来定义,这取决于我们所计数的内容。如果在一个处理器同时运行多个程序的情况下,系统可能更侧重于优化吞吐率,而不是致力于将单个程序的执行时间变得最短。因此,我们需要区分运行自己任务的时间和一般的运行时间,于是就有 CPU 执行时间 来加以区分,只表示 CPU 上运行的时间,不包括等待 I/O 占用的时间。还可以分为用于用户程序的时间和操作系统为其执行相关任务花去的时间,分别称为 用户 CPU 时间和系统 CPU 时间。
几乎所有的计算机构建都需要时钟,它确定各类事件在硬件中何时发生。这些离散时间间隔被称为 时钟周期数。
一个最简单的公式可以帮我们考虑 CPU 时间:
这个公式表明,我们可以通过执行所需的 CPU 时钟周期数或缩短时钟周期长度来改进性能。
上述性能公式并没有设计指令的数量,但其实我们清楚,执行时间必然依赖于程序中的指令数。一个简单的想法能帮我们改写 CPU 执行时间:
后者简称为 CPI,可以帮我们在相同指令系统下比较性能。
根据上面的内容,可以方便地写出:
如果确定这些因素的值呢?我们可以通过运行程序来测量 CPU 的执行时间,并且说明书中通常有时钟周期长度,难以测量的是指令数和 CPI。当然,如果确定了时钟频率和 CPU 执行之间,我们只需要知道指令数和 CPI 中其中之一就能算出另一个了。
指令数可以通过体系结构仿真器来获取,而大多数处理器中的硬件计数器也可以用来测量执行的指令数、平均 CPI 等信息。另外, 指令数量完全取决于计算机体系结构,因而即便我们不知道具体实现,也可以测量指令数。但是 CPI,其实和计算机的各种细节都是息息相关的。
须知,只有一种因素去评价性能是危险的,必须考虑全部三个因素才能确定执行时间。如果某个因素相同,则需要考虑不同的因素。
计算机组成与设计(硬件/软件接口)1.6 性能