3. Performance Metrics

性能指标
AP SHANTHI博士

 

该模块的目标是识别和评估处理器的性能指标,并讨论 CPU 性能方程式。

 

当您查看计算机工程方法时,您会看到发生的技术趋势和与技术相关的各种改进,这将产生更新和更新的体系结构。你必须评估现有系统的瓶颈,然后尝试提出更好的架构,这个过程会继续下去。在评估现有系统的瓶颈时,您必须有某些指标和某些基准,您将根据这些指标和基准来完成评估。

 

你应该基本上能够

衡量绩效
报告表现和
总结表现。
 

这些步骤是必要的,因为这将帮助您对要购买的计算机系统做出明智的选择。它将帮助您了解营销炒作——关于计算机系统的炒作太多了,除非您对计算机系统的性能有一些基础知识,否则您将无法管理这些,也无法做出明智的判断购买系统时的选择。了解绩效衡量标准也是了解潜在组织动机的关键,基于人们试图带来这些修改的因素,从而提高绩效。您将能够理解引入某些创新的动机方面。在讨论绩效时,您应该能够回答以下一些问题:

 

• 对于不同的程序,为什么某些硬件比其他硬件更好?

 

• 系统性能的哪些因素与硬件有关?(例如,我们需要一台新机器,还是一个新的操作系统?)

 

• 机器的指令集如何影响性能?

 

从购买的角度和设计师的角度来看,性能都很重要。当您从采购的角度来看,给定一组机器时,您必须能够决定哪一个具有最佳性能、最低成本以及最佳性价比。同样,从设计师的 从角度来看,您面临着几个设计选项,例如具有最佳性能改进、最低成本和最佳成本/性能的选项。除非您对性能指标有一些了解,否则您将无法决定哪些是您能想到的最佳性能改进,哪些将导致成本最低,哪些将为您提供最佳性价比。所以,无论你是从设计者的角度还是从购买者的角度来看,他们都需要对性能指标有一定的了解,并且都需要这些性能指标进行比较。

 

我们的目标是了解架构中的哪些因素会影响整体系统性能,以及这些因素的相对重要性和成本。性能对不同的人意味着不同的东西。例如,以航空业为例。如果您必须在不同类型的飞机之间进行选择,您必须考虑哪些各种因素?你是只关心巡航速度——飞行器飞多快,还是你要担心汽车飞行器飞多远——飞行范围。,或者看看这些飞机有多大,有多少人?在一个时间点从一个地方运送到另一个地方。因此,这些是需要考虑的不同因素,您不能期望特定的飞机满足所有这些要求。您必须决定哪个因素比其他因素更重要。毫无疑问,这三个因素都很重要,但它们三个可能并不同等重要——与其他因素相比,您可能对某些因素更重要。性能评估的标准因用户和设计者而异。当您查看计算机行业时,这同样适用。您有不同类别的计算机系统,并且您可能有某些对某些类型的应用程序很重要的性能标准,而它们对于其他类型的应用程序可能不那么重要。您应该能够决定哪个对于哪种类型的处理器很重要。你必须意识到这样一个事实,你永远不应该让工程师简单地展示数据——你应该始终坚持他或她应该以数据得出的结论开始,以证明原因你得到这些数据。只有了解了处理器的内部架构,才能做出明智的选择。

 

影响计算机系统性能的因素有很多。您使用的指令和这些指令的实现、内存层次结构、处理 I/O 的方式——所有这些都可能有助于您的性能。考虑计算机性能的主要因素是时间。我们所有人都担心程序执行的速度。所以最重要的性能因素是时间。当您认为时间是最重要的因素时,您是在考虑响应时间,还是在考虑其他因素?我们所说的响应时间是指延迟——您要求处理器执行特定任务以及您从处理器获得响应的速度——这基本上就是所谓的响应时间。

我的工作需要多长时间才能运行?
执行一项工作需要多长时间?
我必须等待数据库查询多长时间?
另一个重要的时间因素是吞吐量。它是在给定时间内完成的工作总量。

 

• 机器一次可以运行多少作业?

• 平均执行率是多少?

• 完成了多少工作?

 

响应时间(执行时间)——任务开始到完成之间的时间对个人用户来说很重要。吞吐量(带宽)——在给定时间内完成的工作总量对数据中心经理很重要。我们将需要不同的性能指标以及一组不同的应用程序来对嵌入式和台式计算机进行基准测试,后者更关注响应时间,而服务器则更关注吞吐量

 

