计算机组成原理:如何衡量计算机的性能

article/2025/9/24 6:29:04

在计算机组成原理乃至体系结构中,“性能”都是最重要的一个主题。学习和研究计算机组成原理,就是在理解计算机是怎么运作的,以及为什么要这么运作。“为什么”所要究竟的事情,很多时候就是提升“性能”

什么是性能?时间的倒数

计算机的性能,主要以如下两个指标来衡量:

  • 响应时间,或者叫做执行时间
    • 响应时间是指,我们执行一个程序,到底需要花多少时间。花的时间越少,性能越好
    • 提升性能就是让计算机“跑的更快”
  • 吞吐率,或者叫做带宽
    • 吞吐率就是指我们在一定的时间范围内,到底能处理多少事情。能够处理的事情越多,性能越好(这里的事情指的是处理的数据或者执行的程序指令)
    • 提升性能就是让计算机“搬得更多”

如果响应时间短,在相同时间内就能多处理一些请求。所以,缩短程序的响应时间,通常会提升吞吐率。

除了缩短响应时间,还可以通过并行的方式来提升吞吐率,譬如现在的8核、16核处理器。(人多力量大)

提升吞吐率的办法有很多,通常只要堆硬件、加机器就能实现。但响应时间的提升则没那么容易,CPU的性能发展已经遇到瓶颈了。

一般我们把性能,定义成响应的倒数,也就是:
性能 = 1 / 响应时间 性能=1/响应时间 性能=1/响应时间

由此,响应时间越短,性能的数值越大。譬如:同样一个程序,在 Coffee Lake 上,仅需 30s 即可运行完成。在 Sandy Bridge 上,需要 1min 才能完成。那么我们说 Coffee Lake 的性能是 1/30,Sandy Bridge 的性能是 1/60,它们的性能比为 2。于是我们可以说,Coffee Lake 的性能是 Sandy Bridge 的 2 倍。

计算机的计时单位—CPU时钟

为什么不直接用时间来衡量

虽然时间是一个很自然的用来衡量性能的指标,但是用时间来衡量是,有两个问题

时间不准

我们自己写个程序,记录程序开始运行的时间和程序停止运行的时间(这个时间叫做 Wall Clock Time 或 Elapsed Time),计算其差值,会发现每次的结果都不尽相同。其原因有很多。

  • 首先,计算机中同时运行很多程序,CPU不停地在各程序之间进行切换。在这段时间差内,CPU很可能被切换去运行其他程序了
  • 其次,程序运行时,可能要从网络、硬盘读取数据,才能给到内存和CPU,这也是耗时操作

综上,想准确统计某个程序的运行时间,进而比较实际性能,就要把这些时间刨除掉。Linux 下的 time 命令,就可以帮我们统计出来,程序实际在 CPU 上花了多少时间。运行 time 命令,会返回三个数值。

  • 第一个是 real time,即我们说的 Wall Clock Time。
  • 第二个是 user time,即 CPU 运行程序时,用户态所占时间。
  • 第三个是 sys time,即 CPU 运行程序时,内核态所占时间。

程序实际的 CPU 执行时间(CPU Time),就是 user time 与 sys time 之和。

[root@nfs ~]# time seq 1000000 | wc -l
1000000real	0m0.101s   #Wall Clock Time 也就是运行程序整个过程中流失的时间
user	0m0.031s   #CPU在运行你的程序,在用户态运行指令的时间,
sys	    0m0.016s   #CPU在运行你的程序,在操作系统内核里运行指令的时间

在我给的这个例子里,你可以看到,实际上程序用了0.101s,但是CPU Time只有0.031+0.016=0.047s。运行程序的时间里,只有不到一半是是花在这个程序上的

在这里插入图片描述

拿到CPU时间,也不一定可以直接“比较”出两个程序的性能差役

即使在同一台计算机上,CPU可能满载运行也可以降频运行,降频运行的时候自然花的时间会多一些。

即使在同一台计算机上,CPU 可能满载运行也可能降频运行,降频运行的时候自然花的时间会多一些。此外,时间这个性能指标还会受到主板、内存这些其他相关硬件的影响。

