【计算机组成原理】1.3 计算机的性能指标​

1.3 计算机的性能指标

00:00

好的,这个小节我们要学习几个度量计算机性能的指标。首先来看度量存储器的指标,最常用的一个也是大家最熟悉的一个,其实就是存储器容量。在之前的小节中我们说过MAR也就是地址寄存器的位数,可以反映出这个存储体里边总共有多少个存储单元,另外MDR数据寄存器的位数可以反映出每一个存储单元可以存放多少个二进制比特位。所以我们只需要利用这样的两个信息就可以算出整个存储器它总共可以存放多少个二进制比特位。如果把比特再除以8的话,就可以转换成字节。这个我们之前也说过。所以如果说一个主存储器,它的MAR地址寄存器有32位的话,那么32位的二进制数最多只可以表示2的32次方这么多个二进指数,也就是这么多个地址,每一个地址对应的是一个存储单元,所以存储单元的总数量最多也就是二的32次方这么多个。

01:11

而MDR的位数是8位,也就是说每个存储单元可以存储8个比特的信息,把它一相乘就可以得到整个它的总容量应该是4GB这么多。这儿需要聊这样的两个点。第一,MAR的位数,它反映的是存储单元最多可以有多少个。像我们例题里给的这种情况,这个主存储器它最多可以支持4GB的存储容量,但事实上它真的有4GB这么多吗?也不一定。有可能它的MAR有32位,但是实际上它也许只有1GB这样的大小,这是实际的情况。当然了,如果做题的时候大家看到MAR的位数,你就可以直接认为它的这个位数就直接反映了实际的容量,也就是按最大值来算就可以了。这是第一个要跟大家说清楚的点。

02:06

第二个点,很多跨考的同学,他并不知道为什么32位的二进制数最多只能表示2的32次方,这么多个地址。这个问题其实我们会在第二章里边进行详细的探讨,但是这个地方为了让大家不要有太多的疑惑,不要留太多的坑。

02:26

所以这个地方我们先简单的探究一下,对于N个二进制位可以表现出多少种不同的状态呢?如果只有一个二进制位的话,那显然只有两个状态,0或者1。如果有两个二进制位,那么就是0001、1011总共有4种,也就是二的2次方这么多个状态,那三个二进制位,四个二进制位也是有相同的规律,可以这么理解,如果有N个二进制位,那么每一个二进制位有可能取得的值,有可能出现的状态只有0或者1这样的两种,所以第一个二进制位有可能出现的情况就应该是C21,第二个二进制位也一样,有可能出现的情况是C21,从零或者一当中选择一个,所以把N个C21相乘,那不就是2的N次方。所以N个二进制位可以表示的数字最多也就是2的N次方这么多种状态。因此刚才我们才说32位的MAR最多只能表示2的32次方这么多个地址,也就是对应这么多个存储单元。

那同学们应该熟练的记住,至少是2的1次方一直到2的10次方分别等于多少,考题里面经常会出现这个范围内的计算,比如2的5次方就是32,那2的8次方就是256。对了,好多年前有一个游戏,不知道大家有没有玩过,那个游戏的名字就叫2048,也就是二的11次方,那大家周末休息的时候,可以下载这个古老的游戏来玩一玩,通过这个游戏你可以熟练的掌握二的1次方一直到2的11次方分别等于什么样的值。当然了如果时间紧的话,还是抓紧复习啊不要陷到游戏里面。

04:19

另外跨考的同学还需要知道这样几个很常见的数量单位,一个是K就是我们说比如说1KB的大小,那这个K指的是2的10次方,也就是1024。所以所谓的1KB指的是1024这么多个字节。注意我们这写的是大B之前我们强调过大B和小b的区别,小b是比特,也就是一个二进制位,大B是字节,也就是8个二进制位。好,除了K之外,平时我们也经常见到M也就是兆这样的一个数量单位,那1兆其实就是二的20次方,而1G指的是二的30次方,1T指的是二的40次方。

