第3章 运算方法与运算器_第1页
第3章 运算方法与运算器_第2页
第3章 运算方法与运算器_第3页
第3章 运算方法与运算器_第4页
第3章 运算方法与运算器_第5页
已阅读5页,还剩168页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章运算方法与运算器

本章学习内容3.1数据的表示方法3.2定点加、减运算3.3定点乘法运算3.4定点除法运算3.5定点运算器的组成3.6浮点运算方法2/5/202323.1数据的表示方法3.1.1带符号数的表示3.1.2数的定点表示与浮点表示2/5/20233(1)机器数与真值机器数:

采用进制表示形式的连同数符一起代码化了的数据统称为机器数。真值:而与机器数对应的实际数值称为真值。3.1.1带符号数的表示2/5/20234例:设用0表示正号,1表示负号,机器字长=8则+5、-5的机器数可以是:00000101、100001012/5/20235思考1:是否可以用1表示正号、0表示负号?思考2:机器数的表示方法(编码方法)的确定需要考虑哪些问题?

在计算机中,为了便于带符号数的运算和处理,机器数有多种表示方法,如:原码、补码、反码、移码。2/5/20236(2)原码表示原码表示:保持原有的数值部分的形式不变,只将符号用二进制代码表示,0表示正号,1表示负号。原码表示是最简单、最直观的机器数表示方法。2/5/20237例:设N=8,则[+7]原=00000111[-7]原=10000111例:设X=+0.101B,y=-0.0011[X]原=0.1010000[y]原=1.00110002/5/20238原码的特点:(1)原码表示直观、易懂,与真值的转换容易。(2)原码表示的加减运算复杂,不便于加减法的实现。例:-5-6=?(设N=4)

2/5/20239(3)补码表示一个有趣的例子:在进行钟表对时时,设当前的时针停在9点的位置,现将时钟拔到4点,可以采用两种方法:一是使时针后退5个小时,即9-5=4,另一种方法是使时针前进7个小时即9+7“=”4,这是为什么?即在模为12的情况下9-5等于9+72/5/202310在计算机中,由于硬件的运算部件与寄存器都有一定的字长限制,因此计算机中的运算是有模运算。

只要确定了‘模’,可找到一个负数等价的正数,这样可把减法运算用加法实现。2/5/202311补码表示正数的补码同原码,负数的补码,将真值的数值部分按位取反,且最低位加1,符号位为1。若x=+15则[x]补=00001111若x=-1则[x]补=111111112/5/202312补码的几何性质当n=3时,纯整数的补码为:2/5/2023132/5/202314补码的几何性质:从表示符号的角度看,符号位的值代表了数的正确符号,0表示正数,1表示负数。从映像值来看,符号位的值是映像值的一个数位,因此在补码运算中,符号位与数值位一样参加运算。补码的几何性质说明了补码运算的基础。2/5/202315

由于补码表示中的符号位可以与数值位一起参加运算,并且可以将减法转换为加法进行运算,简化了运算过程,因此计算机中均采用补码进行加减运算。2/5/202316补码总是对确定的模而言的。如果补码运算结果超过了模,则模将自动丢失。补码运算在运算过程中,模不能改变。2/5/202317反码的求法若x≥0则[x]反=x,符号位为0若x<0,则将x的各位取反,符号位等于1,即得到[x]反。例:x=+1001100则[x]反=01001100x=-1001100则[x]反=101100112/5/202318(5)

移码表示移码也称为增码、余码。纯小数移码的定义

[x]移=1+x-1≤x<1纯整数移码的定义

[x]移=2n+x-2n≤x<2n

移码表示其符号位为0表示负,1表示正,其它与补码相同。2/5/202319移码的几何性质当n=3时,纯整数的移码为:真值移码真值移码(+0)1000(-1)0111

(+1)1001(-2)0110

(+2)

1010(-3)0101

(+3)1011(-4)0100

(+4)

1100(-5)0011

(+5)1101(-6)0010

(+6)1110(-7)0001

(+7)

1111(-8)

00002/5/20232001234567-1-2-3-4-5-6-7-80000001001001000101011001110011000010011010110011011110111110111移码的几何性质真值移码2/5/202321移码表示的实质是把真值映像到一个正数域,因此移码的大小可直观地反映真值的大小。不管正数还是负数,用移码表示时,可以按无符号数比较大小。由于移码表示便于比较数值大小,所以移码主要用于表示浮点数的阶码。2/5/202322小结(1)为了便于运算,机器数的编码表示有多种方法,如原码、补码、反码和移码。(2)原码表示,直观,真值转换方便,它适合于乘除运算。(3)补码表示,符号位具有数值含义,特别适合于加减运算。(4)移码表示:码值的大小与其真值对应,特别适合于表示浮点数的阶码。2/5/2023233.1.2数的定点表示与浮点表示任何一个数均可表示为:

(N)R=S×ReR:基值。

S:尾数。代表数N的有效数字。

e:阶码。代表数N的小数点的实际位置。根据小数点的位置是否固定,计算机中有两种不同的数据格式,即定点表示和浮点表示。2/5/202324(1)定点表示定点表示:约定计算机中所有数据的小数点位置均是相同的而且是固定不变的。当采用定点表示时,(N)R=S×Re

