计算机组成原理Zhang,Youhui(张悠慧)zyh02@tsinghua.edu.cn2010秋季课程回顾Topics计算机系统结构等相关概念与范畴数的表示汇编语言与C语言代码优化计算机系统结构等相关概念与范畴概念——计算机系统结构•编写出能够在机器上正确运行的系统程序所必须了解到的计算机系统的属性•研究计算机系统软件与硬件的功能分配,确定计算机系统软件与硬件的分界面•研究计算机系统的外部特性,即程序员所看到的计算机系统属性•程序员看到的计算机系统属性数据表示:硬件直接认别和处理的数据类型寻址技术:编址方式、寻址方式和定位方式寄存器定义:寄存器定义、数量和使用规则指令系统:指令的操作类型、格式、排序等存储系统:要求速度高、容量大、价格便宜中断系统:中断类型、中断级别和响应方式输入输出系统:数据交换方式、交换过程控制机器工作状态:定义和切换方式,如内核态、执行态、管理态和用户态等概念——计算机组成•计算机系统的逻辑实现设计功能部件:处理器,主存储器等数据通路的宽度各种操作对功能部件的共享程度确定功能部件的并行度设计缓冲和排队策略设计控制机构采用何种可靠性技术概念——汇编语言•用符号表示的机器语言,可包括宏构造概念——冯诺依曼计算机•特点:存储程序、运算器为中心、集中控制存储器是字长固定的、顺序线性编址的一维结构,每个地址是唯一定义的由指令形式的低级机器语言驱动指令顺序执行,一般按照指令在存储器中存放的顺序执行,程序分支由转移指令实现运算器为中心,输入输出设备与存储器之间的数据传送都途经运算器集中控制,运算器、存储器、输入输出设备的操作以及它们之间的联系都由控制器控制•现代处理器运算速度计算公式:P=FzXIPCXTPC其中:Fz为处理机的工作主频IPC(InstructionPerCycle)指令级并行度TPC(ThreadingPerCycle)线程级并行度例如:主频3GHz,4核Pentium4处理器的最高运算速度为:P=3GHzX4IPCX4TPC=48GIPS即:每秒钟480亿次概念——处理器运算速度•提高处理器性能的主要途径(1)提高主频Fz:增加流水线级数,依靠计算机系统结构缩短门电路延迟时间,依靠电子技术(2)提高指令级并行度IPC依靠并行算法和计算机系统结构(3)提高线程级并行度TPC依靠并行算法、程序设计和计算机系统结构•近期出现的新问题:线延迟大于门延迟漏电流很大功耗惊人•近期提高计算机性能的途径只能依靠并行算法、程序设计和计算机系统结构,不能指望电子技术•不仅对计算机系统结构,而且对并行算法、软件技术和计算机应用技术都将产生深远的影响概念——指令执行速度•平均速度概念——Amdahl定律数的表示Bits,Bytes,andIntegersSizesofCObjects(inBytes)CDataTypeTypical32-bitIntelIA32x86-64char111short222int444long448longlong888float444double888longdouble810/1210/16char*448»OranyotherpointerBit-LevelOperationsinC•Operations&,|,~,^AvailableinCLogicOperationsinC•&&,||,!View0as“False”Anythingnonzeroas“True”Alwaysreturn0or1EarlyterminationShiftOperations•Logicalvs.Arithmetic•Shiftamount0orwordsizeSignedvs.UnsignedinCConstantsBydefaultareconsideredtobesignedintegersUnsignedifhave“U”assuffix0U,4294967259UCastingExplicitcastingbetweensigned&unsignedsameasU2TandT2Uinttx,ty;unsignedux,uy;tx=(int)ux;uy=(unsigned)ty;Implicitcastingalsooccursviaassignmentsandprocedurecallstx=ux;uy=ty;Unsignedisdangerous!IntegerCPuzzlesRevisited•x0((x*2)0)•ux=0•x&7==7(x30)0•ux-1•xy-x-y•x*x=0•x0&&y0x+y0•x=0-x=0•x=0-x=0•(x|-x)31==-1•ux3==ux/8•x3==x/8•x&(x-1)!=0intx=foo();inty=bar();unsignedux=x;unsigneduy=y;InitializationFloatingPointRepresentationBitstorightof“binarypoint”representfractionalpowersof2Representsrationalnumber:bibi–1b2b1b0b–1b–2b–3b–j••••••.1242i–12i••••••1/21/41/82–jbk2kkjiNumericalForm–1sM2ESignbitsdetermineswhethernumberisnegativeorpositiveSignificandMnormallyafractionalvalueinrange[1.0,2.0).ExponentEweightsvaluebypoweroftwoEncodingMSBissignbitexpfieldencodesEfracfieldencodesMSizes•Singleprecision:8expbits,23fracbits•Doubleprecision:11expbits,52fracbits•Extendedprecision:15expbits,63fracbitsFloatingPointRepresentationsexpfrac“Normalized”NumericValuesConditionexp000…0andexp111…1ExponentcodedasbiasedvalueE=Exp–BiasExp:unsignedvaluedenotedbyexpBias:Biasvalue»Singleprecision:127(Exp:1…254,E:-126…127)»Doubleprecision:1023(Exp:1…2046,E:-1022…1023)»ingeneral:Bias=2e-1-1,whereeisnumberofexponentbitsSignificandcodedwithimpliedleading1M=1.xxx…x2xxx…x:bitsoffracMinimumwhen000…0(M=1.0)Maximumwhen111…1(M=2.0–)Getextraleadingbitfor“free”DenormalizedValuesConditionexp=000…0ValueExponentvalueE=–Bias+1SignificandvalueM=0.xxx…x2xxx…x:bitsoffracCasesexp=000…0,frac=000…0Notethathavedistinctvalues+0and–0exp=000…0,frac000…0Conditionexp=111…1Casesexp=111…1,frac=000…0Representsvalue(infinity)OperationthatoverflowsBothpositiveandnegativeexp=111…1,frac000…0Not-a-Number(NaN)sexpfracEValue00000000-6000000001-61/8*1/64=1/51200000010-62/8*1/64=2/512…00000110-66/8*1/64=6/51200000111-67/8*1/64=7/51200001000-68/8*1/64=8/51200001001-69/8*1/64=9/512…00110110-114/8*1/2=14/1600110111-115/8*1/2=15/160011100008/8*1=10011100109/8*1=9/800111010010/8*1=10/8…01110110714/8*128=22401110111715/8*128=24001111000n/ainfclosesttozerolargestdenormsmallestnormclosestto1belowclosestto1abovelargestnormDenormalizednumbersNormalizednumbersRound-To-EvenBinaryFractionalNumbers“Even”whenleastsignificantbitis0Halfwaywhenbitstorightofroundingposition=100…2ExamplesRoundtonearest1/4(2bitsrightofbinarypoint)ValueBinaryRoundedActionRoundedValue23/3210.00011210.002(1/2—down)223/1610.00110210.012(1/2—up)21/427/810.11100211.002(1/2—up)325/810.10100210.102(1/2—down)21/2FloatingPointinCCGuaranteesTwoLevelsfloatsingleprecisiondoubledoubleprecisionConversionsCastingbetweenint,float,anddoublechangesnumericvaluesDoubleorfloattointTruncatesfractionalpartLikeroundingtowardzeroNotdefinedwhenoutofrangeorNaN»GenerallysetstoTminorTmaxinttodoubleExactconversion,aslongasinthas≤53bitwordsizeinttofloatWillroundaccordingtoroundingmodeFloatingPointPuzzlesForeachofthefollowingCexpressions,either:ArguethatitistrueforallargumentvaluesExplainwhynottrue•x==(int)(float)x•x==(int)(double)x•f==(float)(double)f•d==(float)d•f==-(-f);•2/3==2/3.0•d0.0((d*2)0.0)•df-f-d•d*d=0.0•(d+f)-d==fintx=…;floatf=…;doubled=…;AssumeneitherdnorfisNaN汇编与C语言movlOperandCombinationsCannotdomemory-memorytransferwithasingleinstructionmovlImmRegMemRegMemRegMemRegSourceDestCAnalogmovl$0x4,%eaxtemp=0x4;movl$-147