05:05

可能会有很多本专业的同学觉得这些东西过于基础。但事实上现在我们跨考的同学确实很多。屏幕背后也许会有一些本来是学文的。还有前几年我认识一个学手语专业的同学,他也想跨考计算机。所以对于这种看起来很基础的问题题,我们还是会尽可能的聊一聊。毕竟跨考同学的梦想,他也是梦想。好,这是关于存储器的一个性能指标,还有关于二进制数的一些基础知识。

05:35

接下来我们看衡量CPU好坏的一些性能指标。大家可以去京东淘宝搜一下,英特尔的一些CPU。那你会发现不管任何一款CPU,它的这个商品的标题除了标明它的型号之外,肯定会提到一个东西,就是什么2.9G赫兹、3.7G赫兹,这个信息其实指明的就是CPU的主频。所谓的主频就是指CPU里边数字脉冲信号震荡的频率,也就是这个样子。

06:10

这个图里边每一个这样的一个波峰其实就是一个数字脉冲信号,所以CPU的这些数字脉冲信号是有规律有节奏的发生的那这些脉冲信号有什么作用呢?大家可以把这个脉冲信号理解为指挥CPU内部所有的部件来一步一步工作的一个节奏。就有一点类似于大家做的广播体操,总有一个人在喊12345678,22345678,对吧。广播体操的动作是按照这个口号的频率来做的,每给你一个信号,12345678,每一个信号你都会跟着他来完成你自己的动作,所以广播体操的口号其实和这个CPU的数字脉冲信号是一样的作用。

06:58

如果结合之前我们给出的这个例子来看的话,CPU在执行一条指令的时候,它其实需要做很多很多动作,这些动作的执行是有先后顺序的,每一个动作执行完了之后才会开始下一个动作。CPU的脉冲信号其实就是给这些动作的执行带来了一个节奏,12345678,就跟大家做广播体操一样。当然了有的动作可能在一个脉冲的时间内完成不了。好,所以这是所谓的脉冲信号的一个作用。

07:32

我们把每一个脉冲信号的时间称为CPU的时钟周期,通常以微秒或者纳秒为单位。CPU主频和时钟周期之间的关系是,它的主频应该是等于时钟周期分之一,是互为倒数的一个关系。主频又可以称为时钟频率,它的单位是赫兹,主频等于十赫兹的意思就是说每秒钟有十个脉冲信号。好,这是CPU主频和时钟周期之间的一个关系。显然对于两个相同型号的CPU来说,他们的指令系统还有用硬件完成指令的方式如果都一模一样的话,那么主频越高的CPU显然它的速度会越快。所以CPU主频很大程度上反映了CPU的性能。但是也并不是主频越高就注定着它越强。

08:29

除了主频之外,还有其他因素会影响一个CPU的性能。比如CPI这个指标,CPI的意思是每一条指令的执行需要多少个时钟周期。还是用我们之前的这个例子,比如像这个取数指令,取数指令它总共需要九个步骤可以完成,而乘法指令总共需要11个步骤才可以完成,所以执行乘法指令和取数指令所需要的这个时钟周期肯定是不一样的,也就是说对于同一个CPU执行不同的指令,有可能需要消耗不同的时钟周期。而对于不同的CPU来说,即便他们执行的都是乘法指令,那么根据乘法指令的实际实现方式的不同,2个CPU所需要的时钟周期数量也可能不一样。好,所以同一个CPU里边执行不同的指令,CPI可能不一样,甚至有可能即便是同一个CPU 2次执行行一个相同的指令,那么这两次执行指令所需要的时钟周期数也有可能会发生变化。

09:45

