大学计算机组成原理-第3章、运算方法与运算器_第1页
大学计算机组成原理-第3章、运算方法与运算器_第2页
大学计算机组成原理-第3章、运算方法与运算器_第3页
大学计算机组成原理-第3章、运算方法与运算器_第4页
大学计算机组成原理-第3章、运算方法与运算器_第5页
已阅读5页,还剩82页未读 继续免费阅读

下载本文档

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

文档简介

1

第三章、运算方法与运算器

Outline 定点补码加/减法运算定点乘法运算浮点运算运算器组织运算器部件举例2

3.1定点补码加/减法运算定点补码的加减法运算

[X]补+[Y]补=[X+Y]补

[X]补

-[Y]补=[X]补+[-Y]补=[X-Y]补

-[Y]补=[-Y]补(规则来源于补码的特点,也即模运算的特点。存在模运算与溢出的关系问题)30.111+1.100=10.011(0.875-0.5=0.375)(多出一位丢掉)√

0.111+0.010=1.001(0.875+0.25=1.125)(机器得到-0.875)

1.001+1.100=10.101(-0.875-0.5=-1.325)(机器得到+0.625)结论:运算的实际结果没有超出字长可以表示的数值范围,取模的结果是正确。超出范围则溢出,出现错误。判断方法:正+正得负或负+负得正注意:模运算与溢出的关系

(例如,4位2进制运算器):

4补码加法的几种情况及其溢出检测0.10101+0.010000.11101

0.10101+0.11000.01101

11.10101+1.110001.01101

11.00101+1.11000.11101

01正正得负,正溢出负负得正,负溢出正常结果符号位进位舍去,正常结果计算机如何识别运算结果是否溢出Cf=0,C1=0Cf=1,C1=1Cf=0,C1=1Cf=1,C1=0符号位进位Cf(C0)

,最高位进位C15CfC1V000110101011单符号数溢出检测溢出信号V对应的真值表V=Cf⊕C16双符号数溢出检测00.10101+00.0100000.11101

00.10101+00.11000.01101

0111.10101+11.1100011.01101

111.00101+11.11000.11101

101非正常符号位,溢出符号位进位舍去,正常结果正常结果非正常符号位,溢出f1f2Sf1Sf2

V

Sf1

⊕Sf27加法运算的逻辑实现

[X]补=X0X1………Xn

[Y]补=Y0Y1…….…Yn+?0?1…….…?n多位加法运算依赖于各位逐位相加的运算,所以我们先讨论一位全加器8一位全加器输入:

加数Ai

、Bi

、低位进位输入Ci+1输出:

和数Si