中e的取值固定不变。定点数有两种表示方法。定点纯小数和定点纯整数。机器确定后,e就确定了,不能更改,也不能两者并存。2/5/202325定点小数e=0,表示纯小数,约定小数点在符号位与最高数值位之间。定点小数的格式数符尾数x0x1x2……xn小数点2/5/202326定点整数e=n,表示纯整数,约定小数点在最低有效数值位之后。定点整数的格式数符尾数x0x1x2……xn小数点2/5/202327定点数的表示范围设数据为N,机器字长为n+1,其中1位符号位,n位数值位。在不同的表示方法下,所能表示的数的范围不同。2/5/202328机器数真值数符尾数(n位)定点小数定点整数最小正数000…01+2-n+1最大正数011…111-2-n2n-1最大负数100…01-2-n-1最小负数111…11-(1-2-n)-(2n-1)定点原码数的表示范围2/5/202329定点补码数的表示范围机器数真值数符尾数(n位)定点小数定点整数最小正数000…01+2-n+1最大正数011…111-2-n2n-1最大负数111…11-2-n-1最小负数100…00-1-2n2/5/202330⑷移码表示定点移码数的表示范围与定点补码数的表示范围相同。机器数真值数符尾数(n位)定点小数定点整数最小正数100…01+1最大正数111…112n-1最大负数011…11-1最小负数000…00-2n2/5/202331在补码和移码表示范围中,最小负数比原码和反码表示范围大一个数,“-1”。以定点整数为例,原码和补码表示范围的数轴表示形式为:0+12n-1-1-(2n-1)11…1110…0000…0010…0100…0101…11原码0+12n-1-1-(2n-1)10…0100…0011…1100…0101…11补码-2n10…002/5/202332定点机的特点硬件上只考虑定点小数或定点整数运算的计算机称为定点机。定点机的优点在于运算简单,硬件结构简单。但存在的问题是:(1)所能表示的数据范围小;由于小数点的位置固定,在有限的字长下,定点数所能表示的范围较窄。2/5/202333(2)使用不方便,运算精度较低;在定点运算中,参加运算的数据必须是定点小数或定点整数。因此在运算之前,必须选择一个恰当的比例因子,将所有参加运算的数均化成纯小数或纯整数,然后再进行运算。运算结果再根据所选的比例因子转换成正确的值。比例因子必须选择恰当。选择太大,将会影响运算精度;选择太小,会使运算结果超出机器所能表示的数据范围,即出现溢出。2/5/202334例:在定点小数机器中计算11.01+10.01

选择比例因子2-2=0.01,可将两操作数变换为0.1101+0.1001

但0.1101+0.1001=1.0110,运算结果不是纯小数,出现了机器数不能表示的数,即出现了正溢出。

2/5/202335如果选择比例因子2-3=0.001,可将两操作数变换为0.01101+0.01001

则运算结果0.01101+0.01001=0.10110

为正常结果。将0.10110除以比例因子2-3,可得到正确结果101.102/5/202336比例因子的选择,早期是由用户自己进行的。在现代的计算机中,比例因子的选择是由系统程序(如编译程序)完成的,对用户往往是透明的。2/5/202337(3)存储单元利用率低在定点小数的机器中,必须把所有参加运算的数据至少都除以这些数据中的最大数,才能把所有的数据化成纯小数,这样可能会造成很多数据出现大量的前置0,从而浪费了许多存储单元。2/5/202338结论:定点表示计算简单,硬件实现容易,但数据表示范围小,采用比例因子进行运算时很难兼顾数值范围和精度的要求,不适合科学计算。2/5/202339(2)浮点表示在科学计算中,数值的分布范围很大,如果用比例因子来处理,很难兼顾数值范围和运算精度的要求,为此引入了浮点表示法。浮点表示:是指各个数的小数点位置不是固定不变的,而是可以浮动的。即(N)R=S×Re中的

e值是可变的。2/5/202340浮点数的表示格式浮点数由阶码和尾数两部分组成,阶码表示数的小数点实际位置,尾数表示数的有效数字。基数R是设计者约定的,用隐含方法表示。通常取基数R=2。浮点数的表示格式:数符阶符阶码尾数1位1位m位n位2/5/202341浮点数的规格化表示浮点数采用规格化表示方法的目的:⑴为了提高运算精度,充分利用尾数的有效数位,尽可能占满位数,以保留更多的有效数字。⑵为了浮点数表示的唯一性。例:0.100100×23=0.001001×252/5/202342为达到上述目的,需要尽可能去掉尾数中的前置“0”。即尽量使小数点后第一位为“1”。对于二进制数,就是要满足2/5/202343规格化数的定义原码表示的规格化数对于[S]原=Sf.S1S2…Sn,其规格化标志是:

S1=1即:[S]原=0.1xx…x或[S]原=1.1xx…x例:[S]原=0.1101101是规格化数[S]原=0.0101101不是规格化数2/5/202344补码表示的规格化数对于[S]补=Sf.S1S2…Sn,其规格化标志是:

Sf⊕S1=1即:[S]补=0.1xx…x或[S]补=1.01xx…x例:[S]补=0.1101101和[S]补=1.0101101是规格化数[S]补=0.0101101和[S]补=1.1101101不是规格化数2/5/202345阶码用移码,尾数用补码表示时的浮点数表示范围数符阶符阶码(m位)尾数(n位)真值非规格化最小正数0000…0000…01规格化最小正数0000…0010…00最大正数0111…1111…11非规格化最大负数1000…0011…11规格化最大负数1000…0001…11最小负数1111…1100…002/5/202346从数轴中可见,最大负数到最小负数,最小正数到最大正数之间以及

0,为机器数所能表达的数。

0最小负数负数区上溢区下溢区正数区上溢区最大负数最小正数最大正数2/5/202347浮点表示中阶码与尾数位数的选择在浮点数表示中尾数的位数决定了数据表示的精度。增加尾数的位数可增加有效数字位数,即提高数据表示精度。阶码的位数决定了数据表示的范围。增加阶码的位数,可扩大数据表示的范围。因此当字长一定的条件下,必须合理地分配阶码和尾数的位数,以满足应用的需要。2/5/202348为了得到较高的精度和较大的数据表示范围,在很多机器中都设置单精度浮点数和双精度浮点数等不同的浮点数格式。单精度浮点数就是用一个字长表示一个浮点数。双精度浮点数是用二个字长表示一个浮点数。2/5/202349IEEE754浮点数标准二进制浮点数的表示,由于不同机器所选用的基值、尾数位长度和阶码位长度不同,因此对浮点数表示有较大差别,这就不利于软件在不同计算机间的移植。美国IEEE(电气及电子工程师协会)为此提出了一个从系统结构角度支持浮点数的表示方法,称为IEEE标准754(1EEE,1985),当今流行的计算机几乎都采用了这一标准。

2/5/202350(3)定点表示与浮点表示的比较1.在字长相同的条件下,浮点表示的数据范围大,精度高。2.浮点运算算法复杂,需要进行对阶(对齐小数点)与规格化,既有尾数运算又有阶码运算,算法复杂,所需设备量大,运算速度慢。2/5/2023513.2定点加减运算(1)补码运算的基础

[x+y]补=[x]补+[y]补

[x-y]补=[x]补+[-y]补即:两数补码之和等于两数和的补码两数补码之差等于两数差的补码2/5/202352以定点小数为例证明上述关系的正确性。(1)设x≥0,y≥0,则x+y≥0由补码定义:[x]补=x,[y]补=y,∴[x]补+[y]补=x+y=[x+y]补(2)设x≥0,y<0且|x|≥|y|由补码定义:[x]补=x,[y]补=2+y(mod2)∴[x]补+[y]补=2+x+y∵|x|≥|y|,∴x+y≥0[x+y]补=x+y∵2+x+y≥2∴[x]补+[y]补=x+y(mod2)即证得[x]补+[y]补=[x+y]补2/5/202353(3)设x≥0,y<0且|x|<|y|由补码定义:[x]补=x,[y]补=2+y(mod2)∴[x]补+[y]补=2+x+y∵|x|<|y|∴x+y<0因此[x+y]补=2+x+y=[x]补+[y]补

(mod2)2/5/202354(4)设x<0,y<0由补码定义:[x]补=2+x,[y]补=2+y(mod2)∴[x]补+[y]补=2+x+2+y=2+2+x+y根据定点数数据表示范围的要求,舍去模2,得[x]补+[y]补=2+x+y2/5/202355由于x<0,y<0∴x+y<0因而

[x+y]补=2+x+y=[x]补+[y]补当x<0,y≥0时,证明方法与(2)、(3)相同。到此得证:[x]补+[y]补=[x+y]补2/5/202356[x-y]补=[x]补+[-y]补∵[x+y]补=[x]补+[y]补∴[x]补+[-y]补=[x-y]补,所以只要证明[一y]补=-[y]补,则[x]补+[-y]补=[x-y]补证明:∵[x+y]补=[x]补+[y]补∴[y]补=[x+y]补-[x]补[x-y]补=[x]补+[-y]补∴[-y]补=[x-y]补-[x]朴2/5/202357因此:[y]补+[-y]补=[x+y]补+[x-y]补-[x]补-[x]补=[x+y+x-y]补-[x]补-[x]补=[x+x]补-[x]补-[x]补=[x]补+[x]补-[x]补-[x]补=0∴-[y]补=[-y]补2/5/202358补码运算的基本规则:①参加运算的各个操作数均以补码表示,运算结果仍以补码表示。②符号位与数值位一样参加运算。③若求和,则将两补码数直接相加,得到两数之和的补码;若求差,则将减数变补(由[y]补求[-y]补),然后与被减数相加,得到两数之差的补码。④补码总是对确定的模而言,若运算结果超过模(有从符号位上产生的进位),则将模自动丢掉。2/5/202359例1:x=+0.1001,y=+0.0101,求x±y=?解:[x]补=0.1001,[y]补=0.0101,