比如CPU要从内存里边取走一个数,那这个指令的执行除了跟CPU本身相关之外,还跟主存内存当前的状态有关系。如果主存当前的负荷比较大,那么CPU想要取走一个数就有可能需要花更多的时间,也就是需要更多的时钟周期。所以执行一条指令需要多少个时钟周期这个问题如果我们放在微观的视角来看的话,那么其实它是毫无意义的,因为可以影响CPI这个指标的因素太多了,我们一般讨论执行一条指令所需的时钟周期的时候,通常考虑的是一个平均的情况,只要我们知道执行每一条指令平均需要多少个时钟周期,再乘以CPU时钟周期它的时间长短,那我们就可以算出平均每执行一条指令所需要的耗时。

10:41

好,我们来看一个例题,假设某个CPU它的主频是1000赫兹,而事实上没有这么慢的CPU,只不过我们为了方便计算,把这个数字说的小一点,然后某个程序包含了100条指令,平均看来指令的CPI等于3,也就是说平均每执行一条指令需要三个时钟周期。那么这一百条指令的程序在这个CPU上执行需要花多长时间呢?这个程序总共包含100条指令,每一条指令平均需要三个时钟周期可以执行完,而一个时钟周期的长度应该是主频分之一,需要这么多秒的时间,因此算出的结果就应该是需要0.3秒的时间来执行这个程序。像这个例题这样就是让你计算一整个程序运行所花费的时间。

11:37

这种题目也是很常见很常考的。有时候会把执行整个程序的耗时,把它称作CPU执行时间。所以大家遇到这个说法的时候也需要注意指令的条数,还有平均每执行一条指令所需要的时钟周期数。这两个数值乘起来就刚好等于总共需要多少个CPU时钟周期,然后再乘以主频分之一就可以得到最终的耗时。好,这个应该不难理解。

12:08

好,下一个常用的性能指标叫IPS instructions per second,也就是每秒会执行多少条指令。如果我们能够知道平均的CPI,也就是平均每执行一条指令需要多少个时钟周期,那么我们就可以算出IPS的值。IPS应该是等于主频除以平均的CPI。主频的值反映的是每秒钟会有多少个数字脉冲,也就是会出现多少个时钟周期,再除以执行一条指令所需要消耗的时钟周期,这样算来的结果就是每秒钟可以执行多少条指令IPS。

12:49

再下一个指标FLOPS,这儿的FL指的是floating point,就是一个浮点运算,然后这儿的O指的是operations,PS就是per second,每秒钟可以执行多少次浮点运算。

13:07

如果说我们的计算机是用来进行一些科学数据的处理,经常需要进行浮点运算的话,那么使用这个指标来度量这台计算机它的好坏显然是要更科学的,那对于IPS和FLOPS这两个指标,我们通常在使用的时候还会经常在他们前边加上一些常用的数量单位,比如说K也就是千,还有M就是百万。然后对于浮点运算来说,我们甚至还会加G和T这样的数量单位。解释一下这儿的KMGT和我们之前在谈论存储器容量的时候所给出的KMGT有一些区别。

13:50

此处的K指的是十的3次方,然后M指的是million ,10的6次方。所以如果跟大家说一台计算机它的性能可以达到2MIPS的话,那这就说明这台计算机平均每秒可以执行200万条指令。如果是2KIPS的话,就是说平均每秒可以执行2000条指令。另外G表示的是十的9次方,T表示的是十的20次方,所以如果告诉你一台超级计算机它的性能达到了3TFLOPS,那这个的意思就是说这台超级计算机每秒钟可以执行3万亿次的浮点运算。好,总之我们前边加的这一个字母,它其实就是表示数量的一个单位而已。

14:47

一般来说当我们在描述存储器的容量或者文件的大小,一个文件有多大,描述这些信息的时候,我们说的KMGT指的就是我们这儿给出的这种方式。一K表示的是二的10次方,EM表示的是二的20次方。这是我们在描述一个文件大小或者一个存储器的容量的时候,通常的一个默认规则。而如果我们描述的是这种数据的处理速率,那这种情况下我们通常默认所谓的K指的是十的3次方,M指的是十的6次方。好,以此类推。除此之外,当我们在描述频率这种属性的时候,比如说CPU的主频,我们说一个CPU主频是3G赫兹,那这个地方G表示的是十的9次方,也就是刚好是十亿,这一点大家需要稍微的注意一下。