,进位输出CiAiBiCi+1SiCi00000001100101001101100101010111001111119一位加法器逻辑表达式注意:逻辑表达式可以变形,故电路形式不是唯一的。i+1iiiiiCBABAC)(Å+=i+1iiiCBASÅÅ=10典型门电路&AB≥1AB=1AB1A&AB≥1AB=1AB与非或非非与或异或异或非11一位全加器逻辑电路实现FASiAi

BiCi+1Ci一位全加器一位全加器时间延迟i+1iiiiiCBABAC)(Å+=Ci+1

AiBiSiCiFA12CCn+1CnC2C1C0x0y0x1y1xn-1yn-1xnyns0s1sn-1sn…Cn-1Σ0Σ0Σ1Σn-1ΣnV双符号补码加/减器电路实现MM由汇编语言中的加法指令add,以及sub等产生1、N个合起来;2、M控制加减;3、串行行波加法器13快速加法器能否提前产生各位的进位输入使得各位的加法运算能并行起来提高多位加法器运算速度14并行加法器进位链Si=Xi⊕Yi⊕Ci+1Ci=Ci+1(Xi⊕Yi)+XiYiGi=

XiYiPi=Xi⊕YiGi进位产生函数/本地进位Pi进位传递i函数,进位传递条件Ci=

Gi+PiCi+115并行加法器进位链Cn=

XnYn+(Xn⊕Yn)Cn+1=Gn+PnCn+1Cn-1=

Xn-1Yn-1+(Xn-1⊕Yn-1)Cn=Gn-1+Pn-1CnCn-2=

Xn-2Yn-2+(Xn-2⊕Yn-2)Cn-1=Gn-2+Pn-2Cn-1C2=

X2Y2+(X2⊕Y2)C3=G2+P2C3……C1=

X1Y1+(X1⊕Y1)C2=G1+P1C2高位的运算依赖于低位运算进位的产生,计算不能并行能否提前得到当前位的进位输入,这样就可以完全并行,大大提高运算速度16并行加法器进位链Cn=

XnYn+(Xn⊕Yn)Cn+1=Gn+PnCn+1Cn-1=

Gn-1+Pn-1Cn=

Gn-1+Pn-1(Gn+PnCn+1)

=

Gn-1+Pn-1

Gn+Pn-1PnCn+1Cn-2=Gn-2+Pn-2Cn-1=Gn-2+Pn-2(Gn-1+Pn-1

Gn+Pn-1PnCn+1)=

Gn-2+Pn-2Gn-1+Pn-2Pn-1

Gn+Pn-2Pn-1PnCn+1……C2=

G2+P2G3+P2P3G4

…+P2P3…PnCn+1C1=

G1+P1G2+P1P2G3

+P1P2P3G4…+P1P2…PnCn+117X4Y4G4P4X3Y3G3P3X2Y2G2P2X1Y1G1P1C1C2C3C4C518先行进位电路CLA74182

先行进位的多功能算术/逻辑运算单元ALU74181G1P1G2P2G3P3G4P4与门异或门电路CLA74182G1P1G2P2G3P3G4P4C1

C2C3C4⊕

X1Y1X2Y2X3Y3X4Y4C5

S1S2S3S4⊕

Si=Xi⊕Yi⊕Ci+119C516位组内先行进位,组间串行进位

ALU74181

X1Y1X2Y2X3Y3X4Y4C5P1*

G1*C1S1S2S3S4

ALU74181

X1Y1~X4Y4P1*

G1*C1S1~S4

ALU74181

X5Y5~X8Y8C9P2*

G2*S5~S8

ALU74181

X9Y9~X12Y12C13P3*

G3*S9~S12

ALU74181

X13Y13~X16Y16C17P4*

G4*S13~S16C1=

G1+P1G2+P1P2G3

+P1P2P3G4…+P1P2…PnCn+1成组进位发生输出G1*,成组进位传送输出P1*2016位组内先行进位,组间先行进位P*

G*

P1G1C2P2G2C3P3G3C4P4G4CLA(74182)C5C1C5

ALU74181

X1Y1~X4Y4P1*

G1*S1~S4

ALU74181

X5Y5~X8Y8C9P2*

G2*S5~S8

ALU74181

X9Y9~X12Y12P3*

G3*S9~S12

ALU74181

X13Y13~X16Y16C17P4*

G4*S13~S16C1332/64位?21Outline 定点补码加/减法运算定点乘法运算浮点运算运算器组织运算器部件举例223.2

定点乘法运算原码乘法运算方法原码乘法运算实现补码乘法运算方法补码乘法运算实现23a3b1a2b1a1b1a0b1a4b1a3b2a2b2a1b2a0b2a4b2a3b3a2b3a1b3a0b3a4b3a3b4a2b4a1b4a0b4a4b4a4b0a3b0a2b0a1b0a0b0p9p8p7p6p5p4p3p2p1p0

p9p8p7p6p5p4p3p2p1p0a4a3a2a1a0

xb4b3b2b1b0+

多位乘法必须先计算一位乘法,然后累加求和24乘法运算实现方法执行乘法运算子程序实现乘法运算设置专用乘法器实现乘法运算借助加法器配置相应部件实现乘法运算25乘法器一位乘法电路实现S=X*Y一个与门就可以实现一位乘法111001010000OutputYiXi26符号位直接异或即可得到乘积的符号仅仅需要考虑其数值部分的计算以定点小数为例进行讨论多位原码乘法27相加数产生部件…………a4b4a1b0a0b0A=0.a4a3a2a1a0B=0.b4b3b2b1b0&&&

经过一级门电路延迟,即可得到所有的相加数28a3b2a2b2a1b2a0b2a4b2a3b3a2b3a1b3a0b3a4b3a3b4a2b4a1b4a0b4a4b4a4b0a3b0a2b0a1b0a0b0p8p2p1p05位无符号数阵列乘法器电路00a1b1a0b1a3b1a2b1a4b1p6

p7p30p40p50COUTCOUTCOUTp9COUT29p8p2p1p05位无符号数阵列乘法器电路a3b2a2b2a1b2a0b2a4b2a3b3a2b3a1b3a0b3a4b3a4b0a3b0a2b0a1b0a0b0a1b1a0b1a3b1a2b1a4b1p6p7p3p4p5p900a3b4a2b4a0b4a4b4a1b400030nn位原码乘法器框图相加数产生部件A=af.

an1an2…a1a0B=bf.

bn1bn2…b1b0……n×n乘法阵列an1bn1…a1b0a0b0Pf=1.…P2n1P2n2P2n3P1P031p8p2p1p0a3b2a2b2a1b2a0b2a4b2a3b3a2b3a1b3a0b3a4b3a4b0a3b0a2b0a1b0a0b0a4b1p6p7p3p4p5p90a3b4a2b4a0b4a4b4a1b4a1b1a0b1a3b1a2b100004*5个全加器,8个全加器延迟32原码阵列乘法器时间延迟n(n-1)个FA延迟时间(n-1)FA+(n-1)FA每一个FA包含三级门电路延迟T故总延迟为2(n-1)*3T+T(相加数产生时间)33补码乘法器原理图[B]补=bf.bn1…

b1b0乘法阵列(同前n×n阵列)…2n位求补器数值同原码相加数积绝对值P2n1P1P0(补码乘积)=1…Pf.[A]补=af.an1…

a1a0相加数产生电路(同前)n位求补器n位求补器34乘法运算实现方法执行乘法运算子程序实现乘法运算设置专用乘法器实现乘法运算借助加法器配置相应部件实现乘法运算原码一位乘法的运算方法与逻辑实现补码一位乘法的运算方法与逻辑实现35a3b2a2b2a1b2a0b2a4b2a3b3a2b3a1b3a0b3a4b3a3b4a2b4a1b4a0b4a4b4a4b0a3b0a2b0a1b0a0b0p8p2p1p05位无符号数阵列乘法器电路00a1b1a0b1a3b1a2b1a4b1p6

p7p30p40p50COUTCOUTCOUTp9COUT36a3a2a1a0a400000a3a2a1a0a4a4a3a2a1a0p8p2p1p05位无符号数阵列乘法器电路0000000p6

p7p30p40p50COUTCOUTp9COUT

0.p9p8p7p6p5p4p3p2p1p0

0.a4a3a2a1a0x0.1

0

1

0

1

COUT37a3a2a1a0a400000a3a2a1a0a4a4a3a2a1a0p8p2p1p05位无符号数阵列乘法器电路0000000p6

p7p30p40p50COUTCOUTCOUTp9COUTΣ=XYn

Σ+=XYn-1

Σ

右移一位Σ+=XYn-2

Σ

右移一位Σ+=XYn-3

Σ

右移一位38部分积累加的数学表示部分积=XYn部分积=XYn-1+XYn2-1部分积=XYn-2+(XYn-1+XYn*2-1)2-1

=XYn-2+XYn-12-1+

XYn2-2=XY12-1+XY22-2+…XYn2-nX*Y=X[Y12-1+Y22-2+…Yn2-n]39开始i=0,0→∑Yn=1∑+0→∑∑+X→∑∑Y右移一位i+1→ii=nX0⊕Y0→P0结束YNNY原码乘法算法流程图

40例子已知X=0.1101Y=-0.1011计算[X]原[Y]原4100.000000.1101+00.110100.011000.1101部分积01.0011100.10011100.000000.10011100.010011100.110101.000111100.10001111乘数1Y0Y0.1011Y0.101Y0.10判断位说明P0=0Y4=1,+|X|右移一位得P1Y4=1,+|X|右移一位得P2Y4=0,+0右移一位得P3Y4=1,+|X|右移一位得P4=|X|·|Y|+Y0.1++42原码乘法逻辑结构Σ→R0+1计数器移位控制加法器ΣX0

被乘数XR2&&R0部分积∑计数器R1乘数Y

Yn∑=∑+YnX控制电路4301011部分积R0乘数R1Yn判断位01011101011101011101

|X|=0.1101,

|Y|=0.1011+|X|+|X|+

0+|X|111100000001101011010011001101100110100100000010010010001101100010100044部分积累加的数学表示部分积=XYn部分积=XYn-1+XYn*2-1部分积=XYn-2+(XYn-1+XYn*2-1)2-1

=XYn-2+XYn-12-1+

XYn*2-2=XY1*2-1+XY2*2-2+…XYn*2-nX*Y=X[Y1*2-1+Y2*2-2+…Yn*2-n]45补码一位乘法1)被乘数[X]符号任意,乘数[Y]为正[X]补=X0.X1X2…Xn