[-y]补=1.1011[x+y]补=[x]补+[y]补

=0.1001+0.0101=0.1110x+y=0.1110[x-y]补=[x]补+[-y]补

=0.1001+1.1011=0.0100x-y=0.01000.10010.0101+0.11100.10011.1011+0.01001丢模2/5/202360例2:x=+0.1010,y=+0.1001,求x+y=?解:[x]补=0.1010,[y]补=0.1001,[x+y]补=[x]补+[y]补

=0.1010+0.1001结果溢出0.10100.1001+1.00112/5/202361

如果两个正数相加,得到结果的符号为负;两个负数相加,得到的结果为正,则运算结果是错误的。造成错误的原因,是因为运算结果超出了机器所能表示的数据范围,数值位侵占了符号位,正确符号被挤走了。出现溢出后,机器将无法正确表示,因此必须正确判别溢出并及时加以处理。2/5/202362

(2)溢出判别a.根据进位判别b.采用变形补码运算2/5/202363a.根据两数相加时产生的进位判别设Cf为符号位上产生的进位,C1为最高数值位上产生的进位,则溢出的条件为:OVR=CfC1+CfC1=Cf⊕C1即若进入符号位的进位和从符号位上产生的进位不相等,则产生溢出。2/5/202364b.采用变形补码运算

使用一个符号位进行运算,当出现溢出时,正确的符号将被数值位侵占,符号位含义就会发生混乱。如果采用两个符号位进行运算,即使因出现溢出侵占了一个符号位,仍能保持最左边符号是正确的。变形补码:用两个符号位表示的补码。2/5/202365变形补码的形式:[x]变形补=Xf1Xf2.X1X2…Xn

设和的变形补码为[s]变形补=Sf1Sf2.S1S2…Sn

变形补码的溢出判断条件:

OVR=Sf1⊕Sf2即当结果的两个符号位不一致时,出现溢出。Sf1Sf2=00或11表示正常补码2/5/202366例1:x=+0.1010,y=+0.1001,求x+y=?解:[x]变形补=00.1010,[y]变形补=00.1001,[x+y]变形补=00.1010+00.100100.101000.1001+01.0011正溢出2/5/202367(3)补码加减运算实现电路一位全加器单元

2/5/202368行波进位的补码加/减法器电路2/5/202369M=0Bi通过异或门与0异或,Bi⊕0=Bi,C0=0作A+BM=1Bi通过异或门与1异或,Bi⊕1=Bi,C0=1作A-B电路中采用进位进行溢出判断。

OVR=Cf⊕C12/5/2023703.3定点乘法运算计算机中实现乘除运算常采用以下三种方式:⑴利用乘除运算子程序基本思想:采用软件实现乘除运算。通常是利用计算机中的加/减运算指令、移位指令及控制类指令组成循环程序,通过在运算器中的加法器、移位器等基本部件上的反复加/减操作,得到运算结果。这种方式所需硬件简单,但实现速度较慢,主要应用在早期的小、微型机上。2/5/202371⑵在加法器的基础上增加左、右移位及计数器等逻辑线路构成乘除运算部件基本思想:采用硬件实现乘除运算。在采用乘除运算部件实现乘除运算的计算机中,设置有乘除运算指令,用户只需执行乘除指令即可进行乘除运算。该方式实现乘除运算的速度比第一种方式快,但需要根据乘除算法构建乘除运算部件,所需的硬件线路较复杂。2/5/202372⑶设置专用的阵列乘除运算器方式⑵在实现乘除运算时,通常是在一个加法器的基础上,通过对操作数多次串行地进行运算、移位得到运算结果的,依然需要较多的运算时间。随着大规模集成电路技术的发展带来的硬件成本的降低,出现了专用的阵列乘除运算器。阵列乘除运算器将多个加减运算部件排成乘除运算阵列,依靠硬件资源的重复设置,同时进行多位乘除运算的乘除运算,赢得了乘除运算的高速度。2/5/202373

(1)原码乘法运算在定点机中,两个数的原码乘法运算包括:乘积的符号处理两数绝对值相乘设[x]原=xf.x1x2…xn[y]原=yf.y1y2…yn[Z]原=[x]原×[y]原=zf.z1z2…zn根据“同号相乘,乘积为正;异号相乘,乘积为负”,得符号运算的表达式为

zf=xf⊕yf。2/5/202374例:x=0.1101,y=0.1011求x×y=?2/5/202375

两个4位数相乘得8位乘积,共4个部分积需8位加法器相加。可见,两个n位数相乘得2n位乘积,共有n个部分积。2n位乘积需用2n位加法器进行相加运算。n位数相乘,需n个寄存器保存n个部分积。