更合理的衡量

所以我们需要对"时间"这个我们可以感知的指标进行拆解

程序的 C P U 执行时间 = C P U 时钟周期数 ∗ 时间周期时间 程序的CPU执行时间=CPU时钟周期数*时间周期时间 程序的CPU执行时间=CPU时钟周期数时间周期时间

时钟周期时间

Intel Core-i7-7700HQ 2.8GHz,这里2.8GHz就是电脑的主频,可以先粗浅地认为cpu1秒时间内,可以执行的简单指令的数量是2.8G条

准确一点描述2.8GHz就代表CPU的一个“钟表”能识别出来的最小的时间间隔,就像我们挂在墙上的挂钟的最小能够识别单位就是秒

在这个的CPU上,这个时钟周期时间,就是1/2.8G。我们的 CPU,是按照这个“时钟”提示的时间来进行自己的操作。主频越高,意味着这个表走得越快

超频

就相当于把买回来的CPU内部的钟给调快了,于是CPU的计算跟着这个时钟的节奏,也就自然快了,

当然这个快不是没有代价的,CPU跑得越快,散热的压力也就越大,就和人一样,超过生理极限,CPU就会崩溃了

根据公式 程序的 C P U 执行时间 = C P U 时钟周期数 ∗ 时间周期时间 程序的CPU执行时间=CPU时钟周期数*时间周期时间 程序的CPU执行时间=CPU时钟周期数时间周期时间,可以推导,时间周期时间变小了,CPU执行时间也会变小;那怎么缩短时间周期时间呢?那就是提升主频。换句话说,就是换一块好一点的CPU

CPU时间周期数

从上述公式可知,提升主频即可缩短时钟周期时间,从而提升性能。但硬件的发展是有瓶颈的,这就要从另一个因子,即 CPU 时钟周期数入手。如果能减少程序所需的 CPU 时钟周期数,也能提升性能。