[Y]补=0.Y1Y2…Yn

[X]补[Y]补=(2+X)Y

=(2n+1+X)Y=2n+1Y+XY=22n

0.Y1Y2…Yn+XY=2(Y1Y2…Yn)+XY=2+XY=[XY]补[XY]补=

[X]补[Y]补46补码一位乘法1)被乘数[X]符号任意,乘数[Y]为负数[X]补=X0.X1X2…Xn

[Y]补=1.Y1Y2…Yn

[Y]补=2+YY=[Y]补-2=0.Y1Y2…Yn-1[XY]补=[X(0.Y1Y2…Yn-1)]补

=[X0.Y1Y2…Yn-X]补

=[X0.Y1Y2…Yn]补-[X]补

=[X]补

0.Y1Y2…Yn-[X]补

=[X]补

0.Y1Y2…Yn-Y0[X]补47补码一位乘法[XY]补=[X]补

0.Y1Y2…Yn-Y0[X]补

=[X]补(-Y0+0.Y1Y2…Yn)

=[X]补(-Y0+Y12-1+Y22-2+…Yn2-n)=[X]补[-Y0+(Y1-Y12-1)+(Y22-1-Y22-2)+…(Yn2-n+1-Yn2-n)]=[X]补[Y1-Y0+(Y2-Y1)2-1+(Y3-Y2)2-2+…(0-Yn)2-n]XY=X[Y12-1+Y22-2+…Yn2-n]原码乘法48开始i=0,0→∑YnYn+1=?∑