15:43

好,接下来我们再来看几个度量系统整体性能的指标。第一个数据通路的带宽,这个指标指的是数据总线一次可以并行传送多少个二进制信息位。我们的CPU和内存,还有内存和IO设备,它们之间的信息传输都是通过数据总线来进行的。比如说有一台计算机,它的数据通路带宽为8个比特的话,那要从存储体里边读出16个比特的数据,把它读到CPU里边,就总共需要进行两次的数据传输,每次只能传送八个比特,那进行两次传输肯定要比进行一次要更慢,所以数据通路的带宽会直接的影响到各个硬件部件之间的数据传输的一个效率。

16:34

好,下一个指标叫吞吐量,就是指我们的系统在单位时间内可以处理的请求的数量。这儿的请求其实是一个比较抽象的概念,你可以把它理解为一条指令,就是一个请求,你也可以把它理解为一个完整的程序运行才是一个请求。

16:53

还是举个例子,比如说我们淘宝的服务器,淘宝的服务器它基本上处理的业务就是要处理用户发来的一个一个的HTTP请求。那么淘宝的服务器每秒钟可以处理多少个HTTP请求,这就是它的吞吐量。再比如你去食堂打饭,那负责打饭的大师傅每秒钟单位时间内可以完成多少个同学的打饭请求,这就是食堂大师傅的吞吐量。所以吞吐量这些指标它其实并不局限于某一个特定的场景。我们需要结合具体的场景来理解这个概念。好,这是吞吐量这个指标。

17:36

好,下一个指标叫响应时间,就是指用户向计算机发送一个请求,一直到系统给用户做出响应所需要的时间。比如说在我的电脑上,我点击右键它会弹出这个菜单。那么从我点击右键开始,一直到它弹出菜单给我这个响应为止的这段时间,就是所谓的响应时间。那和吞吐量类似,响应时间显然也是一个很宽泛的概念。你可以把这个指标应用在描述生活的方方面面。比如说你给你的朋友发送一条信息,一直到你接收到他的回复为止,这段时间就是你的朋友接收到你的这个请求之后所需要的一个响应时间。对于计算机来说,影响这个响应时间的因素也有很多。这个大家自己读一下,有一个简单的了解即可。

18:23

好,之前我们学习的所有的这些性能指标,看起来都是一个静态的衡量指标。这种静态的指标有时候很难反映出一个计算机它的综合能力,所以很多时候我们会用一个叫做基准程序的程序来测量这个计算机的实际处理速度。所谓的基准程序其实就是大家很熟悉的跑分软件。比如说我们很多男同学想要测试自己电脑显卡,自己电脑的综合性能那你可以用鲁大师这个软件来跑一下你的电脑综合得分到底是多少。而手机上面也有很多跑分数软件。其实这些跑分软件或者说这些基准程序,它本质上就是给你设计好了一段程序代码。那这段程序里边会包含各种各样的指令,并且各种指令出现的频次频率是不一样的,它会根据你的电脑运行它这一段程序运行它这一系列指令所需要的耗时,来给你一个综合的评分。

19:27

好,接下来我们来思考这样的几个问题。第一个问题,主频高的CPU是否一定比主频低的CPU快呢?显然不是。比如有个CPUA它的主频是2G赫兹,但是它平均每执行一条指令需要十个时钟周期。而另一个CPUB它的主频只有1G赫兹,然而它平均只需要一个时钟周期就可以执行一条指令。所以对于B这个CPU来说,它一秒钟可以执行1G条指令。而对于A这个CPU来说,它一秒钟只能执行2除以10,也就是0.2G这么多条指令。再次强调当我们在描述CPU主频的时候,这种频率类的信息所谓的G指的是十的9次方,而不是二的30次方。好,所以主频高的CPU未必比主频低的CPU快。