显然所需硬件太多,不适合用硬件去实现,为此需对算法加以改进。2/5/202376a.一位原码乘法运算x×y=x×0.y1y2y3y4=x×(2-1y1+2-2y2+2-3y3+2-4y4)=x×(2-1y1+2-2y2+2-3y3+2-4y4)=2-1xy1+2-2xy2+2-3xy3+2-4xy4=2-1{2-3xy4+2-2xy3+2-1xy2+xy1}=2-1{2-1[2-2xy4+2-1xy3+xy2]+xy1}=2-1{2-1[2-1(2-1xy4+xy3)+xy2]+xy1}=2-1{2-1[2-1(2-1<0+xy4>+xy3)+xy2]+xy1}2/5/202377根据上式,可将乘法转换为一系列加法与移位操作。将递推公式推广到n位,得:Z0=0(初始部分积为0)Z1=2-1(Z0+xyn)Z2=2-1(Z1+xyn-1)…Zn=2-1(Zn-1+xy1)=x×y2/5/202378原码一位乘法的算法①

积的符号单独按两操作数的符号异或得到。用被乘数和乘数的数值部分进行运算。②以乘数的最低位作为乘法判别位,若判别位为1,则在前次部分积(初始部分积为0)上加上被乘数,然后连同乘数一起右移一位;若判别位为0,则在前次部分积上加0,然后连同乘数一起右移一位。③重复第②步直到运算n次为止。(n为乘数数值部分的长度)

2/5/202379部分积

乘数

yn

说明

0.00001011

初始部分积

Z0=0+0.1101

∵乘数yn=1,∴

加x;

0.11010.01101101

部分积与乘数同时右移一位;+0.1101

∵乘数yn=1,∴

加x;

1.00110.10011110

部分积与乘数同时右移一位;+0.0000

∵乘数yn=0,∴

加0;

0.10010.0100111

1

部分积与乘数同时右移一位+0.1101

∵乘数yn=1,∴

加x;

1.00010.10001111

部分积与乘数同时右移一位,运算了4次,计算结束。2/5/202380原码一位乘法的硬件实现2/5/202381b补码一位乘法

虽然原码乘法比补码乘法容易实现,但因为补码加减法简单,在以加减运算为主的通用机中操作数都用补码表示,所以这类计算机在做乘法时常使用补码乘法。1.校正法校正法是将[X]补和[Y]补按原码规则运算,所得结果根据情况再加以校正,从而得到正确的[X×Y]补。2/5/202382补码乘法的统一表达式:

[X×Y]补=[X]补×(0.Y1Y2…Yn)+[-X]补×Ys2/5/2023832.比较法——Booth乘法

在较正法公式的基础上,进行变换,得:递推公式:

[Z0]补=0[Z1]补=2-1{[Z0]补+(Yn+1-Yn)[X]补}[Z2]补=2-1{[Z1]补+(Yn-Yn-1)[X]补}

┇[Zn]补=2-1{[Zn-1]补+(Y2-Y1)[X]补}

∴[X×Y]补=[Zn]补+(Y1-Ys)[X]补

2/5/202384Booth乘法规则:

⑴参加运算的数用补码表示;⑵符号位参加运算;⑶乘数最低位后面增加一位附加位Yn+1,其初值为0;⑷由于每求一次部分积要右移一位,所以乘数的最低两位Yn、Yn+1的值决定了每次应执行的操作;

⑸移位按补码右移规则进行;⑹共需做n+1次累加,n次移位,第n+1次不移位。2/5/202385判断位YnYn+1操作

00原部分积右移一位

01原部分积加[X]补后右移一位

10原部分积加[-X]补后右移一位

11原部分积右移一位2/5/202386C快速乘法运算随着大规模集成电路技术的发展,为提高乘法的运算速度,出现了阵列乘法器。1.不带符号的阵列乘法器设有两个不带符号的二进制整数:A=a3a2a1a0B=b3b2b1b0按手算方法有:2/5/2023872/5/202388阵列乘法器的基本思想

为避免重复的相加与移位操作,提高乘法运算速度,将大量的加法器单元电路按一定的阵列形式排列起来,直接实现乘法算式。2/5/2023894×4位无符号数阵列乘法器的逻辑原理图2/5/2023902.带符号的阵列乘法器带符号的阵列乘法器由不带符号的阵列乘法器和求补器构成。带符号阵列乘法器可以实现原码乘法,也可以实现补码乘法。2/5/2023912/5/202392在原码乘法中,不用算前求补器与算后求补器,直接把两数绝对值送入乘法阵列计算,得到2n位乘积绝对值,再根据异或门输出值带入符号,即得到乘积的原码。在补码乘法中,由两个算前求补器先将两个补码数转换为两数绝对值,再送入不带符号的乘法阵列计算,得到2n位乘积绝对值。然后根据异或门输出值控制算后求补器求补,得到2n+1位的补码形式的乘积。2/5/202393=1&E≥1=1&≥1=1&≥1=1&C-1=0对2求补器逻辑电路图C0C1C22/5/2023943.4定点除法运算

除法运算的处理思想与乘法运算的处理思想相似,其常规算法也是转换成若干次“加减—移位”循环来实现。由于定点运算的结果不应超过机器的所能表示的数据范围,所以为了不使商产生溢出,在进行定点除法时应满足:

对定点小数要求:

|被除数|<|除数|

对定点整数要求:|被除数|>|除数|

2/5/2023953.4.1原码除法运算例:x=0.1011,y=0.1101求x/y∴商q=0.1101余数