进一步拆解 CPU 时钟周期数: 指令数 × 每条指令的平均时钟周期数( C y c l e s P e r I n s t r u c t i o n , C P I ) 指令数 × 每条指令的平均时钟周期数(Cycles Per Instruction,CPI) 指令数×每条指令的平均时钟周期数(CyclesPerInstructionCPI

不同的指令需要的 Cycles 是不同的,加法和乘法都对应着一条 CPU 指令,但是乘法需要的 Cycles 就比加法要多,自然也就慢。

在这样拆分了之后,我们的程序的 CPU 执行时间就可以变成这样三个部分的乘积: 程序的 C P U 执行时间 = 指令数 × C P I × C l o c k C y c l e T i m e 程序的 CPU 执行时间 = 指令数 × CPI × Clock Cycle Time 程序的CPU执行时间=指令数×CPI×ClockCycleTime

综上所述,解决性能问题,其实就是优化这三者。

  • 时钟周期时间,取决于计算机的硬件主频
  • CPI:每条指令的平均时钟周期数 CPI,就是一条指令到底需要多少 CPU Cycle。现代的 CPU 通过流水线技术(Pipeline),让一条指令需要的 CPU Cycle 尽可能地少。
  • 指令数:执行我们的程序到底需要多少条指令、具体用哪些指令,这主要由编译器决定。同样的代码,编译成计算机指令时候,就有各种不同的表示方式。

小结

计算机的性能可以从两个方向看:

  • 吞吐率:
    • 提升吞吐率的办法有很多,通常只要堆硬件、加机器就能实现
  • 响应时间
    • 我们需要像办法把单个CPU的响应时间加快,就能靠堆机器的方法来加快吞吐率了
    • 所以我们把性能,定义成响应的倒数,也就是: 性能 = 1 / 响应时间 性能=1/响应时间 性能=1/响应时间

那么响应时间由哪些东西决定呢?

  • 程序的 C P U 执行时间 = 指令数 ∗ C P I ∗ C l o c k C y c l e T i m e 程序的CPU执行时间=指令数*CPI*Clock Cycle Time 程序的CPU执行时间=指令数CPIClockCycleTime

可以看出,如果要提升计算机的性能,我们可以从指令数、CPI、CPU主频这三个地方入手。

CPU主频是什么?

  • 说起CPU相关的性能数字,就必须先说CPU的时钟频率,也就是主频。主频反映了CPU工作节拍,也就直接决定了CPU周期大小
  • 比如基于英特尔 Skylake 微处理器架构的 i7 的一款,其主频为 4GHz,那么每一个时钟周期(Cycle)大约0.25 纳秒(ns)
  • CPU执行程序时,最基本的执行单位是指令。而每一条指令的执行都需要经过四步:指令获取、指令解码、指令执行、数据存入。这些操作都是按照CPU周期来进行的,一般需要好几个周期。

CPI和IPC

  • 每个指令周期数 CPI 和每个周期指令数 IPC 其实是孪生兄弟,衡量的是同一个东西。
  • CPI(cycles per instruction)衡量平均每条指令的平均时钟周期个数。它的反面是IPC(instructions per cycle)。虽然一个指令的执行过程需要多个周期,但 IPC 是可以大于 1 的,因为现代 CPU 都采用流水线结构。一般来讲,测量应用程序运行时的 IPC,如果低于 1,这个运行的系统性能就不是太好,需要做些优化来提高 IPC

MIPS

MIPS 就是每秒执行的百万指令数。

我们经常会需要比较不同 CPU 硬件的性能,MIPS 就是一个很好的指标,一般来讲,MIPS越高,CPU 性能越高。MIPS 可以通过主频和 IPC 相乘得到,也就是说 MIPS= 主频×IPC。这个很容易理解,比如一个 CPU 频率再高,IPC 是 0 的话,性能就是 0。假设一个CPU 的主频是 4GHz,IPC 是 1,那么这个 CPU 的 MIPS 就是 4000。注意的是,MIPS是理论值,实际运行环境数量一般小于这个值

在这里插入图片描述


http://chatgpt.dhexx.cn/article/eFweEhla.shtml

相关文章

计算机组成原理 --- 计算机性能指标

一.存储器的性能指标 1.MAR是地址寄存器,MDR是数据寄存器 2.MAR的位数能够体现最多存多少个地址,而每个地址就代表一个存储单元,所以MAR的位数能表示存储器中有多少个存储单元 3.MDR是数据寄存器,它的容纳极限 每个存储单元的…

通用计算机器

还是下面这句话: 将固定的资源在所有使用者中分配,而不是为每一个使用者分配固定额度的资源。 还是那个简单的倒换,通用计算机就设计出来了。 人们就意识到内存和CPU之间的总线成了瓶颈,于是人们拼命缩短这条总线的长度&#xff…

量子计算机是什么?量子计算机和传统计算机之间有什么区别?

1.突破1000量子比特大关! 2022年11月9日的IBM年度量子峰会上,IBM宣布了Osprey在量子硬件和软件方面取得的突破性进展,同时推出了“鱼鹰”(Osprey)芯片。“鱼鹰”是全球迄今为止量子比特最多的量子计算机,而…

计算机中的单位换算

1 基本单位 信息存储量是度量存储器存放程序和数据的数量。 位(Bit):计算机当中最小的信息单位 存放一个二进制位数,即 0 或 1字节(Byte):计算机中的基本信息单位 常用的单位字(Wo…

计算机原理(一)

计算机基本原理 现代计算机,大部分都是基于冯诺依曼体系结构,而我们这里谈论的也是此问前提。冯诺依曼的核心是:存储程序,顺序执行。所以不管计算机如何发展,基本原理是相同的。计算机程序实际上是告诉计算机做…

计算机组成原理——算术逻辑单元(ALU)

逻辑门器件(与或非) 与门 两个数相与,当两个都为1,结果才为1,一旦有一个0结果就是0 或门 两个数相与,当有一个数等于1,结果就为1,当两个数都为0时结果才为0 非门 一个数取反 …

计算机模型

计算机模型 1、图灵模型 图灵机:一种可以计算任何数据的特殊机器;一台优秀的计算机必须具备和图灵机一样的运算 首先将计算机定义成一个 数据处理器,数据处理器对输入的数据进行处理,后再将处理后的数据输出。 此模型弊端&…

计算机的计算单位

容量单位 在物理层面,高低电平记录信息理论上只认识0/1两种状态0/1能够表示的内容太少了,需要更大的容量表示方法0/1称为bit(比特位)字节:1Byte 8bits 硬盘商一般使用10进位标记容量,500G一般格式化后只…

计算机的核心:ALU(算术和逻辑单元)

本节我们将揭秘计算机的核心部件:算术和逻辑单元。了解计算机里基础的加法,左移,右移,非,与,或,异或,比较操作是如何被选择和处理的。 算术和逻辑单元 目前,我们已经见到…

计算机组成.计算机在计算啥.运算与ALU

一身冷汗原本打算在iPad上写下一篇“处理器”。上一次用iPad写的这篇在打开浏览器后还保存着,我就直接删掉重写了。结果把原本的我的这篇给覆盖了……幸亏我有备份……不过格式还是得再MarkDown上重新调整……心好累 突然发现在iPad的网页上也可以写博客哎&#xff…

云平台常见风险

0x00 前言 云技术(Cloud technology)基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务…

OneNET云平台设备数据管理工具

联系电话:15712339322 1 产品介绍 终端设备上报数据到OneNET云平台,除了云平台可以提供的可视化web页面外,还可以通过定制数据管理工具的方式对云数据进行展示。在该版本中提供对最细粒度的数据样本展示。基于最细粒度的基础上,…

混合云平台打破数据壁垒

导读数字经济时代,作为塑造企业未来竞争力的关键,数据的价值正受到越来越多企业的关注。与传统生产要素相比,数据作为新型生产要素,具有更强的可复制性、更易共享、且可无限增长和供给,使突破有限自然资源供给对经济增…

云平台包含的基本特征介绍

1)按需自助服务。消费者无需同服务提供商交互就可以自动地得到自助的计算资源能力,如服务器的时间、网络存储等(资源的自助服务)。 2)无所不在的网络访问。借助于不同的客户端来通过标准的应用对网络访问的可用能力。…