20:24

好,下一个问题,对于刚才我们给的这个例子,A和B这2个CPUA的主频更高,B的主频更低。但是如果它们俩的平均CPI相同的话,那是不是就一定意味着A会更快呢?看起来好像是这样,如果他们的CPI都是一,那么B这个CPU平均每秒可以执行1G条指令,而A这个CPU平均每秒可以执行2G这么多条指令,是不是A更快呢?其实也不一定,因为不同的CPU它的指令系统可能是不一样的。比如说如果A这个CPU它不支持乘法,只能用多次的加法来实现乘法的话,而B它如果本身就支持乘法指令的话,那么B的整体表现就很有可能要比A更好。

21:13

好,第三个问题,如果基准程序它执行的越快,那么就说明机器的性能越好吗。其实也不见得。因为我们的这些跑分软件,基准程序它里面设计的语句频度其实是会有差异的。比如说你使用的是测试显卡的一个基准程序的话,那这个程序里面显然对于图像处理相关的那些指令出现的频率会很高。但如果换一种应用场景,你的计算机不是用于图像处理的,而是用于其他工作。那么你使用测试显卡的这种基准程序测试出来的这个机器性能显然就是不科学的。

21:53

所以我们也不要盲目的相信市面上的那些跑分软件给出的一个分数,分数越高未必你的手机,你的电脑的表现就越好。下次如果遇到你的舍友在你面前嘚瑟他的电脑性能的时候,你就把这堆理论把它丢过去。

22:10

好的,这个小节中我们学习了衡量计算机性能的一些指标。首先是存储器的容量,这个我们在之前的小节当中也提到过。考试当中经常考察关于CPU的这一系列的性能指标,主频CPI还有CPU执行时间IPS这些指标的一个计算方法,大家一定要熟练的掌握。当然现在也不用刻意的去记忆,我们课后习题里边会遇到很多相关的问题。多做几个题自然就可以记住了。

22:40

另外这个小节中我们也强调了KMGT这几个常见的数量单位在不同的情况下,它们所表示的含义的一个区别。当我们在描述存储容量或者描述文件的大小的时候,通常我们是用2的多少次方这样的一个计数方式。而当我们在描述频率或者数据传送的速率的时候,我们通常是用10的多少次方这样的一个计数方法。所以这一点大家也需要注意一下。

23:10

最后还需要补充一点东西,最近几年随着超算技术的发展,以前的这几个速率单位已经不足以描述现在的超级计算机的一个运行速度。所以在2022年大纲改版的时候,又新增了几个更大的数量单位,分别是P、E、Z、那KMGTPEZ这几个数量单位,他们之间的关系都是以乘以10的3次方这样的倍数关系递增的。K是十的3次方,M是十的6次方,G是十的9次方,T是十的12次方,P是十的15次方,E是十的18次方方,而Z是十的21次方。所以这些数量单位不需要死记硬背,只需要记住他们之间的这种递增的关系就可以。

24:10

之前我们提到过中国有一台超级计算机叫神威太湖之光,每秒钟可以进行9.3亿亿次的浮点运算。一亿是十的8次方,因此9.3亿亿次应该是9.3乘以10的16次方。我们可以用FLOPS去描述每秒钟可以执行这么多次的浮点运算。如果使用刚才提到的这几个新的数量单位,P应该是十的15次方,所以神威太湖之光的浮点运算能力,我们可以把它描述为93PFLOPS。好,因此考研大纲新增这几个更大的数量单位,也是为了迎合时代的发展,用更大的数量单位可以更方便的去描述更强的计算机性能。好的,以上就是这个小节的全部内容。

*文章整理自B站公开课程《王道计算机考研 计算机组成原理》,文中时间节点与本节课程视频相对应。
GZH:玄默冲虚
欢迎关注!

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值