计算机包括软件和硬件,它们各自都有自己评价的指标。这里主要讨论硬件指标。衡量计算机硬件性能的指标常有机器字长、存储器容量、运算速度、浮点运算能力等。
机器字长
我们经常听到32位CPU或者64位CPU。这里的32位或者64位指的就是机器字长,也成机器字长。机器字长是指计算机进行一次整数运算所能处理的二进制的位数,反映了计算机能进行多少位二进制数的并行运算。在计算机中执行运算的是CPU中的运算器,所以机器字长是多少位也就是指该计算机中的运算器有多少位。即运算器中的ALU及一些核心的寄存器是多少位的(比如前面的累加器、通用寄存器等)。ALU是用来进行两个数的算术逻辑运算的,这些核心的寄存器通常是保存ALU中参与搬运与运算的数据的,所以他们的长度就反映了运算器的长度,也就是机器字长。衡量机器字长的单位可用“位(bit)”来表示,位是计算机内最小的信息单位,8位构成一个“字节(byte)”。现代计算机的机器字长一般都是字节的整数倍,如8位、16位、32位、64位和128位等,即字长由2个字节、4个字节、8个字节或16个字节组成,所以也可用“字节”来表示机器字长。通常,机器字长越长,计算机的运算能力越强,其运算精度也就越高,数据传输能力也就越快。
通常计算机的数据总线的宽度、存储器存储单元的字长、寄存器的位数、机器字长存在一定的关系。一般核心寄存器的位数就是机器字长,但数据总线的宽度、存储单元字长并不是非要等于机器字长,它们有可能是倍数的关系。比如计算机的机器字长为32位,但数据总线是16位的,那么这时要通过该总线给CPU中寄存器赋值,就需要2次总线传输过程来完成。如果总线是32位,则只需一次总线传输就可以完成。如果计算机中的存储字长是32位,那么从存储器中取出一个数据保存到运算器中,需要访问一次存储器,如果存储字长是16位的,则需要访问2次存储器。
运算速度
运算速度是衡量CPU工作快慢的指标,表示每秒可以完成多少次运算。计算机的运算速度与许多因素有关,如CPU的主频、CPI(Cycle Per Instruction,指令时钟周期)或者MIPS(Million Instruction Per Second,百万条指令每秒)以及FLOPS(Floating Operation Per Second,浮点运算次数每秒)等。
1.主频
主频是CPU工作的时钟频率,是时钟周期的倒数,它为计算机工作提供一个基准的时间。例如,Intel的CPU i3 4160的主频为3.6GHz。同等条件下,CPU的主频越高,处理速度也越快,性能越高。
2.CPI
CPI是指每条指令从取指到每条指令执行完毕需要多少个时钟周期。在其它条件不变的前提下,每条指令的CPI越少,则计算机处理的速度也就越快。由于一些计算机不同指令的CPI不同,所以可以用平均CPI来衡量计算机的性能。
3.MIPS
计算机是靠执行指令完成工作的,在其它条件相同的情况下,如果一台计算机每秒完成的指令越多,显然速度也就越快。由于计算机每条指令的CPI可能不同,所以MIPS指的是每秒钟平均执行多少百万条指令。
从上面的定义可以看出,主频、CPI、MIPS三个指标并非是孤立的,它们之间存在一定的制约关系。在计算机不采用指令流水的情况下,它们之间的关系为MIPS=主频/(平均CPI*10^6)。
所谓指令流水指的是计算机的指令并非是执行完一条指令后再取第二条指令,而是在第一条指令还没有执行完的时候就开始取出第二条、第三条甚至更多条指令,存在着指令并行的状况。通常将一条指令从取出指令到执行完毕称为一个指令周期。可以将指令周期分为几个阶段,每个阶段使用的部件有可能并不冲突。比如,可以将指令周期分为取指、分析指令、执行指令阶段。在第一条指令分析指令的时候就开始取第二条指令,在第一条指令执行阶段、第二条指令分析指令阶段就开始取第三条指令。这样的过程就称为指令流水,上面称为三级流水。如果将指令分为更多的阶段,可以实现更多级的流水。在理想情况下,三级流水可以将计算机的性能提升三倍,n级流水可以将计算机性能提升到原来的n倍。但在实际的情况下,指令的各个阶段存在相互影响的因素,因此指令流水性能的提升达不到理想的状况,但也能大幅提高计算机的性能。很明显,在采用指令流水的情况下,在每条指令的CPI不变的情况下,也可以大幅度提高计算机的MIPS值。因此衡量一个计算机的性能要进行综合评价,不能单靠一个指标来判断计算机性能。如前所述,计算机是靠执行指令来完成工作的,每秒钟能够执行更多的指令似乎更能反映计算机的性能。但是也不尽然,因为不同的计算机指令的功能也不尽相同。有的计算机,一条指令可能完成更多的工作,而有的则可能会完成较少的工作。
例. 两台计算机A和B,它们相对应的指令的功能相同。A计算机的主频是200MHz,平均指令周期为8个时钟周期;B计算机的主频是100MHz,平均指令周期为2个时钟周期,试问哪台计算机的速度更快。
解析:A计算机的主频是200MHz,平均指令周期为8个时钟周期,则它平均每秒能完成指令的条数为200/8=25MIPS。B计算机的主频是100MHz,平均指令周期为2个时钟周期,则它平均每秒能完成指令的条数为100/2=50MIPS
而由于二者相对应的指令的功能相同,所以B计算机的速度更快。
4.FLOPS
计算机既需要处理定点运算(整数或纯小数),也需要处理浮点运算。有的计算机定点处理运算能力也许并不高,但因为其内部具有浮点运算部件,它处理浮点运算的能力却比较高。因此又引入FLOPS对计算机的浮点运算能力进行衡量。FLOPS是指每秒能执行多少次浮点运算操作。现在许多台式机的CPU都具有浮点运算协助处理器或浮点处理单元(Floating Processing Unit,FPU),用硬件来实现浮点运算,因此都具有比较强的浮点运算能力。而多数的低端单片机则不具有这个功能,所以需要将浮点运算转换为定点运算进行处理,因而浮点运算能力较低。
存储器容量和读写速度
计算机工作的时候要不断地和存储器交换数据,因此存储器的容量和读写速度对计算机整体性能影响非常大。存储器的读写速度对计算机的性能的影响比较好理解,那么存储器的容量对计算机的性能会产生怎样的影响呢?当存储器容量比较大时,计算机运行所需要的程序和数据可以尽可能多的放在存储器中,但存储器容量比较小的时候,计算机所需要的数据和程序有的可能不在存储器中,而在外部存储设备如硬盘中,这时就需要将需要的程序和数据调入存储器,不得已的时候还需要将原来存储器中原有的内容保存到外部存储设备中。存储器的读写速度要远大于外部存储设备,所以足够大的存储器容量是计算机性能的保证。因此,现在无论是台式机、笔记本电脑或者手机,大家都希望其存储器越大越好。
1.存储容量
存储器的容量是指存储器中能够保存的二进制代码的总位数。这样可以来计算存储器的容量:
存储器容量=存储单元数量*存储字长
即这个存储器包含多少个存储单元,每个存储单元可以保存多少个二进制位。存储器地址寄存器MAR的位数和存储器存储单元的最大数量存在一定的关系。比如MAR的位数是16位,则最大存储单元个数是为2^16=65536个。而实际应用时,存储单元的个数可能小于最大存储单元个数。比如32位计算机系统的地址寄存器为32位,它的寻址空间为2^32=4G。但可能计算机中只装了1G的内存条,存储容量只有1GB。这里B指的是Byte(字节)。一个字节是8个二进制位(bit),1GB=8Gb,即1GB的容量可以存储1G个字节,8G个二进制位。
对于早期简单的计算机来讲,存储器数据寄存器的位数等于存储单元的位数,也就是存储字长,也等于数据总线的宽度,这样从一个存储单元中取出的数据总线传输保存在MDR中。但现在的计算机存储字长、MDR的位数以及数据总线的宽度变化比较多样,但它们之间一般保持整数倍关系。
存储器可以由多个存储器芯片构成。每个存储器芯片都有自己的容量,也具有之间的地址线引脚和数据线引脚。对于存储器芯片来讲,其内部存储单元的个数和其地址引脚的个数(地址的位数)存在严格的关系:存储单元的个数=2^地址的位数。但要注意的是,对于有的存储器芯片,其地址要分两次通过地址线引脚输入,这时地址的位数就是这两次输入的地址位数的和。存储器芯片的存储单元的字长和数据线引脚的位数也存在严格的关系:存储单元字长=数据线引脚个数。
一般可以这样表示一个存储器芯片的容量:1KB*8、2MB*4等。1KB*8意味着有1KB个存储单元,每个存储单元的位数是8位,即字长等于8,该芯片有10个地址位(2^10=1KB),数据线引脚的个数应该是8个。2MB*4意味着该芯片有2MB个存储单元,每个存储单元的位数是4位,即字长等于4,该芯片有21个地址位(2^20=1MB,2^21=2MB),数据线引脚的个数应该是4个。
2.读写速度
存储器的读写速度可以用存取时间或者存取周期来表示。存取时间又称存储器的访问时间,是指访问一次存储器所需的时间。存取时间分为读出时间和写入时间,读出时间是从存储器接到有效地址开始到把数据有效输出到数据总线整个过程所需的时间,写入时间是从存储器接受到有效地址开始到数据写入指定的存储单元为止所需的时间。
另一个可以表示存储器速度的指标是存取周期,它是指连续访问存储器时,两次连续访问存储器时所需的最小时间间隔。如果连续地、大批量的从存储器读出或者向存储器写入数据,可以用存储器的带宽来表示存储器的速度。存储器的带宽表示单位时间内(通常是1秒)存储器存取的字节数或者位数。如果存储器的存取周期是100ns,每个存取周期可以传输32位二进制数据,则该存储器的带宽为(10^9/100)*4=40MBps。要想提高存储器的带宽可以有三种方法,一是缩短存取周期,二是增加一次存取的位数即存取的字长,三是采用多体并行的方法。必需要说明的是,存储器的带宽与存储器的总线的带宽要匹配。因为存储器存取的数据是通过总线来传输的,存储器的带宽与总线的带宽必须匹配。
3.现代存储器
现代存储器(内存条)通常用这种方式来表示它的指标或者性能;4GB DDR3 1600.这表示该存储器的容量是4GB。DDR3表示三次同步动态随机存储器,1600表示它的等效频率为1600MHz。下面是对现代存储器发展的简介。
SDRAM(Synchronous Dynamic Random Access Memory),称为同步动态随机存储器。正如它的名字所言,SDRAM和CPU同步运行,这使得内存控制器能够掌握准备所要求的数据所需的准确时钟周期,因此CPU从此不需要延后下一次的数据存取。SDRAM亦可称为SDR SDRAM在1个周期内只能读写1次,即在时钟上升沿存取数据。PC100和PC133就是这个时期产品常见的规格。
DDR SDRAM(Double Data Rate SDRAM)称为双通道同步动态随机存储器,它是相对SDR SDRAM而言的。SDR SDRAM单一周期内只能读写一次,只能在时钟的上升沿存取数据,而DDR的双倍数据传输率指的就是单一周期内可读取或写入2次,它的时钟的上升沿和下降沿都可以存取数据,因此它的存取速度是SDR SDRAM的2倍。DDR 266、DDR 400都是这个时期的产品。
DDR2 SDRAM(Double Data Rate Two SDRAM),称为双通道两次同步动态随机存储器。DDR2采用数据预取技术,将存储器的带宽在DDR的基础上又提高了一倍。这个时期常见的有DDR2 533、DDR2 800等内存规格。
DDR3 SDRAM(Double Data Rate Three SDRAM)称为双通道三次同步动态随机存储器。DDR3的预取技术比DDR2又提升了一倍,DDR3的规格要求将电压控制在1.5V,较DDR2的1.8V更为省电。DDR3 1333 和DDR3 1600是这个时期典型的产品,也是目前主流的产品。
DDR4 SDRAM(Double Data Rate Fourth SDRAM)。DDR4提供比DDR3/DDR2更低的供电电压以及更高的带宽,目前有的手机开始尝试这种存储器,只不过手机上用的是低功耗的,称为LPDDR4(Low Power DDR4),在台式机中DDR4用的更少,但它是未来存储器发展的方向。
缓存容量
随着技术的进步,CPU的性能和存储器的性能都在提升,但存储器性能提升的速度远远赶不上CPU性能提升的速度。虽然存储器经历了DDR、DDR2、DDR3甚至DDR4这样的发展,但是其与CPU的发展速度上的差距还在拉大,为了解决CPU和存储器速度不匹配的问题,在CPU和存储器之间引入了缓存。缓存的读写速度比存储器(主存)快很多,可以把CPU最近经常访问的数据从主存暂时放到缓存里面,这样可以减少访存的时间,提升计算机整体的性能。缓存的容量越大,当然对计算机性能提升的帮组越大,但其成本也会升高。为了进一步提升性能,缓存的级数也在增加。由原来一级缓存扩展到二级、三级缓存。原来缓存是在CPU外的,现在随着芯片集成度的提高,逐渐把缓存集成在CPU内部。到现在为止,CPU上可以集成三级缓存。比如Intel的CPU i7 4790K的三级缓存为8MB,AMD的CPU AMD A8-7650K的三级缓存为4MB。
输入/输出传输速率
计算机还需要和外设如硬盘、打印机等交换数据,因此计算机和外设通信时的输入输出数据传输速率也是计算机性能的一部分。我们以硬盘为例,目前主流的硬盘如西部数据的一款硬盘性能为1TB SATA3 64M。说明这个硬盘的容量为1TB(1000GB),总线接口为SATA3型接口,缓存为64MB,转速为7200转/分钟,它的传输速率可以达到150MB/s左右。固态硬盘的传输速率可以达到500MB/s左右,是未来大容量存储设备的发展方向。