您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 计算机体系结构知识点
计算机体系结构知识点刘飞liu.fei.ldu@gmail.com1.5.3性能设计和评测的基本原则三条基本原则和方法:1.大概率事件优先的原则对于大概率事件(最常见的事件),赋予它优先的处理权和资源使用权,以获得全局的最优结果。2.Amdahl定律加快某部件执行速度所获得的系统性能加速比,受限于该部件在系统中所占的重要性。1.5定量分析技术基础2(1)加速比系统加速比依赖于两个因素:可改进比例:可改进部分在原系统计算时间中所占的比例,它总是小于等于1的。系统加速比==改进前改进后系统性能系统性能改进后改进前总执行时间总执行时间3部件加速比:可改进部分改进以后的性能提高,一般情况下它是大于1的。总执行时间改进后=(1-可改进比例)总执行时间改进前+=[(1-可改进比例)+]总执行时间改进前总执行时间改进后=不可改进部分的执行时间+可改进部分改进后的执行时间部件加速比总执行时间可改进比例改进前部件加速比可改进比例4系统加速比为改进前与改进后总执行时间之比:系统加速比==改进后改进前总执行时间总执行时间部件加速比可改进比例可改进比例)1(153.程序的局部性原理程序在执行时所访问地址的分布不是随机的,而是相对地簇聚;这种簇聚包括指令和数据两部分。◆程序的时间局部性:程序即将用到的信息很可能就是目前正在使用的信息。◆程序的空间局部性:程序即将用到的信息很可能与目前正在使用的信息在空间上相邻或者临近。应用:存储相关设计上1.5定量分析技术基础61.5.4CPU的性能1.将程序执行的时间进行分解(1)计算机工作的时钟频率计算机系统中与实现技术和工艺有关的因素。单位是MHz(f)。(2)总时钟周期数程序执行的cpu时间:CPU时间=总时钟周期数/时钟频率1.5定量分析技术基础72.“指令时钟数”CPI(CyclesPerInstruction)一个与计算机体系结构有关的参数。CPI=总时钟周期数/IC3.程序执行的CPU时间可以写成总CPU时间=CPIIC/时钟频率IC:程序执行过程中所处理的指令数。1.5定量分析技术基础8假设:计算机系统有n种指令;CPIi:第i种指令的处理时间;ICi:在程序中第i种指令出现的次数;则程序执行时间为CPU时间=(CPIiICi)/时钟频率CPI=(CPIiICi)/IC=(CPIiICi/IC)其中:(ICi/IC)反映了第i种指令在程序中所占的比例。i=1i=1i=1nnn1.5定量分析技术基础4.对CPU性能公式进行进一步细化9•例题1.1•课后1.72.3.2CISC和RISC指令集功能的设计(1)指令数(2)时钟周期(3)CPI2.3指令集结构的功能设计74%19%7%69%31%0%0%0%0%20%40%60%80%双字单字半字字节整型平均浮点平均基准程序对单字和双字的数据访问具有较高的频率。◆选择操作数字段的长度为32位,可以有效支持8、16、32位整型操作数,以及32位浮点操作数的表示。◆选择操作数字段长度为64位,则更具有一般性。4.访问不同操作数大小的频率133.2.3流水线性能分析吞吐率是指单位时间内流水线所完成的任务数或输出结果的数量。1.吞吐率(1)最大吞吐率TPmax最大吞吐率是指流水线在连续流动达到稳定状态后所得到的吞吐率。◆若流水线各段的时间相等,均为△t0,则:TPmax=1/△t03.2DLX的基本流水线14◆若流水线各段的时间不等,则:◆最大吞吐率取决于流水线中最慢的一段所需的时间,这段就成了流水线的瓶颈。◆消除瓶颈的方法(举例)细分瓶颈段重复设置瓶颈段(时-空图)1max{△ti}TPmax=─────3.2DLX的基本流水线1516重复设置瓶颈段(时-空图举例)17◆第一种情况:各段时间相等(设为△t0)假设流水线由m段组成,完成n个任务。时空图完成n个任务所需的时间T流水=m△t0+(n-1)△t0(说明)(2)实际吞吐率TP流水线的实际吞吐率小于最大吞吐率。3.2DLX的基本流水线1819完成n个任务所需的时间20实际吞吐率TP=───=──────────T流水nm△t0+(n-1)△t0n(1+)△t0m-11TPmaxn=────────=─────1+nm-1TP<TPmax当nm时,TP≈TPmax◆第二种情况:各段时间不等时空图3.2DLX的基本流水线213.2DLX的基本流水线22完成n个任务所需的时间T流水=∑△ti+(n-1)△tj△tj=max{△ti}实际吞吐率TP=──────────∑△ti+(n-1)△tjmi=1ni=1m3.2DLX的基本流水线23加速比是指流水线的速度与等功能非流水线的速度之比。2.加速比SS=T非流水/T流水(其中T流水和T非流水分别为按流水和按非流水方式处理n个任务所需的时间)若流水线为m段,且各段时间相等,均为△t0,则:T非流水=nm△t0(解释)T流水=m△t0+(n-1)△t03.2DLX的基本流水线243.2DLX的基本流水线25可以看出:当nm时,S≈m想一想:m越大越好?效率是指流水线的设备利用率。(1)由于流水线有通过时间和排空时间,所以流水线的各段并不是一直满负荷地工作。故:E<1S=───=─────────T非流水T流水nm△t0m△t0+(n-1)△t0mnm+n-1mn1+m-1=────=────3.效率E3.2DLX的基本流水线263.2DLX的基本流水线27(2)若各段时间相等,则各段的效率ei相等,即e1=e2=e3==em=n△t0/T流水(解释)整个流水线的效率为:当nm时,E≈1E=───=────=─────n△t0T流水nm+n-11n1+m-1(3)从时-空图上看,效率实际上就是n个任务所占的时空区与m个段总的时空区之比,即:n个任务占用的时空区E=━━━━━━━━━━━━━(解释)m个段总的时空区……3.2DLX的基本流水线28294.流水线性能分析举例例3.1在静态流水线上计算∑AiBi,求:吞吐率,加速比,效率。4i=13.2DLX的基本流水线303.2DLX的基本流水线31解:(1)确定适合于流水处理的计算过程(2)画时空图(3)计算性能吞吐率TP=7/(20△t)加速比S=(34△t)/(20△t)=1.7效率E=(4×4+3×6)/(8×20)=0.213.2DLX的基本流水线3233343.2DLX的基本流水线35可以看出,在求解此问题时,该流水线的效率不高。(原因)动态流水线的时-空图举例Ⅰ3.2DLX的基本流水线36举例Ⅱ:这样行不行?3.2DLX的基本流水线374.4多指令流出技术性能评价一个时钟周期内流出多条指令,CPI<1。多指令流出处理器有三种基本结构:•超标量(Superscalar)每个时钟周期流出的指令数不定,它既可以通过编译器静态调度,也可以通过记分牌或Tomasulo算法动态调度•超流水(SuperPipeline)将每个功能部件进一步流水化,特别是取指令或指令流出被分解为多个段,使得一个功能部件在一拍中可以处理多条指令。•超长指令字38图示I(绝对值)39图示Ⅱ(相对值)40可以看出:(用数据说话!)(1)相联度越高,冲突失效就越少;(2)强制性失效和容量失效不受相联度的影响;(3)强制性失效不受Cache容量的影响,但容量失效却随着容量的增加而减少;(4)表中的数据符合2:1的Cache经验规则,即大小为N的直接映象Cache的失效率约等于大小为N/2的两路组相联Cache的失效率。413.数据对存储位置的限制比指令的少,因此更便于优化。通过把数据重新组织,使得在一块数据被从Cache替换出去之前,能最大限度利用其中的数据(访问次数最多)(1)数组合并举例:/*修改前*/intval[SIZE];intkey[SIZE];5.3降低Cache失效率的方法42(2)内外循环交换举例:/*修改前*/for(j=0;j100;j=j+1)for(i=0;i5000;i=i+1)x[i][j]=2*x[i][j];/*修改后*/structmerge{intval;intkey;};structmergemerged_array[size];5.3降低Cache失效率的方法43(3)循环融合举例:/*修改前*/for(i=0;iN;i=i+1)for(j=0;jN;j=j+1)a[i][j]=1/b[i][j]*c[i][j];/*修改后*/for(i=0;i5000;i=i+1)for(j=0;j100;j=j+1)x[i][j]=2*x[i][j];5.3降低Cache失效率的方法44/*修改后*/for(i=0;iN;i=i+1)for(j=0;jN;j=j+1){a[i][j]=1/b[i][j]*c[i][j];d[i][j]=a[i][j]+c[i][j];}for(i=0;iN;i=i+1)for(j=0;jN;j=j+1)d[i][j]=a[i][j]+c[i][j];(4)分块把对数组的整行或整列访问改为按块进行。5.3降低Cache失效率的方法45举例:/*修改前*/for(i=0;iN;i=i+1)for(j=0;jN;j=j+1){r=0;for(k=0;kN;k=k+1){r=r+y[i][k]*z[k][j];}x[i][j]=r;}计算过程失效次数:2N3+N25.3降低Cache失效率的方法46475.混合Cache与分离Cache(1)优缺点(2)失效率的比较5.2Cache基本知识4816KB容量1KB2KB4KB8KB32KB指令Cache3.06%失效率的比较64KB128KB数据Cache混合Cache2.26%1.78%1.10%0.64%0.39%0.15%0.02%24.61%20.57%15.94%10.19%6.47%4.82%3.77%2.88%13.34%9.78%7.24%4.57%2.87%1.99%1.36%0.95%49(3)分离Cache平均失效率的计算:访问指令Cache的百分比×指令Cache的失效率+访问数据Cache的百分比×数据Cache的失效率5.2.6Cache性能分析2.平均访问时间平均访问时间=命中时间+失效率×失效开销1.失效率50平均访存时间公式可以分为指令访问和数据访问两部分:平均访存时间=指令所占的百分比×(指令命中时间+指令失效率×失效开销)+数据所占的百分比×(数据命中时间+数据失效率×失效开销)5.2Cache基本知识513.程序执行时间CPU时间=(CPU执行周期数+存储器停顿周期数)×时钟周期时间其中,存储器停顿周期数=访存次数×失效率×失效开销5.2Cache基本知识52CPU时间=IC×[CPIexe+每条指令的平均存储器停顿周期数]×时钟周期时间CPU时间=IC×[CPIexe+访存次数/指令数×失效率×失效开销]×时钟周期时间5.2Cache基本知识•5.10,5.11
本文标题:计算机体系结构知识点
链接地址:https://www.777doc.com/doc-4903736 .html