+[X]补→∑∑+[X]补→∑结束011000或11YN∑不变∑、[Y]补右移一位i+1i=n+149例子已知X=1.0101Y=1.0011计算[X]补[Y]补解:[-X]补=0.10115000.000000.1011+00.101100.010100.0000部分积00.0101100.00101111.010111.01111111.101111100.000011.101111111.1101111100.1011乘数11.01.001101.00111.001判断位说明Yn+1=0YnYn+1=10,加[–X]补右移一位得P1末2位为11,+0右移一位得P2末2位为01+[X]补右移一位得P3末2位为00+0右移一位得P4末2位为10–[-X]补+1.00+++00.1000111151补码一位乘法逻辑结构移位控制R1乘数[Y]补YnYn+100/110110&1=1YnYn+1R2被乘数[X]补加法器CR0部分积∑∑=2-1∑+(Yn+1-Yn)[X]补52定点补码加/减法运算定点乘法运算浮点运算运算器组织运算器部件举例Outline 53浮点加减法运算计算X+Y=?

求解:如:Ex=EyS=2Ex×(Mx+My)

如:Ex≠Ey?????假设:54对阶对阶(使得小数部分可以按位权值按位相加)大阶对小阶还是小阶对大阶???210*(0.11000)+28*(0.00110)大阶对小阶210*(0.11000)--28*(11.000)

11.000+0.00110

?????????

小阶对大阶28*(0.00110)--210*(0.00001)0.00001+0.11000=0.11001对阶过程应该是小阶对大阶尾数右移55尾数运算Ex=Ey满足后

S=2Ex(Mx+My)56运算结果规格化210*(0.11000)也可表示为211*(0.01100)为提高精度,尾数不为零的时,要求其绝对值大于1/2,即尾数最高有效位为1,否则要以修改阶码的方式同时左右移小数点,使其变成这一要求的表示形式,这个过程称为浮点数的规格化同一个浮点数的编码唯一将运算结果右移以实现规格化表示称为向右规格化,右归将运算结果左移以实现规格化表示称为向左规格化,左归57规格化形式规格化数形式0.1XXXX-0.1XXXX补码规格化形式00.1XXXX11.0XXXX补码非规格化数00.0XXXX11.1XXXX01.XXXXX10.XXXXX5800.0XXXX

--

00.1XXX0

左规11.1XXXX

--

11.0XXX0

左规01.XXXXX

--

00.1XXXX

右规10.XXXXX

--

11.0XXXX右规

连符号位一起移位规格化方法计算机在表示浮点数时,通常进行向左规格化处理上溢的时候,右归下溢的时候,左归59向左规格化尾数左移一位,阶码减1111000011110000111000010尾数左移两位,阶码减200001001000010010010010060尾数连同符号位进位位右移一位,阶码加1011000110110001100110001尾数连同符号位进位位右移一位,阶码加1101000111010001111010001向右规格化61规格化规则小结运算结果产生溢出时,必须进行右归如出现10.XX或者01.XXX如结果出现00.0XXX或11.1XX必须左归左归时最低数据有效位补0右归时连同符号位进位位一起右移左归时,阶码作减法,右归时,阶码作加法62舍入处理右规后低位部分丢失了一位,这会对数产生一定的误差011000110011000110舍1入法如被丢的最高数位为0,舍去,如为1,则将尾数末位加一截去法63溢出处理尾数上溢右归尾数下溢左归阶码上溢正无穷和负无穷阶码下溢064浮点数加减法五个基本步骤对阶尾数求和规格化(左规,右规)舍入(截去、0舍1入)检查溢出65例1