r=0.000001112/5/202396上面的笔算过程可叙述如下:1.判断x是否小于y?现在x<y,故商的整数位商“0”,x的低位补0,得余数r0。2.比较r0和2-1y,因r0>2-1y,表示够减,小数点后第一位商“1”,作r0-2-1y,得余数r1。3.比较r1和2-2y,因r1>2-2y,表示够减,小数点后第二位商“1”,作r1-2-2y,得余数r2。2/5/2023974.比较r2和2-3y,因r2<2-3y,不够减,小数点后第三位商“0”,不作减法,得余数r3(=r2)。5.比较r3和2-4y,因r3>2-4y,表示够减,小数点后第四2位商“1”,作r3-2-4y,得余数r4,共求四位商,至此除法完毕。2/5/202398在计算机中可参照手算过程实现除法,但需解决的问题有:(1)在手算过程中,余数和除数的大小比较是通过心算得到,而在计算机实现中要增加比较电路。(2)可以通过减法进行余数和除数的比较,若结果为正,表示够减,商1;但若减的结果为负,表示不够减,上商为0,但余数已经减去了,下一步该如何处理?2/5/202399(3)如果每次减法均采用余数不动,低位补0,再与右移一位后的除数相减,则所需的加法器必须是除数的两倍,这将使加法器的规模增大。(4)在手算过程中,上商是从高位向低位逐位求的,而在计算机中要求把每位商直接写到寄存器的不同位是较难控制的。2/5/2023100实际计算机实现除法时,一般采用:①通过做减法来进行比较余数和除数的比较,即用余数(初值为被除数)减去除数,若减得结果为正,表示够减,上商为1;若减得结果为负,表示不够减,上商为0。②采用恢复余数法或不恢复余数法解决余数减去除数后不够减的问题。2/5/2023101③在余数不动,低位补0,再与右移一位后的除数相减的操作中,用左移余数方法代替右移除数操作。这样操作,实际运算结果是一样的,但对线路结构更有利。不过这样操作所得到的余数不是真正的余数,必须将它乘上2-n才是真正的余数。④为了便于控制,可以在运算过程中通过将每次得到的商直接写到寄存器的最低位并与前面运算所得到部分商一起左移一位的方法实现商的定位。2/5/20231021.原码恢复余数法

原码恢复余数法算法:(定点小数)①判溢出,要求|被除数|<|除数|;②符号位单独按两数符号的异或求得;③被除数减去除数;④若所得余数为正,表示够减,相应位上商为1,余数左移一位(相当于除数右移)减去除数;若所得余数为负,表示不够减,相应位上商为0,余数加上除数(恢复余数),再左移一位减去除数;2/5/2023103⑤重复第④步,直到求得所要求的商的各位为止。例:x=-0.1011y=+0.1101用原码恢复余数法求x/y.解:|x|=00.1011|y|=00.1101[-|y|]补=11.0011

2/5/20231042/5/2023105得商|q|=0.1101,余数|r|=0.0111商的符号qf=xf⊕yf=1⊕0=1∴商[q]原=1.1101余数[r]原=1.0111×2-4注意:余数符号与被除数符号相一致。2/5/2023106在恢复余数法中:余数为正时,需作余数左移、相减,共两步操作;余数为负时,需作相加、左移、相减,三步操作。由于操作步骤的不一致,控制复杂。且恢复余数的过程也降低了除法速度。因此在实际应用中,很少采用恢复余数法。2/5/20231072.原码不恢复余数法(加减交替法)

在恢复余数法中,若某次余数ri<0,它的操作是相加(恢复余数)→左移→减除数,结果是2(ri+y)-y。把它变换一下,即

2(ri+y)-y=2ri+2y-y=2ri+y

2/5/2023108

将原码恢复余数法中余数ri<0时的操作——相加、左移、相减三步,用左移、相加两步来代替。这样:余数为正,左移,减除数;

余数为负,左移、加除数。2/5/2023109原码不恢复余数法算法①判溢出,若|被除数|≥|除数|,则除法将发生溢出,不能进行除法运算;②商的符号单独按两个操作数符号异或求得;③被除数减去除数;2/5/2023110④若所得余数为正,够减,相应位上商为1,将余数左移一位减去除数;若所得余数为负,不够减,相应位上商为0,将余数左移一位加上除数;⑤重复第④步,直到求得所要求的商的各位为止。2/5/2023111在原码不恢复余数法中,如果最后一次所得余数仍为负,表示不够减,这时需要再做一次加除数的操作,以便得到正确的余数。2/5/2023112例

x=0.10101,y=0.11110,用原码不恢复余数法求x/y。解:|x|=00.10101|y|=00.11110[-|y|]补=11.000102/5/2023113余数上商说明

00.101010.00000初始余数为被除数,初始商为0+11.00010

减y11.101110.00000

余数为负,上商为011.011100.00000左移一位+00.11110

加y00.011000.00001

余数为正,上商为100.110000.00010左移一位+11.00010

减y11.110100.00010

余数为负,上商为011.101000.00100左移一位+00.11110

加y00.100100.00101

余数为正,上商为101.001000.01010左移一位+11.00010

减y00.001100.01011