如果我们必须最大化性能,我们显然需要最小化我们的执行时间。性能与执行时间成反比。

 

性能 = 1/ 执行时间

 

如果处理器 X 比 Y 快 n 倍,那么,


 

减少响应时间几乎总能提高吞吐量。

 

例如,如果计算机 A 在 10 秒内运行一个程序,而计算机 B 在 20 秒内运行相同的程序,那么 A 比 B 快多少?

 


 

A 比 B 的加速比 = 20 /10 = 2,表明 A 比 B 快两倍。

 

执行时间是 CPU 在任务上花费的时间,不包括等待 I/O 或运行其他程序的时间。您知道处理器不仅运行您的程序,它还可能运行其他程序,当有 I/O 传输时,它可能会阻塞该程序,然后切换到另一个程序。我们不考虑进行 I/O 操作所花费的时间,总是只担心 CPU 执行时间。这是 CPU 在特定程序上花费的时间。

 

要确定程序的 CPU 执行时间,您可以找出程序占用的时钟周期总数并将其乘以时钟周期时间。每个 程序由许多指令组成,并且每条指令需要多个时钟周期来执行。如果您找出每个程序的时钟周期总数,并且您知道每个时钟周期的时钟周期时间,那么 CPU 执行时间可以简单地计算为每个程序的 CPU 时钟周期总数和这些时钟周期。由于时钟周期时间和时钟频率成反比,这也可以写成程序的 CPU 时钟周期除以时钟频率。


 

由于 CPU 执行时间是这两个因素的乘积,因此您可以通过减少时钟周期时间的长度或程序所需的时钟周期数来提高性能。时钟周期是执行一个操作/流水线阶段等的基本时间单位。时钟速率(以 MHz 或 GHz 为单位的每秒时钟周期数)是时钟周期时间(时钟周期)的倒数 CC = 1 / CR。

 

时钟频率基本上取决于具体的CPU组织,是流水线的还是非流水线的,硬件实现技术——所使用的VLSI技术。10 ns 时钟周期与 100 MHz 时钟速率相关,5 ns 时钟周期与 200 MHz 时钟速率相关,依此类推。如果您查看 250 ps 时钟周期,则它对应于 4 GHz 时钟速率。时钟频率越高,您的时钟周期越低。

 

例如,考虑以下问题:

 

一个程序在计算机 A 上以 2 GHz 的时钟在 10 秒内运行。计算机 B 必须以什么时钟频率运行才能在 6 秒内运行该程序?不幸的是,为了实现这一点,计算机 B 将需要 1.2 倍于计算机 A 的时钟周期来运行程序。


 

如果您想早一点完成程序,您会发现第二个处理器应该以 4 GHz 的时钟频率运行。

 

当您必须根据时钟周期总数乘以时钟周期周期来计算总执行时间时,您会遇到计算时钟周期总数的问题。并非所有指令都需要相同的时间来执行——假设您必须知道每条指令所需的时钟周期数,并且您应该能够将所有这些时钟周期相加以找出时钟周期的总数。考虑执行时间的一种方法是它等于指令数乘以每条指令的平均时间。不知何故,如果我们找出每条指令的平均时间,我们应该能够计算出执行时间。计算机机器 (ISA) 指令由许多基本或微操作组成,这些操作的数量和复杂性取决于指令和确切的 CPU 组织(设计)。微操作是一种基本的硬件操作,可以在一个 CPU 时钟周期内执行。这对应于微程序 CPU 中的一条微指令。示例:寄存器操作:移位、加载、清除、递增、ALU 操作:加、减等。因此,单个机器指令可能需要一个或多个 CPU 周期才能完成,称为每指令周期数 (CPI)。程序的平均(或有效)CPI:在给定 CPU 设计的程序中执行的所有指令的平均 CPI。这对应于微程序 CPU 中的一条微指令。示例:寄存器操作:移位、加载、清除、递增、ALU 操作:加、减等。因此,单个机器指令可能需要一个或多个 CPU 周期才能完成,称为每指令周期数 (CPI)。程序的平均(或有效)CPI:在给定 CPU 设计的程序中执行的所有指令的平均 CPI。这对应于微程序 CPU 中的一条微指令。示例:寄存器操作:移位、加载、清除、递增、ALU 操作:加、减等。因此,单个机器指令可能需要一个或多个 CPU 周期才能完成,称为每指令周期数 (CPI)。程序的平均(或有效)CPI:在给定 CPU 设计的程序中执行的所有指令的平均 CPI。

 

