本文仅供学习,不作任何商业用途,严禁转载。绝大部分资料来自----计算机系统结构教程(第二版)张晨曦等
计算机体系结构----基本概念
- 计算机系统设计的定量原理
- 1. Amdahl定律(阿姆达尔定律)
- 2. CPU性能公式
- 3. 程序的局部性原理
计算机系统设计的定量原理
1. Amdahl定律(阿姆达尔定律)
Amdahl 定律告诉我们:当对一个系统中的某个部件进行改进后,所能获得的整个系统性能的提高,受限于该部件的执行时间占总执行时间的百分比。它可以用来具体地计算.当对计算机系统中的某个部分进行改进后,所能获得的加速比的大小。
加速比说明了改进后的计算机比改进前快了多少倍。假设对某台计算机进行了某种改
进,那么所获得的加速比为
这个加速比的大小与两个因素有关。一个是在改进前的系统中,可改进部分的执行时间在总的执行时间中所占的比例,简称可改进比例,记为 Fe。Fe 总是小于1的;另一个是可改进部件改进以后性能提高的倍数。它是改进前所需的执行时间与改进后执行时间的比,简称部件加速比,记为 Se。Se 总是大于 1。
例如,一个需运行 60s 的程序中有 20s 的运算可以加速,那么其 Fe 就是 20/60。若该系统改进后,可改进部分的执行时间减少为 5s,则其 Se 为 20/5。
部件改进后,程序中可改进部分的执行时间被缩短为原来的 1/Se,但不可改进的那部分的执行时间没有变化。所以改进后程序的总执行时间为
其中 T0为改进前整个程序的执行时间,1-Fe 为不可改进比例。
改进后,整个系统的加速比为
例 1.1 将计算机系统中某一功能的处理速度加快 15 倍,但该功能的处理时间仅占整个系统运行时间的 40%,则采用此改进方法后,能使整个系统的性能提高多少?
例 1.2 某计算机系统采用浮点运算部件后,使浮点运算速度提高到原来的 25 倍,而系统运行某一程序的整体性能提高到原来的 4 倍,试计算该程序中浮点操作所占的比例。
Amdahl 定律还表达了一种性能改进的递减规则:如果仅仅对计算任务中的一部分做性能改进,则改进得越多,所得到的总体性能的提升就越有限。
当 Se->∞时,S,=1/(1-Fe)。即如果只针对整个任务的一部分进行改进和优化,那么所获得的加速比不超过 1/(1-Fe)。
在用 Amdahl定律计算系统的加速比时,需要知道可改进比例是多少,但通常很难直接计算出这个比例。下面介绍的 CPU 公式从另一个角度来计算和比较性能。
2. CPU性能公式
执行一个程序所需的 CPU 时间可以这样来计算。
CPU 时间 = 执行程序所需的时钟周期数 X 时钟周期时间
其中时钟周期时间是时钟频率的倒数。
引入新的参数 CPI(Cycles Per Instruction),即每条指令的平均时钟周期数,有时简称为指令的平均时钟周期数。
CPI = 执行程序所需的时钟周期数 /所执行的指令条数
则有以下的 CPU 性能公式。
CPU 时间 =IC X CPI X 时钟周期时间
其中 IC 为所执行的指令条数。
根据这个公式可知,CPU 的性能取决于以下三个参数.
- 时钟周期时间:取决于硬件实现技术和计算机组成;
- CPI: 取决于计算机组成和指令系统的结构 ;
- IC:取决于指令系统的结构和编译技术。
改进任何一个参数,都能提高 CPU 的性能。不过,这些参数是相互关联的,很难做到能单独地改进某一个参数指标而不影响其他两个指标(变坏)。幸运的是,有可能设法使这种影响不会太大,或者至少是可以预测的。
CPU 设计中还经常用到下面计算 CPU 时钟周期总数的方法。
其中 I C i IC_i ICi为程序执行的过程中第种指令出现的次数, C P I i CPI_i CPIi为执行第i种指令所需的平均时钟周期数, n n n为指令的种数。
CPI可以表示为
其中( I C i / I C IC_i/IC ICi/IC)反映了第 i i i种指令在程序执行过程中所占的比例。
3. 程序的局部性原理
程序的局部性原理(Principle of Locality)是人们经常加以利用的程序属性。它是指:程序执行时所访问的存储器地址不是随机分布的,而是相对地簇聚。现在常用的一个经验规则是: 程序执行时间的 90%都是在执行程序中 10%的代码。数据访问也具有局部性,不过其局部性弱于代码访问的局部性。
局部性包括时间局部性和空间局部性。时间局部性是指: 程序即将用到的信息很可能就是目前正在使用的信息。空间局部性是指:程序即将用到的信息很可能与目前正在使用的信息在空间上相邻或者临近。
利用程序的局部性原理,可以根据程序最近的访问情况来比较准确地预测将要访问的指令和数据。凡是涉及数据重用的地方都可能会用到它。它是存储层次的基础。