余数为正,上商为100.011000.10110左移一位+11.00010

减y11.011100.10110

余数为负,上商为0+00.11110

最后一步,余数为负,加y恢复余数

00.011002/5/2023114商符qf=xf⊕yf=0⊕0=0商:|x/y|=0.10110x/y=0.10110余数:r=0.01100×2-52/5/2023115原码不恢复余数法的硬件实现2/5/2023116

A寄存器:存放被除数,最终结果是余数。

B寄存器:存放除数。

C寄存器:存放被除数,最终结果是商。运算过程中寄存器A、C联合左移。商的符号Cf:Cf=Af⊕Bf上商由加法器Ff控制,Ff=0,为正,上商为1,且控制进行A+B+1操作;Ff=1,为负,上商为0,控制进行A+B操作2/5/2023117以上算法同样适用于定点整数除法。实现定点整数除法时,注意要满足|被除数|>|除数|,且被除数的高n位要比n位除数小,否则即为溢出。在实现定点小数和定点整数除法时,寄存器的分配使用略有不同。2/5/20231183.4.2并行除法器(阵列除法器)与阵列乘法器相类似,利用大规模集成电路技术,可制成阵列除法器组件。阵列除法器:利用若干个加减单元组成阵列,并行操作,从而提高除法运算速度。2/5/20231191.可控加减单元(CAS)的逻辑框图2/5/2023120当控制信号P=0时,CAS作为全加器单元;当P=1时,输入Bi被变反,CAS作为减法单元。设:被除数x=0.x1x2x3x4x5x6

除数y=0.y1y2y3

商q=0.q1q2q3

余数R=0.00r3r4r5r6

用CAS单元组成的6位除3位不恢复余数法的阵列除法器框图如下。2/5/20231212/5/2023122(1)因为最上面一行所执行的初始操作经常是减法,所以最上面一行的控制线P固定置成1。减法是用2的补码运算实现的,这时右端各CAS单元上的反馈线用作初始的进位输入,即最低位上加1。(2)每一行最左边的CAS单元的进位输出决定着商的数值。2/5/2023123(3)在不恢复余数阵列除法器中,若余数为正,表示够减,上商为1,将除数右移作减法;若余数为负,表示不够减,上商为0,将除数右移作加法。(4)将当前的商反馈到下一行,就可确定下一行的操作是加法还是减法。2/5/2023124例:x=0.101001,y=0.111,求x/y解:[-y]补=1.001经运算得:商q=q0.q1q2q3=0.101

余数r=0.000110具体运算见下:2/5/20231250.1010011.001+[-y]补

1.110001<0q0=00.0111+[y]补

0.001101>0q1=11.11001+[-y]补

1.111111<0q2=00.000111+[y]补0.000110>0q3=1被除数x减除数Y,即+[-y]补余数为负,商0,除数右移加余数为正,商1,除数右移减余数为负,商0,除数右移加余数为正,商12/5/20231263.5定点运算器的组成运算器是CPU的重要组成部分,尽管各种计算机的运算器不尽相同,但它们的最基本结构中必须有算术/逻辑运算单元(ALU)。2/5/2023127(1)多功能算术/逻辑单元算术逻辑运算单元(简称ALU)就是一种以加法器为基础的多功能组合逻辑电路。其基本设计思想是:在加法器的输入端加入一个函数发生器,这个函数发生器可以在多个控制信号的控制下,为加法器提供不同的输入函数,从而构成一个具有较完善的算术逻辑运算功能的运算部件。2/5/20231282/5/2023129

74181电路

SN74181是一个4位ALU组件,它可以实现16种算术运算功能和16种逻辑运算功能,其具体功能由S3、S2、S1、S0和M信号控制实现。

SN74181有正逻辑和负逻辑两种芯片,图3-4给出了采用负逻辑方式工作的SN74181芯片的外部特性。2/5/20231302/5/2023131其中A3~0、B3~0为参加运算的两组4位操作数;Cn为低位来的进位;F3~0为输出的运算结果;Cn+4为向高位的进位;G为小组本地进位;P为小组传递函数;A=B用于输出两个操作数的相等情况,如果将多个74181的“A=B”端按“与”逻辑连接,就可以检测两个字长超过4位的操作数的相等情况。在控制信号中,S3S2S1S0用于控制产生16种不同的逻辑函数;M用于控制芯片执行算术运算还是逻辑运算,若M=0,则允许位间进位,执行算术运算;若M=1,则封锁位间进位,执行逻辑运算。2.74181功能表2/5/20231322/5/2023133(2)定点运算器基本结构

运算器结构的基本组成部分:包括ALU、寄存器、多路开关和数据总线等基本逻辑部件。运算器设计主要是围绕着ALU和寄存器同数据总线之间如何传送操作数和运算结果而进行的。

