特曼de学习笔记 -博客 | 技术分享 - 指令的性能
type: channel
link: https://www.yuofyou.cn/tag/%E6%8C%87%E4%BB%A4%E7%9A%84%E6%80%A7%E8%83%BD/
items: 程序性能 性能的度量 CPU性能

程序性能 性能的度量 CPU性能
type: item
date: 2022-03-28T19:10:00+08:00
description: 计算机类别个人计算机通用，各种软件受成本/性能权衡的影响服务器基于网络高容量、性能、可靠性从小型服务器到建筑规模的范围超级计算机高端科学和工程计算能力最高，但只占整个计算机市场的一小部分嵌入式计算机：嵌入到其他设备中的计算机，一般运行预定义的一个或者一组应用程序作为系统的组成部分隐藏起来严格的功率/性能/成本限制例如汽车、电视中的微处理器等程序概念计算机中的硬件只能执行极为简单的低级指令。从复杂的应用程序到简单的指令需要经过几个软件层次来将复杂的高层次操作逐步解释或翻译成简单的计算机指令。下图给出了软件的层次的结构：应用软件用高级语言编写系统软件编译程序：将HLL代码翻译成机器代码操作系统：服务代码处理输入/输出管理内存和存储调度任务和共享资源硬件处理器、内存、I/O控制器程序代码的级别性能一个程序的性能取决于以下各因素的组合：软件或硬件组成元素如何影响算法决定了源码级语句的数量和I/O操作的数量编程语言、编译器和体系结构决定了每条源码级语句对应的计算机指令数量处理器和存储系统决定了指令的执行速度I/O系统（硬件和操作系统）决定了I/O操作可能的执行速度[collapse status="true" title="Q：哪架飞机的性能最好？"]对于这个问题首先要定义性能，通过图片可以看到，巡航速度最高的是Concorde，航程最远的是DC-8-50，载客量最大的是747。假设用速度来定义性能，仍然有两种可能的定义。如果你关心点对点的到达时间，那么可以将只搭载一名旅客的巡航速度最快的客机认为是最好的。如果你关心的是运输450名旅客，那么747性能是最好的。[/collapse]在计算机中这样的两个概念：响应时间：完成一项任务需要多长时间吞吐率：每单位时间内完成的总工作。例如，每小时的任务/交易/... [collapse status="true" title="Q：下面两种改进计算机系统的方式能否增加其吞吐率或减少其响应的时间，或既增加其吞吐率又减少其响应时间？"]将计算机中的处理器更换为更高速的型号增加多个处理器来分别处理独立的任务一般来说，降低响应时间几乎都可以增加吞吐率。因此，方式1同时改进了响应时间和吞吐率。方式2不会使任务完成得更快，只会增加吞吐率。但是，当需要处理更多任务的时候，系统可能需要令后续请求排队。在这种情况下，随着吞吐率的增加，可同时改进响应时间，因为这缩小了排队等待时间。[/collapse]为了使性能最大化，我们希望任务的响应时间或执行时间最小化。对于某个计算机X，可以表达为：性能X =1 / 执行时间X如果有两台计算机X和Y，X比Y性能更好，则性能X >性能Y1/执行时间X > 1/执行时间Y执行时间Y > 执行时间x在讨论计算机设计时，经常要定量地比较两台不同计算机的性能。我们将使用“X是Y的n倍快”的表态方式。即性能X/性能Y=n如果X比Y快n倍，那么在Y上的执行时间是在X上执行时间的n倍，即性能X/性能Y=执行时间Y/执行时间X=n例：如果计算机A运行一个程序只需要10秒，而计算机B运行同样的程序需要15秒，那么计算机A比计算机B快多少15/10=1.5倍性能的度量消逝时间 （响应时间）表示完成任务所需的总时间，包括了硬盘访问、内存访问、I/O操作和操作系统开销决定了系统性能CPU时间 （CPU执行时间）处理某项工作的时间，它只表示在CPU上花费的时间，而不包括等待I/O或运行其他程序的时间（用户所感受的是程序的响应时间，而不是CPU执行时间）CPU时钟几乎所有计算机都用时钟来驱动硬件中发生的各种事件。时钟周期：一个时钟周期的持续时间。时钟间隔的时间。例如：250ps=0.25ns=250x10-12s时钟频率（速率）：每秒的周期例如：4.0GHz=4000MHz=4.0x109HzCPU性能用户和设计者往往以不同的尺度看待性能，我们需要确定一个设计的变化对性能的影响。一个程序的CPU执行时间 = 一个程序的CPU时钟周期数 × 时钟周期时间由于时钟频率和时钟周期时间互为倒数，故一个程序的CPU执行时间=一个程序的CPU时钟周期数/时钟频率硬件设计者必须经常在时钟速率和周期数之间进行权衡，通过以下方式提高性能减少时钟周期的数量提高时钟频率[collapse status="true" title="Q:某程序在一台时钟频率为2GHz的计算机A上运行需要10秒。现在将设计一台计算机B，希望将运行时间缩短为6秒。计算机的设计者采用的方法是提高时钟频率，但这会影响CPU其余部分的设计，使计算机B运行该程序时需要相当于计算机A的1.2倍的时钟周期数。那么计算机设计者应该将时钟频率提高到多少？"]我们首先要知道在A上运行该程序需要多少时钟周期数：CPU时间A=CPU时钟周期数A/时钟频率A 10秒=CPU…