新大陆云平台使用笔记

云平台API使用 1.登陆 1.1 登陆调用api 1.2返回JSON值2.查询单个项目 2.1 api 2.2查询单个项目返回JSON值 3.模糊查询项目 3.1 模糊查询项目api 3.2 模糊查询返回JSON 4.查询项目所有设备的传感器 4.1查询所有设备的传感器api 4.2查询项目所有设备的传感器返回JSON 5.批量查询…

初试阿里云平台

-----初试阿里云平台------ 目录 -----初试阿里云平台------ 一、什么是阿里云平台与阿里云Serverless技术 二、日常部署 三、个人心得 一、什么是阿里云平台与阿里云Serverless技术 云开发平台是面向开发者打造的一站式、全云端的开发平台,打开浏览器就可以开发…

使用ESP8266数据上onenet云平台

大家好,今天给大家带来的是使用esp8266将单片机的数据上传至onenet云平台。首先说说,为什么要上云呢?将数据上传至云平台可以更好的观察到数据的变化,也可以通过云平台命令下发从而更方便管理。当然我们也可以使用安卓、微信小程序…

搭建云平台(一) 云平台基础服务部署

最近因课程要求,自己动手搭了一个OpenStack云平台,我将整个过程分了六篇博客。我使用了两个CentOS的虚拟机,一个作为计算节点,一个作为控制节点,整体过程比较繁杂,有心人可以细心看一看 1、修改各主机名&a…

电力运维云平台

快控电力运维云平台通过对变电站/配电室/光伏电站/储能电站等各类电力能源现场加装智能数据采集通讯网关,将现场各类电气设备的运行数据和状态实时传输到云平台,实现对现场的24小时实时在线监控诊断,有效的保障了电力供应的安全可靠。同时平台…

什么是云平台,云平台主要能干什么?

各大厂商解释不一,云计算的书里写的更是云里雾里,但是如果你实际用过现在各大云平台提供商所提供的云计算平台以后,你就可以明白的得出结论,云平台就是高级版本的虚拟主机。 云平台可比虚拟主机高级多了,怎么会是虚拟…