1.3 计算机系统设计和分析
1.3.1 成本与价格
- 商品的标价(价格)由这样一些因素构成
- 原料成本、直接成本、毛利和折扣
- PC的成本和价格
成本-时间因素:学习曲线
产品价格随时间变化的特性,就是价格随时间下降的趋势
1.3.2 基准测试程序
- 性能与测试程序的执行时间相关,那么用什么做测试程序呢?
- 五类测试程序
- 真实程序
- 修正的(或者脚本化)应用程序
- 核心程序
- 小测试程序
- 合成测试程序
- 测试程序包(组件, benchmark suites)
- 选择一组各个方面有代表性的测试程序组成
- 尽可能全面地测试了一个计算机系统的性能
测试程序包:www.SPEC.org
- 基于NUIX,诞生于20世纪80年代
- 由真实程序和核心程序构成
- 采用C和Fortran两种语言,后增加C++
- 包括整数部分SPECint和浮点部分SPECfp
- 主要版本包括SPEC89、SPEC92、SPEC95、SPEC2000和SPEC2006等
- SECP2006功能进一步细化
- 台式计测试:SPEC CPU2000
- 图像测试:SPECviewperf,SPECapc
- NFS性能测试:SPECSFS
- Web服务测试:SPECWeb
- SECP2006功能进一步细化
SPEC CPU2006
- SPEC2006有12个整数程序
- 9个C程序
- 其它是C++程序
- 浮点包中有
- 6个Fortran
- 4个C++
- 3个C
- 4个C和Fortran混合程序
其他测试包
- TPC-x
- 测量事务处理、排队系统、决策支持、数据库 应用等的性能
- 1985年发布第一个TPC测试程序TPC-A,并先后发布多个修改版本并补充了四个不同的测试程序,构成TPC测试程序组件
- 嵌入式处理器
- .EEMBC:EDN嵌入式微处理器测试程序联盟发布的测试程序包
1.3.3 量化设计的基本原则
- 1.大概率事件优先原则 追求全局的最优结果
- 2.Amdahl定律
- 系统性能加速比,受限于该部件在系统中所占 的重要性
- 可以定量计算
- 3.程序的局部性原理
- 程序执行时所访问存储器在时-空上是相对地簇聚
- 这种簇聚包括指令和数据两部分
大概率事件优先的原则
- 对于大概率事件(最常见的事件),赋予它优 先的处理权和资源使用权,以获得全局的最优结果
- 要能够确定什么是大概率事件,同时要说明针对该事件进行的改进将如何提高机器的性能
- “好钢用在刀刃上”,事半功倍
Amdahl定律
- 假设我们对机器(部件)进行某种改进,那么机器系统(部件)的加速比就是
系统加速比= 系统性能改进后/系统性能改进前 = 总执行时间改进前/总执行时间改进后
- 核心概念:时间
- 系统加速比告诉我们改进后的机器比改进前
快多少
系统加速比依赖于两个因素
- “可改进比例”:可改进部分在原系统计算时间中所占的比例,它总是小于等于1的
- T1/T0
- “部件加速比”可改进部分改进以后的性能提高,一般情况下它是大于1的
- T1/T2
- T1/T2
Amdahl的系统执行时间
- 部件改进后,系统的总执行时间等于不可改进部分的执行时间加上可改进部分改进后的执行时间,即:
- 总执行时闻改进后
=(1-可改进比例)×总执行时间改进前+(可改进比例×总执行时间改进前/部件加速比)
=总执行时间改进前×[(1-可改进比例)+可改进比例/部件加速比]
Amdahl的系统加速比
- 系统加速比为改进前与改进后总执行时间之 比,为:
- 系统加速比
=总执行时间改进前 / 总执行时间改进后
=1 /( (1-可改进比例)+ 可改进比例/部件加速比)
Amdahl定律的观点
- 性能增加的递减规则
- 仅仅对计算机中的一部分做性能改进,则改进越多,系统获得的效果越小
- Amdahl定律的一个重要推论
- 针对整个任务的一部分进行优化,则最大加速比不大于 1/(1-可改进比例)
- Amdahl定律衡量一个“好”的计算机系统
- 具有高性能价格比的计算机系统是一个带宽平衡的系统,而不是看它使用的某些部件的性能
例一
Amdahl定律练习
例1∶假设在某程序的执行过程中,浮点操作时间占整个执行时间的10%,现希望对浮点操作加速。
- 设对浮点操作的加速比为Sf,请推导出程序总的加速比S和Sf之间的关系表达式;
- 请问程序的最大加速比可达多少?
例2
求平方根和浮点乘是图形应用中常用的转换,假设求平方根操作在某机器的一个基准程序中占总执行时间的20%,浮点乘操作在该程序中占总执行时间30%,现通过两种方法加速两操作
①增加专门的硬件处理求平方根,使其执行速度为原来的10倍
②通过调整流水线把浮点乘速度提高为原来的1.6倍
采用两种方法增强后此基准程序加速比是多少?
程序局部性
- 程序访问地址的分布不是随机的,而是相对地簇聚
- 包括时间局部性和程序的空间局部性
- 程序的时间局部性
- 程序即将用到的信息很可能就是目前正在使用的信息
- 程序的空间局部性
- 程序即将用到的信息很可能与目前正在使用的信息在空间上相邻或者临近
- 其他局部性
- 生产-消费局部性