2/5/2023134单总线结构运算器单总线结构运算器:所有部件都接在同一总线上。在同一时间内,只能有一个操作数放在单总线上,所以需要A、B两个缓冲器。执行双操作数运算的操作步骤:①把一个操作数送入A缓冲器。②把另一操作数送入B缓冲器,只有两个操作数同时出现在ALU的输入端时,ALU才能正确执行相应运算,并将运算结果送上单总线。2/5/2023135③把结果存入目的寄存器中。单总线结构运算器的主要缺点是操作速度慢。2/5/2023136单总线结构运算器2/5/2023137双总线结构运算器双总线结构运算器:操作部件连接在两组总线上。执行双操作数运算的操作步骤:①两个操作数同时加到ALU输入端进行运算,一步完成操作并得到结果。但ALU输出不能直接加到数据总线上,需要用输出缓冲器暂存运算结果。②把结果从缓冲器中传送到目标寄存器中。双总线结构运算器的执行速度比单总线结构运算器的执行速度快。2/5/2023138双总线结构运算器2/5/2023139三总线结构运算器三总线结构运算器:操作部件连接在三组总线上。执行双操作数运算的操作步骤:由于三总线结构运算器有三组总线,能够分别接收两个操作数和ALU结果,因此只需一步就可完成一次双操作数运算。与前两种结构的运算器相比较,三总线结构运算器的操作速度最快,不过其控制也更复杂。2/5/2023140三总线结构运算器2/5/2023141运算器实验(实验一)介绍1.实验目的(1)了解运算器的组成结构,学习运算器的设计方法。(2)掌握简单运算器的数据传送通路。(3)验证运算功能发生器(74LS181)的组合功能,验证移位控制的组合功能。2/5/20231422.实验仪器

TDN-CM+计算机组成原理教学实验系统一台,排线若干。

3.实验中的运算器通路图2/5/20231432/5/2023144图中运算器由两片74LS181以并/串形式构成8位字长的ALU。运算器的输出经过一个三态门(74LS245)和数据总线相连,运算器的两个数据输入端分别由两个锁存器(74LS273)锁存,锁存器的输入连至数据总线,数据开关(INPUTDEVICE)用来给出参与运算的数据,并经过一三态门(74LS245)和数据总线相连,数据显示灯(BUSUNIT)已和数据总线相连,用来显示数据总线内容。2/5/20231454.实验步骤(1)按实验指导书图连接实验线路,仔细查线无误后,接通电源。(2)用二进制数码开关向DR1和DR2寄存器置数。具体操作步骤:向DR1置数(00000100):设置输入开关(置数)ALU-B=1SW-B=0LDDR1=1LDDR2=0kk2+2/5/2023146向DR2置数(00000011):设置输入开关(置数)ALU-B=1SW-B=0LDDR1=0LDDR2=1kk2+ALU-B:取低电平时,运算结果输出到总线。SW-B:取低电平时,开关上的数据通过三态门进入内总线。。2/5/2023147LDDR1、LDDR2:锁存器控制端,当为高电平,且T4脉冲到来时,总线上的数据锁存至DR1或DR2。Kk2+:即T4脉冲。(3)改变运算器的功能设置,观察运算结果a.SW-B=1、ALU-B=0(为什么?)b.根据运算要求查74LS181功能表设置S3、S2、S1等,观察数据显示灯的结果是否与期望的一致。(要求做加法、减法、异或运算)2/5/2023148移位运算实验按实验指导书上的步骤,将移位寄存器的初始置设为01101011,按功能表验证循环右移、带进位循环右移、循环左移、带进位循环左移。2/5/2023149实验报告格式(1)实验目的(2)实验设备(3)实验原理(4)实验步骤(5)实验结果与分析2/5/20231503.6浮点运算方法

浮点运算表示数据范围大,有效精度高,适合于科学与工程计算的需要。浮点运算复杂,硬件成本高,运算速度慢。在浮点运算中,阶码与尾数的运算分别进行,与定点运算类似。但增加了阶码的定点运算和结果的规格化处理。浮点运算分为规格化运算和非规格化运算两类。

2/5/20231513.6.1浮点加减运算设有两个浮点数x与y,分别为

其中Sx、Sy分别为数x、y的尾数,ex、ey分别为数x、y的阶码。两个浮点数加减运算的步骤1.对阶把两数的小数点对齐,称为对阶。2/5/2023152对阶时,首先应求出两数阶码之差,即

若△e=0,表示两数阶码相等,小数点已经对齐;若△e>0,表示ex>ey;若△e<0,表示ex<ey;

对阶的基本方法是:小阶向大阶看齐,即将阶码小的数的尾数向右移位,每右移一位,阶码加1,直到两数的阶码相等为止。右移位数等于两数阶码之差|△e|。2/5/20231532.尾数求和/差对阶完毕,两数阶码相等,即可对其尾数进行加/减运算。尾数运算的规则与定点加/减运算规则相同。2/5/20231543.结果规格化在规格化浮点运算中,若运算结果不是规格化数,必须进行规格化处理。原码表示中,满足1/2≤|S|<1的数为规格化数.

补码表示中,满足一1≤S<-1/2和1/2≤S<1的数为规格化数.

规格化可分为:向左规格化与向右规格化

2/5/20231554.舍入

为减少对阶和向右规格化时,因尾数右移而造成的误差,可进行舍入处理。舍入的原则:⑴误差不超过所允许的范围,一般要求不超过最

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论