计算机组成原理教学课件.ppt
《计算机组成原理教学课件.ppt》由会员分享,可在线阅读,更多相关《计算机组成原理教学课件.ppt(306页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第二章第二章 运算方法和运算器运算方法和运算器 2.1 数据与文字的表示 2.2 定点加法、减法运算 2.3 定点乘法运算 2.4 定点除法运算 2.5 定点运算器的组成 2.6 浮点运算与浮点运算器 2.7 本章小结 2.1 数据与文字的表示数据与文字的表示 2.1.1 数据格式数据格式 2.1.2 数的机器码表示数的机器码表示 2.1.3 字符的表示字符的表示 2.1.4 汉字的表示方法汉字的表示方法 2.1.5 校验码校验码 2.1.1 数据格式 在选择计算机的数的表示方式时,需要考虑以下几个因素:(1)要表示的数的类型(小数、整数、实数和复数);(2)可能遇到的数值范围;(3)熟知精确
2、度;(4)数据存储和处理所需要的硬件代价。小数点如何表示?计算机中常用的数据表示格式有两种:一是定点格式,。允许的数值范围有限,但要求的处理硬件比较简单。二是浮点格式允许的数值范围很大,但要求的处理硬件比较复杂。1.定点数的表示方法定点数的表示方法 约定机器中所有数据的小数点位置是固定不变的。由于约定在固定的位置,小数点就不再使用记号“.”来表示。原理上讲,小数点位置固定在哪一位都可以,但是通常将数据表示成纯小数纯小数或纯整数纯整数。假设用一个n+1位字来表示一个定点数x,其中一位0用来表示数的符号位,其余位数代表它的量值。为了将整个n+1位统一处理起见,符号位0放在最左位置,并用数值0和1分
3、别代表正号和负号,这样,对于任意定点数012n 在定点机中表示如下形式:如果数x表示的是纯小数,纯小数,那么小数点位于0和1之间。当012n各位均为0时,数x的绝对值最小,即|=0;当各位均为1时,x的绝对值最大,即|=12n故数的表示范围为0|12n(2.1)如果数x表示的是纯整数,纯整数,那么小数点位于最低位n 的右边,此时数x的表示范围为 0|2n1(2.2)目前计算机中多采用定点纯整数表示,因此将定点数表示的运算简称为整数运算整数运算。2.浮点数的表示方法浮点数的表示方法 把一个数的有效数字和数的范围在计算机的一个存储单元中分别予以表示。这种把数的范围和精度分别表示的方法,数的小数点位
4、置随比例因子的不同而在一定范围内自由浮动。所以称为浮点表浮点表示法示法。任意一个十进制数 可以写成:10E*(2.3)计算机中一个任意进制数 可以写成:e*m(2.4)其中:m 称为浮点数的尾数尾数,是一个纯小数。e 是比例因子的指数,称为浮点的指数指数,是一个整数。比例因子的基数基数R 对于二进计数值的机器是一个常数,一般规定 为2,8或16。在机器中表示一个浮点数时,一定要给出尾数,用定点小数形式表示。尾数部分给出有效数字的位数,因而决定了浮点数的表示精度。二是要给出指数,用整数形式表示,常称为阶阶码码,阶码指明小数点在数据中的位置,因而决定了浮点数的表示范围。浮点数也要有符号位。在早期计
5、算机中,一个机器浮点数由阶码和尾数及其符号位组成:后来为便于软件移植,按照 IEEE754 的标准,32位浮点数和64位浮点数的标准格式为:32位的浮点数中:浮点数的符号位,占1 位,S=0表示正数,S=1表示负数。是尾数,放在最低部分,占用23位,用小数表示,小数点放在尾数域的最前面。是阶码,占用8 位,阶符采用隐含方式,即采用移码方式来表示正负指数。移码方法对两个指数大小的比较和对阶操作都比较方便,因为阶码域值大者其指数值也大。采用这种方式时,将浮点数的指数真值e 变成阶码 时,应将指数 e 加上一个固定的偏移值127(01111111),即 e127。若不对浮点数的表示做出明确规定,同一
6、个浮点数的表示就不是唯一的。例如:(1.75)10=1.1120 (IEEE规格化表示)=0.11121(传统规格化表示)=0.011122=0.0011123 为了提高数据的表示精度,当尾数的值不为0时,尾数域的最高有效位应为1,否则要以修改阶码同时左右移小数点的办法,使其变成这一要求的表示形式,这称为浮点数的规格规格化表示化表示。IEEE754标准中,一个规格化的32位浮点数的真值可表示为:(1)s(1.)2127 e127(2.5)其中尾数域所表示的值是1.M。因为规格化的浮点数的尾数域最左(最高有效位)总是1,故这一位经常不予存储,而认为隐藏在小数点的左边。IEEE标准中,64位的浮点
7、数中符号位1为,阶码域11为,尾数域52位,指数偏移值是1023。因此规格化的64位浮点数的真值为:(1)s(1.)21023 e1023 (2.6)当一个浮点数的尾数为 0,不论其阶码为何值,或者当阶码的值遇到比它能表示的最小值还小时,不管其尾数为何值,计算机都把该浮点数看成零值,称为机机器零器零。当阶码E为全0且尾数M也为全0时,表示的真值x为零,结合符号位S为0或1,有正零和负零之分。当阶码E为全1,且尾数M也为全0时,表示的真值x为无穷大,结合符号位S为0或1,有正无穷和负无穷之分。这样在32位浮点数表示中,要除去E用全0和全1(25510)表示零和无穷大的特殊情况,指数的偏移值不选1
8、28(10000000),而选127(01111111)。对于规格化浮点数,E的范围变为1到254,真正的指数值e则为-126到+127。因此32位浮点数表示的绝对值的范围是10-38-10+38(以10的幂表示)。NaNs(Not-a-Number),(Infinity)#include#include int main()union floatandintfloat p;int i;fandi;fandi.i=0 xffc00000;/1 111,1111,1 100,0000,0000,0000,0000,0000B;printf(%xn%fn,fandi.i,fandi.p);retu
9、rn 0;例例1 若浮点数的754标准存储格式为(41360000)16,求其浮点数的十进制值。0100000100110110000000000000s阶码8位尾数23位e=阶码-127=10000010-01111111=00000011=(3)10尾数1.M=1.0110110000000000000=1.011011x=(-1)s1.M2e=+(1.011011)23=+1011.011=(11.375)10例例1 若浮点数的754标准存储格式为(41360000)16,求其浮点数的十进制值。例例2 将十进制数数20.59375转换成754标准的32位浮点数的二进制格式来存储。解:20
10、.59375=10100.10011规格化:=1.01001001124 e=4所以:s=0,E=e+127=131 =01111111+0100 =10000011,m=010010011单精度浮点数二进制存储格式为:0 100 0001 1 010 0100 1100 0000 0000 00003.十进制数串的表示方法十进制数串的表示方法 大多数通用性较强的计算机都能直接处理十进制形式表示的数据。十进制数串在计算机内主要有两种表示形式:(1)字符串形式)字符串形式,即一个字节存放一个十进制的数位或符号位。在主存中,这样的一个十进制数占用连续的多个字节,故为了指明这样一个数,需要给出该数在
11、主存中的起始地址和位数(串的长度)。这种方式表示的十进制字符串主要用在非数值计算的应用领域中。如:+123 用ASCII码 2B313233 -123用ASCII码 2D313233(2)压缩的十进制数串形式)压缩的十进制数串形式,即一个字节存放两个十进制的数位。它比前一种形式节省存储空间,又便于直接完成十进制数的算术运算,是广泛采用的较为理想的方法。用压缩的十进制数串表示一个数,要占用主存连续的多个字节。每个数位占用半个字节(即4个二进制位),其值可用二十编码(BCD码)或数字符的ASCII码的低4位表示。符号位也占半个字节并放在最低数字位之后,其值选用四位编码中的六种冗余状态中的有关值,如
12、用12(c)表示正号,用13(d)表示负号。在这种表示中,规定数位加符号位之和必须为偶数,当和不为偶数时,应在最高数字位之前补一个0。例如 123 和12分别被表示成:+123 12 3C -12 01 2D与第一种表示形式类似,要指明一个压缩的十进制数串,也得给出它在主存中的首首地址地址和数字位个数数字位个数(不含符号位),又称位位长长,位长为0的数其值为0。十进制数串表示法的优点是位长可变位长可变,许多机器中规定该长度从0到31,有的甚至更长。2.1.2 数的机器码表示 符号位如何表示呢?把符号位和数字位一起编码来表示相应的数,如原码、补码、反码、移码等称为机器数机器数或机器码机器码。所代
13、表的实际值称为机器数的真值真值。原码表示法2.补码表示法3.反码表示法正数的反码与其原码、补码相同,负数的反码为补码最低位减1。反码运算不方便,0值又有两个编码,用得不很普遍。整数的表示形式设 X=XnX2X1X0,其中Xn为符号位(1)原码(2)补码Mod2n+1(3)反码4.移码移码就是在真值X上加一个常数2n,相当于X在数轴上向正方向平移了2n个单位。移码也可称为增码02n2n+1-102-n2n-1X移X对比补码定义就可以找出其移码和补码之间的如下关系:移码的性质:(1)最高一位为符号位,但其取值与原码和补码都相反,1代表正号,0代表负号。移码用于表示浮点数的阶码,通常只使用整数。(2
14、)对移码一般只执行加减运算,在对两个浮点数进行乘除运算时,是尾数实现乘除运算,阶码执行加减运算。对移码执行加减运算时,需要对得到的结果加以修正,修正量为2n,即要对符号位的结果取反后,得到的才是移码形式的结果。如X=+1010,Y=+0011,X移=11010 Y移=10011X移+Y移=101101,加24后得X+Y移=11101(3)在移码表示中,0有唯一的编码,即+0=-0=10000。当浮点数的阶码=-2n时,移码为00000,补码是10000,当浮点数的阶码=-2n时,尾数不为0是非规格化数,尾数为0是机器零此时,移码表示的阶码值值正好是每一位都为0的形式,与补码的-2n完全一致。但
15、补码的数值位不全0,所以使用移码有利于简化机器中的判0线路。(4)移码把真值映射到一个正数域,所以可将移码视为无符号数,直接按无符号数规则比较大小。移码为全0时,它所对应的真值最小,为全1时,它所对应的真值最大,因此,移码的大小直观地反映了真值的大小,这将有助于两个浮点数进行阶冯大小比较。例例3以定点整数为例,用数轴形式说明原码、反码、补码表示范围和可能的数码组合情况。解:原码、反码、补码表示分别示于下图。与原码、反码不同,在补码表示中“0”只有一种形式,且用补码表示负数时范围可到2n 例例4将十进制真值(127,1,0,1,127)列表表示成二进制数及原码、反码、补码、移码值。解:二进制真值
16、及其诸码值列于下表,其中0在原,反中有两种表示。由表中数据可知,补码值与移码值差别仅在于符号位不同。例例5设机器字长16位,定点表示,尾数15位,数符1位,问:(1)定点原码整数表示时,最大正数是多少?最小负数是多少?(2)定点原码小数表示时,最大正数是多少?最小负数是多少?;(1)定点原码整数表示最大正数值(2151)10(32767)10 0 111 111 111 111 111 最小负数值(2151)10(32767)10 1 111 111 111 111 111(2)定点原码小数表示 最大正数值(1215)10(0.111.11)2最小负数值(1215)10(0.111.11)2
17、例例6假设由S,E,M三个域组成的一个32位二进制字所表示的非零规格化浮点数,真值表示为(非IEEE754标准):(1)s(1.M)2E128问:它所表示的规格化的最大正数、最小正数、最大负数、最小负数是多少?(1)最大正数 0 1 1111111 1111 1111 1111 1111 1111 111 1(12-23)2127(2)最小正数 0 0 0000000 0000 0000 0000 0000 0000 000 1.02128(3)最小负数 1 1 1111111 1111 1111 1111 1111 1111 111 1(1223)2127(4)最大负数 1 0 000000
18、0 0000 0000 0000 0000 0000 000 1.02128 2.1.3 字符与字符串的表示方法 目前国际上普遍采用的字符系统是七单位的ASCII码(美国国家信息交换标准字符码),它包括10个十进制数码,26个英文字母和一定数量的专用符号,如$,%,等,共128个元素,因此二进制编码需7位,加一位偶校验位,共8位一个字节。表2.1列出了七单位的ASCII码字符编码表。0000010100111001011101110000NUL DELSP0Pp0001SOH DC1!1AQaq0010STX DC22BRbr0011ETX DC3#3CScs0100EOT DC4$4DTdt
19、0101ENQ NAK%5EUeu0110ACK SYN&6FVfv0111DEL ETB7GWgw1000BSCAN(8HXhx1001HTEM)9IYiy1010LFSUB*:JZjz1011VTESC+;Kk1100FFFS,Nn1111SIUS/?O_oDEL其中95个编码,对应着计算机终端能敲入并且可以显示的95个字符,打印机设备也能打印这95个字符,如大小写各26个英文字母,09这10个数字符,通用的运算符和标点符号,*,/,=0,Y=0 X补+Y补=X+Y 若0=X+Y1 则 X补+Y补=X+Y=X+Y补 否则溢出b.当X0,Y0 X补+Y补=2+X+2+Y=2+2+X+Y 若-
20、1=X+Y0,Y0 X补+Y补=X+2+Y=2+X+Y 若-1=X+Y0 则 X补+Y补=2+(X+Y)mod 2 =X+Y补 若0=X+Y=0时 X补=X原当X=0时 X补=X原=X当X=0时X0=0X=X补当X0时X=-1+0.X1X2Xn=-(1-0.X1X2Xn)=-(0.111-0.X1X2Xn+2-n)不同位长间的转换问题不同位长间的转换问题 有时需要取来一个n位整数而以m位来保存,这里mn。对于原码表示法这是很容易完成的:简单将符号位移列新的最左位置上,多余出的空位全添0。如:+18 0001 0010+180000 0000 0001 0010-18 1001 0010-181
21、000 0000 0001 0010 这种做法对于补码的负数则不行,使用同样的例子+18 0001 0010+180000 0000 0001 0010-18 1110 1110-325141000 0000 1111 1110补码整数扩展规则应是,移符号位到新的最左位,其余空出位均以符号位的拷贝填充。+18 0001 0010+180000 0000 0001 0010-18 1110 1110-181111 1111 1110 1110反码同样处理2.2.3 溢出概念与检测方法当运算结果超出机器数所能表示的范围时,称为溢出溢出。只在正数加正数和负数加负数两种情况下才会产生溢出。在定点小数机
22、器中,数的表示范围为|=10时要校正时要校正2.3 定点乘法运算定点乘法运算 2.3.1 原码并行乘法 设n位被乘数和乘数用定点小数表示(定点整数也同样适用)被乘数 原f.n110乘数 原f.n110则乘积 原(ff)(0.n110)(0.n110)(2.26)式中,f为被乘数符号,f为乘数符号。1.人工算法与机器算法的同异性人工算法与机器算法的同异性 设0.1101,0.1011.手工求乘积过程如下:但是人们习惯的算法对机器并不完全适用。原因之一,机器通常只有n位长,两个n位数相乘,乘积可能为2n位。原因之二,只有两个操作数相加的加法器难以胜任将各n位积一次相加起来的运算。因此,早期计算机中
23、为了简化硬件结构,采用串行的1位乘法方案,即多次执行“加法移位”操作来实现。这种方法并不需要很多器件。然而串行方法毕竟太慢,不能满足科学技术对高速乘法所提出的要求。由于乘法运算大约占全部算术运算的1/3,因此采用高速乘法部件,无论从速度上来说还是效率上来说,都是十分必要的。自从大规模集成电路问世以来,高速的单元阵列乘法器应运而生,出现了各种形式的流水式阵列乘法器,它们属于并行乘法器。2.不带符号的阵列乘法器不带符号的阵列乘法器设有两个不带符号的二进制整数:Aam1a1a0Bbn1b1b0 它们的数值分别为a和b,即 m1n1aai2ibbj2ji0j0被乘数A与乘数B相乘,产生mn位乘积P:P
24、pmn1p1p0实现这个乘法过程所需要的操作和人们的习惯方法非常类似:这种乘法器要实现n位n位时,需要n(n1)个全加器和n2个“与”门。延时:55Ta+3Tfa+4Tf+Tfa=Ta+4Tfa+4Tf=T+24T+8T=33TnnTa+(n-1)Tfa+(n-1)Tf=T+(n-1)6T+(n-1)2T=(8n-7)T令Ta为“与门”的传输延迟时间,Tf为全加器(FA)的进位传输延迟时间,假定用2级“与非”逻辑来实现FA的进位链功能,那么我们就有:TaT,Tf2T。Tfa为加延时:每级异或门延迟3T,共6T。3.带符号的阵列乘法器带符号的阵列乘法器 对带符号的阵列乘法器的结构来说,按其所用的
25、数的表示方法而有所不同。在介绍带符号的阵列乘法器基本原理以前,我们先来看看算术运算部件设计中经常用到的求补电路。用这种对2求补器来转换一个(n1)位带符号的数,所需的总时间延迟为:tTCn2T5T(2n5)T=32T+5T=11TE=1时求补时求补E=0时时a*=a带符号的阵列乘法器(n1)(n1)位带求补器的阵列乘法器原码乘 an、bn接0,不求补。补码乘求补,an、bn接符号位。时间比原码乘大1倍。例例17 设15,13,用的原码阵列乘法器求出乘积?解:设最高位为符号位,则输入数据为 原 01111 原 11101 符号位单独考虑,算前求补级后|1111,|1101算后输出并加上乘积符号位
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 组成 原理 教学 课件
限制150内