@
目录这一节,我们来学习几个度量计算机性能的指标。
一、静态测试
(1)存储器的性能指标
<1>概念
最常见的就是存储器容量问题。
①MAR:地址寄存器
MAR的位数,可以反映存储体中存储单元的个数。
②MDR:数据寄存器
MDR的位数,可以反映每一个存储单元可以存放多少个二进制(bit)位。
所以,根据上面两个指标,我们就可以求得整个存储器可以存放多少个二进制位(bit)了。同样,bit/8
就是多少字节。
如下:
比如:
MAR是32位。32位的二进制数,最多可以表示2^32的二进制数,也就是这么多地址。每一个地址对应一个存储单元。所以,存储单元的总数量最多是2^32个(考试时只需要按照最多来计算即可)。
MDR是8位。也就是每一个存储单元可以存储8个bit位。
那么相乘,就可以得到存储器的总容量是4GB。
<2>补充
❓为什么32位的二进制数最多只能表示2^32个地址?
先来看这个问题,n个二进制位能表示多少种不同的状态?
如果只有一个二进制位,那么很显然,只有两种(2^1)状态:0,1。
如果有两个二进制位,那么会有四种(2^2)状态:00,01,10,11。
如果有三个二进制位,那么会有八种(2^3)状态:000,001,010,011;100,101,110,111。
... ...
那么,如果有n个二进制位,那么会有2^n
种状态。
所以,32位的二进制数最多只能表示2^32个地址,也就是对应这么多存储单元。
记住2^1
到2^10
,考试经常出现。
还需要记住,下面几个单位转换。
1KB,这个K,就是2^10
。
1KB即1024B(字节)。
1b(比特)是一个二进制位。
1B(字节)=8b(比特)
(2)CPU的性能指标
<1>概念
接下来认识几个概念:
每一个波峰是一个数字脉冲信号,CPU的数字脉冲信号是有规律、有节奏地发生。
CPU主频:CPU内数字脉冲信号振荡的频率。
脉冲信号:指挥CPU内部所有的部件,一步一步工作的节奏。
CPU的时钟周期:每一个脉冲信号的时间。通常以微秒、纳秒为单位。
CPU主频和CPU时钟周期互为倒数。
主频为10HZ,意思就是每一秒有10个脉冲信号。
结合之前的例子,CPU在执行一条指令的时候,需要做很多工作。这些工作的执行是有一定先后顺序的。每一个动作完成之后,才会开始下一个动作。
CPU的脉冲信号其实就是给这些动作的执行带来节奏。当然,有的动作可能在一个脉冲的时间内完成不了。
对于两个相同型号的CPU,如果它们的指令系统还有用硬件系统生成指令的方式都一样。那么,主频越高的CPU,速度就会越快。
CPU主频很大程度上反映了CPU的性能,但并不是主频越高,CPU性能就越强。除了主频,还有其他因素会影响CPU的性能。
比如CPI,即每一条指令的执行需要多少时钟周期。
比如:
对于B这个CPU来说,1秒可以执行1G条指令。(G=10^9)
而对于A这个CPU来说,1秒可以执行0.2G(2/10)指令。
所以,主频高的CPU不一定比主频低的CPU快。
再来问一下:
既然CPI相同,B每秒可以执行1G条指令,A每秒可以执行2G条指令。
A更快吗?也不一定。
因为不同的CPU的指令系统可能不一样。
还是拿这个例子看一下。
取数指令
总共需要9个步骤完成。
而乘法指令
总共需要11个步骤。
所以,进行乘法指令和取数指令所需要的时钟周期肯定不一样。
对于同一个CPU,执行不同的指令,有可能会消耗不同的时钟周期;甚至是执行相同指令,两次消耗的时钟周期也不相同。
比如,CPU要从内存中取一个数,这个指令的执行,除了和CPU本身相关之外,还与主存、内存、当前的状态有关。如果主存当前的负荷比较大,那么CPU想要取走一个数,就需要花更多的时间,也就是需要更多的时钟周期。
而对于不同的CPU,即便执行的都是乘法指令。根据乘法指令的实际实现方式的不同,两个CPU所需要的时钟周期数量也不一样,即CPI不同。
CPI放在微观视角毫无意义,因为可以影响CPI指标的因素太多了。
一般讨论执行一条指令所需要的时钟周期,通常考虑平均情况。
只要我们知道执行一条指令,平均需要多少个时钟周期,再乘以CPU时钟周期长短,就可以算出平均执行一条指令所需要的时间。
<2>例题
根据上面的讲解,我们认识了如下的定义。
下面来看一个例子:
100条指令,平均每一条指令需要3个时钟周期。
一个时钟周期的长度是主频的倒数。
相乘之后算出,需要0.3s的时间来执行程序。
如下:
像这样,计算执行一个程序所花费的时间,也是经常考的。
有时候,会把执行整个程序的耗时称为CPU执行时间。
<3>IPS和FLOPS
下一个性能指标是IPS。
主频:每一秒会有多少数字脉冲,也就是会出现多少时钟周期。
主频再除以执行一条指令所需要消耗的时钟周期数。算出的结果就是每秒执行多少指令(IPS)。
再下一个指标是FLOPS。
FL
:一个浮点运算。
如果计算机进行科学数据的处理,经常需要进行浮点运算。
那么使用FLOPS这个指标来度量计算机的好坏,显然是更科学的。
对于IPS和FLOPS这两个指标,使用的时候,通常会在前面加上单位。
如下:
注意,这里的K、M、G、T和之前谈论存储器容量那里的单位有一点区别。
此处的K
是10^3
。
如果说一台计算机的性能达到2MIPS,就说明这台计算机平均每秒可以执行200万条指令。
2KMIPS,就是这台计算机平均每秒可以执行2000条指令。
3TFLOPS,就是这台计算机平均每秒可以执行三万亿次浮点运算。