我们强调计算机系统的性价比,强调计算机的性能设计,那么性能是如何衡量的呢?
1、计算机性能的评测
怎样评测一台计算机的性能,这与测试者所处的角度有关。计算机用户说机器很快,往往是因为程序运行时间少;而计算中心管理员说机器很快,则往往是因为在一段时间里它能够完成更多的任务。用户关心的是响应时间:从事件开始到结束之间的时间,也称为执行时间;而管理员关心的是如何提高流量(thoughput):在单位时间内所能完成的工作量。
为了比较不同设计的差别,我们通常要对两台机器的性能进行比较。假设两台计算机为X和Y,“X比Y快”的意思是:对于给定任务,X的响应时间比Y少。通常“X的性能是Y的n倍”是指:Y的响应时间/X的响应时间=n
由于响应时间与性能成反比,所以上式就变成:n=Y的响应时间/X的响应时间=X的性能/Y的性能
无论是流量还是响应时间,都是以时间来度量的。它们的相同点都认为能够以最短时间完成指定任务的计算机就是最快的:这两者之间的不同点就是响应时间通常针对单任务,而流量往往针对多任务。目前公认的相对可靠的性能评测方法,是使用真实程序的响应时间来衡量。实际上,如果不以响应时间为衡量标准或没有使用真实程序,则容易导致错误的性能评价结论,对计算机设计产生误导甚至引发错误。
响应时间有多种定义,其中最直观的定义是计算机完成某一任务所花费的全部时间,包括访问磁盘,访问存储器,输入/输出、操作系统开销等。仔细分析一下就会发现,在多任务操作系统中,CPU在一个程序等待I/O时可以处理另一个程序,从而提高系统的运行效率。在讨论性能时必须把这一点考虑进去。“CPU时间”的定义就体现了这一点,它表示CPU工作的时间,不包含I/O等待时间及运行其它程序的时间。很明显,用户看到的响应时间是程序完成任务所花费的全部是间,而不是CPU时间。CPU时间还可以细分为用户CPU时间和系统CPU时间,前者表示用户程序所花费的CPU时间,后者表示用户程序运行期间操作系统花费的CPU时间。
上面我们明确了基于响应时间的性能度量方法和基于CPU时间的性能度量方法。这里我们认为“系统性能”对应于响应时间,而“CPU性能”对应于用户CPU时间。
2、性能设计和评测的基本原则
我们已经知道如何定义、度量和比较计算机系统的性能,下面将讨论计算机体系结构设计和分析中最经常使用的3条基本原则和方法。
1)大概率事件优先原则
大概率事件优先原则是计算机体系结构设计中最重要和最常用的原则。这个原则的基本思想是:对于大概率事件(最常见的事件),赋予它优先的处理权和资源使用权,以获得全局的最有结果。在进行计算机设计时,如果需要权衡,就必须侧重常见时间,使最常发生事件(大概率事件)优先得到响应。此原则也适用于资源分配。着重改进大概率事件性能,能够明显提高计算机性能。另外,大概率事件通常比小概率事件简单,而且容易使之更快完成。例如,CPU在进行家法运算时,运算结果无溢出为大概率事件,而溢出为小概率事件。因为我们就应该针对无溢出情况进行CPU优化设计,加快无溢出时加法计算速度。虽然发生溢出时机器速度可能会减慢,但由于溢出事件发生概率小,所以总体上机器性能还是提高了。
重要的是要能够确定什么是大概率事件,同时要说明针对该事件进行的改进将如何提高机器的性能。
2)Amdahl定律
Amdahl定律既可以用来确定系统中对性能限制最大的不见,也可以用来计算通过改进某些部件所获得的系统性能的提高。Amdahl定律指出:加快某部件执行速度所获得的系统性能加速比,受限于该部件在系统中所占的重要性。
受限Amdahl定律定义了加速比这个概念。假设我们对机器进行某种改经,那么机器系统的加速比就是:
系统加速比=改进后系统性能/改进前系统性能
或者 系统加速比=改进前总执行时间/改进后总执行时间
系统加速比告诉我们改进后的机器比改进前快多少。Amdahl定律使我们能够快速得出改进所获得的效益。
系统加速比依赖于两个因素:
(1)可改进部分在原系统计算时间中所占的比例
例如:一个需运行60秒的程序中有20秒的运算可以加速,那么该比例就是20/60。这个值用“可改进比例”表示,它总是小于等于1的。
(2)可改进部分改进以后的性能提高
例如:系统改进后执行程序,其中可改进部分花费2秒时间,而改进前该部分需花费5秒,则性能提高为5/2。用“部件加速比”表示性能提高比,一般情况下它是大于1的。
部件改进后,系统的总执行时间等于不可改进部分的执行时间加上可改进部分改进后的执行时间,即:
改进后的总执行时间=(1-可改进比例)*改进前总执行时间+(可改进比例*改进前总执行时间)/部件加速比
=改进前总执行时间*[(1-可改进比例)+可改进比例/部件加速比]
系统加速比为改进前与改进后总执行时间之比,即:
系统加速比=改进前总执行时间/改进后总执行时间=1/[(1-可改进比例)+可改进比例/部件加速比]
Amdahl定律的三个推论:
A、Amdahl定律还表达了一种性能增加的递减规则:如果仅仅对计算机中的某一部分做性能改进,则改进越多,系统获得的效果越小;
B、如果只针对整个任务的一部分进行优化,那么所获得的加速比不大于1/(1-可改进比例);
C、Amdahl定律告诉我们如何衡量一个“好”的计算机系统:具有高性价比的计算机是一个带宽平衡的系统,而不是看它使用的某些部件的性能。
3、程序的局部性原理
程序的局部性原理是指程序总是趋向于使用最近使用过的数据和指令,也就是说程序执行时所访问的存储器地址分布不是随机的,而是相对地簇集;这种簇集包括指令和数据两部分。程序局部性包括程序的时间局部性和程序的空间局部性。程序的时间局部性是指程序即将用到的信息可能就是目前正在使用的信息。程序的空间局部性是指程序即将用到的信息可能与目前正在使用的信息在空间上相邻或者临近。
程序的局部性原理是计算机体系结构设计的基础之一。