两浮点数x=2101×0.11011011,

y=2111×(-0.10101100)。假设尾数在计算机中以补码表示,可存储10位尾数,2位符号位,阶码以补码表示,双符号位,求x+y。解:将x,y转换成浮点数据格式

[x]浮

=00101,00.11011011[Y]浮

=00111,11.01010011+100111,11.01010100步骤1:对阶,阶差为Ex-Ey-Ey=11000+1=11001Ex-Ey=00101+11001=11110=-2<0Ex-Ey<0Ex<Ey小阶对大阶,

X阶码加2X尾数右移2位66[x]浮

=00111,00.00110110(11)

步骤2:尾数求和

[X+Y]浮=00111,00.00110110(11)+00111,11.01010100=00111,11.10001010(11)67步骤3:计算结果规格化

[X+Y]浮为非规格化数,左归一位,阶码减一,

00110,11.00010101(1)步骤4:舍入处理

[X+Y]浮=00110,11.00010110(0舍1如法)[X+Y]浮=00110,11.00010101(截去法)步骤5:溢出判断无溢出

[X+Y]浮=2110x(-00.11101011)68浮点数乘法运算如:X=2mMxY=2nMyXY=2m

Mx(2nMy)=2m+n(MxMy)69浮点数乘法运算(1)阶码相加阶码相加可能产生溢出,若产生溢出,则给出溢出指示,计算机进行溢出处理。(2)尾数相乘尾数部分相乘可得积的尾数,尾数相乘可按定点乘法运算的方法进行运算。(3)结果规格化当运算结果需要进行规格化操作时,可按浮点加/减法运算规格化方式处理,舍入方式也与加/减法方式中的相同。70Outline 定点补码加/减法运算定点乘法运算浮点运算运算器组织运算器部件举例71运算器功能数据进行算术运算和逻辑运算暂存参加运算的数据及运算的中间结果选取相应部件中的数据参与运算反映运算处理的状态72算术逻辑运算单元ALUALUResultOverflowabALU

operation73寄存器组74

多路选择电路

OUT(i)

R0(i)

R1(i)

R2(i)

R3(i)

R3→OUT

R2→OUT

R1→OUT

R0→OUT

&&&&≥175CLAADD30STA40NOPJMP21…000006…00000420212223243040ALU运算器结构PSWAXBXCXDXDR左路开关选择右路开关选择数据总线DBUS移位器操作数X操作数Y76ALUSRBUS状态寄存器ABALUBUS锁存器LA锁存器LB选择电路…R0R1…RnBUSbusLDLALDLBLbusRiLLDR0LDRnbus→LBUS→busbus→BUS77Outline 定点补码加/减法运算定点乘法运算浮点运算运算器组织运算器部件举例78先行进位的多功能算术/逻辑运算单元运算部件举例

ALU74181Cn+4S3S2S1S0A3A2A1A0B3B2B1B0CnMA=BPGSN741814位ALUF3F2F1F018202211921232781415171311109163456C079先行进位电路CLA74182先行进位电路74182P4G4P3G3P2G2P1G1C0C4C3C2C1P*G*80是否可以如下连接?

16位组内先行进位,组间先行进位ALU74181

X16Y16X15Y15X14Y14X13Y13C12P16*

G16*ALU74181

X12Y12X11Y11X10Y10X9Y9C8P12*

G12*ALU74181

X8Y8X7Y7X6Y6X5Y5C4P8*

G8*ALU74181

X4Y4X3Y3X2Y2X1Y1C0P4*

G4*P*

G*

P4G4C3P3G3C2P2G2C1P1G1CLA(74182)C0C481成组进位C4=

G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0G4*=

G4+P4G3+P4P3G2+P4P3P2G1成组进位发生输出P4*=

P4P3P2P1成组进位传递函数C4=

G4*+P4*C082两级先行进位电路(74181里实现)

G4

P4

C3

C2

C1

G4

P4

G3

P3

G2

P2

G1

P1

C0

&&&&&&

&&*

*

&&≥1≥1≥1≥183成组进位C4=

G4*+P4*C0C8=G8*+P8*

C4

=G8*+P8*

(G4*+P4*C0)=G8*+P8*G4*+P8*P4*C0C16=G16*+P16*C12

=G16*+P16*G12*+P16*P12*G8*+P16*P12*P8*G4*+P16*P12*P8*P4*C0用4组P*

G*作输入,即可复用原先行进位电路产生组间先行进位信号8416位组内先行进位,组间先行进位ALU74181

X16Y16X15Y15X14Y14X

温馨提示

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

最新文档

评论

0/150

提交评论