示例问题:

 

• 计算机 A 和 B 实施相同的 ISA。计算机 A 的时钟周期时间为 250 ps,某些程序的有效 CPI 为 2.0,计算机 B 的时钟周期时间为 500 ps,同一程序的有效 CPI 为 1.2。哪台计算机更快,速度更快?

 

每台计算机执行相同数量的指令,I,所以


计算整体有效 CPI 是通过查看不同类型的指令及其各自的周期计数和平均值来完成的。

 


 

其中 ICi 是第 i 类执行的指令数的计数(百分比),CPIi 是该指令类每条指令的(平均)时钟周期数,n 是指令类的数量。

 

整体有效 CPI 因指令组合而异——是对一个或多个程序中指令的动态频率的衡量。

 

要查看示例,请考虑以下指令组合:


如果更好的数据缓存将平均加载时间减少到 2 个周期,机器会快多少?

 

– 负载 à 20% x 2 个周期 = .4

– 总 CPI 2.2 à 1.6

– 相对性能为 2.2 / 1.6 = 1.38

 

这与将分支指令减少到 1 个周期相比如何?

 

– 分支 à 20% x 1 个周期 = .2

– 总 CPI 2.2 à 2.0

– 相对性能为 2.2 / 2.0 = 1.1 我们现在可以将基本性能方程写为:

 


 

这些方程式将影响性能的三个关键因素分开

 

可以通过运行程序来测量CPU执行时间
时钟频率通常是给定的
可以在不了解所有实现细节的情况下使用分析器/模拟器测量总体指令数
CPI 因指令类型和 ISA 实现而异,我们必须了解实现细节
 

总而言之,如果您查看 CPU 执行时间的各个方面,您会发现影响 CPU 执行时间的三个因素 - 时钟周期时间、每条指令的平均时钟周期数(即您的 CPI 值)和指令计数。影响这三个参数的各种因素是:

指令数受不同因素的影响——取决于程序的编写方式,如果您是一名熟练的程序员,您使用清晰的算法并对其进行适当的编码,那么它将使用更少的指令。因此,首先取决于您要使用的算法以及编写此代码的程序员的技能。第二件事是,一旦您编写了代码,编译器就会负责将这些指令翻译成您的机器指令。编译器应该是一个优化编译器,以便将这段代码翻译成更少数量的机器指令。编译器在减少指令数方面肯定可以发挥作用,但请记住 编译器只能使用您的指令集架构中支持的指令。所以指令集架构也起到了减少指令数的作用。在上一节中,我们研究了如何根据 ISA 将相同的操作实现为不同的指令序列。因此,在 ISA 的帮助下,编译器将能够生成使用较少机器指令的代码。
时钟周期时间取决于 CPU 组织,也取决于所使用的技术。通过组织,我们的意思是指令单元是作为流水线单元还是非流水线单元来实现的。流水线有助于多周期操作,从而减少时钟周期时间。这将在后续模块中详细介绍。
CPI,即每条指令的平均时钟周期数,取决于所使用的程序,因为您可能会使用具有许多基本操作或简单指令的复杂指令。类似地,编译器可以使用复杂的指令而不是使用更简单的指令来翻译程序。所以,编译器也可能有作用,因为编译器只使用你的 ISA 中的指令,所以 ISA 肯定有作用。最后,CPU 组织也可以在决定 CPI 值方面发挥作用。
 

确定了会影响构成 CPU 性能方程的三个因素的各种参数后,计算机设计人员应努力采取适当的设计措施来减少这些因素,从而减少执行时间,从而提高性能。

 

总而言之,我们已经了解了如何定义处理器的性能以及为什么计算机系统需要性能。我们已经指出了不同的性能指标,查看了 CPU 性能方程和影响 CPU 性能方程的因素。该模块还提供了不同的示例,说明使用 CPU 性能方程计算 CPU 执行时间。

 

网页链接/支持材料

 

计算机体系结构 – 定量方法,John L. Hennessy 和 David A.Patterson,第 5 版,Morgan Kaufmann,Elsevier,2011。
计算机组织与设计——硬件/软件接口,David A. Patterson 和 John L. Hennessy,第 4 版,Morgan Kaufmann,Elsevier,2009 年。
计算机组织,Carl Hamacher、Zvonko Vranesic 和 Safwat Zaky,第 5 版,McGraw-Hill 高等教育,2011 年。