




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章概述
1.1计算机的定义和特性
1.1.1什么是计算机
・计算机是一种能对数字化信息进行自
动高速运算的通用处理装置。
•信息运算处理
1.1.2计算机的特性
•计算机的特性可以归纳为高速、通用、准确、
智能四大特性。
1.2计算机的发展历程
1.2.1电子计算机的诞生
•第一*台电子计算机ENIAC(ElectronicNumerical
IntegratorandComputer)于1946年在美国诞生。
①每秒5000次加法运算;
②每秒50次乘法运算;
③平方和立方计算;
④Sin和Cos函数数值运算;
⑤其它更复杂的计算。
1.2.2第一代计算机
(20世纪40年代中到50年代末)
•第一代计算机为电子管计算机,其逻辑元件采用电子
管,存储器件为声延迟线或磁鼓,典型逻辑结构为定
点运算。计算机“软件”一词尚未出现,编制程序所
用
汇县豹彳雅弗意十算机(50年代中后期到60年代中)
・第二代计算机为晶体管计算机。这一代计算机除了逻
辑元件采用晶体管以外,其内存储器由磁芯构成,磁
鼓与磁带成为外存储器。
•计算机典型逻辑结构实现了浮点运算,
并提出了变址、中断、I/O处理等新概念。
计算机软件也得到了发展,出现了多种
高级语言及其编译程序。
1.2.4第三代计算机(60年代中到70年代中)
•第三代计算机为集成电路计算机,其逻辑元件与存储器
均由集成电路实现,这是微电子与计算机技术相结合的
一大突破。微程序控制、高速缓存、虚拟存储器、流水
线等先进计算机技术开始使用。另一大特点是大型/巨
型机与小型机同时发展。
1.2.5第四代计算机(70年代中期开始一)
・大规模(LSI)和超大规模(VLSI)集成电路
及微处理器为这一代计算机的典型特征。
•并行处理技术的研究与应用以及众多巨型机的产生也成
为这一时期计算机发展的特点。
•四代机时期的一个重要特点是计算机网络的发展与广泛
应用。
1.2.6新一代计算机
•新器件和非冯•诺依曼结构已成为新一代计算机的公认
标志。
1.3计算机的组成与结构
1.3.1计算机系统的层次结构
图L1计算机系统层次结构
1.3.2计算机硬件
・计算机硬件是指构成计算机的元器件、
部件、设备、以及它们的设计与实现技术。
■冯・诺依曼计算机的主要特点:
1)计算机由运算器、存储器、控制器和输入/输出五个
部件组成。
图1.2计算机基本组成
本书讨论的范围涉及第0、1、2共3层,
主要内容如下:
1.高速的算术、逻辑运算方法及ALU的
逻辑设计;
2.高速的指令执行过程及指令部件的设计与实现,
是采用组合逻辑技术、或微程序设计技术,还是
PLA技术;是复杂指令集计算机(CISC),还是
精简指令集计算机(RISC);
3.提高存储器容量与速度的方法,以及如何解决
“CPU-Cache-外存”之间的匹配问题;
4.高效率的输入/输出方法、组织,以及它们之间的
互联技术;
5.计算机五大部件(运算器、控制器、存储器、输入
和输出)之间的相互作用、高效接口(总线);
2)存储器以二进制形式存储指令和数据;
3)存储程序工作方式;
4)五部件以运算器为中心进行组织;
1.3.3计算机软件
1.软件的作用
•一般来说,计算机的工作总是由存储程序来控制的。
•软件的具体作用为:
①在计算机系统中起着指挥和管理的作用。
②是计算机用户和硬件的接口界面。
③是计算机体系结构设计的主要依据。
2.软件的发展过程
•三个阶段:
1)从第一台计算机上的第一个程序出现到
实用的高级语言出现为第一阶段(1946-1956年)。
2)从实用的高级程序设计语言出现到软件工程出现
以前为第二阶段(1956-1968年)。
3)软件工程出现以后迄今一直为第三阶段(1965—)。
3.软件的分类
①系统软件:操作系统、编译程序。
②支撑软件:数据库、各类接口软件和工具组。
③应用软件:
1.4计算机的分类与应用
1.4.1计算机的分类
•按计算机所处理对象的表示形式不同可以
分成模拟计算机与数字计算机两类。
•计算机按其用途来分可以分成专用机和通用机两类。
其中,通用计算机按其规模、性能和价格来分,又
可分为巨型机、大型机、小型机、工作站、微型机
等多种类型。
1.4.2计算机应用
计算机信息处理技术包括了对各种信息媒体的获取、
表示、加工与表现方法和技术,大致有以下几个方
面内容:
1.语言与文字的处理。
2.计算机图形学与数字图象处理。
3.多媒体技术。
4.计算机辅助技术。
5.计算机信息系统。
6.计算机控制。
・计算机应用技术的发展方向为集成化、网络化、智能化
第2章数据的表示
•本章讨论在计算机内部各类基本数据
的表示方法及其相互间的等值转换。
2.1数据、信息和媒体
2.1.1数据
•数据是对事实、概念或指令的一种特殊表达形式,
这种特殊的表达形式可以用人工的方式或者用自动
化的装置进行通信、翻译转换或者进行加工处理。
•在计算机系统中所指的数据均是以二进制编码形式
出现的。
・计算机内部由硬件实现的基本数据区分为数值型数
据和非数值型数据。
2.1.2信息
•信息是对人有用的数据,这些数据可能影响
到人们的行为和决策。
•信息是对数据的解释,数据是信息的载体。
・计算机信息处理,实质上就是由计算机进行数据处理
的过程。
2.1.3媒体
•媒体又称媒介、媒质,是指承载信息的载体。
•与计算机信息处理有关的媒体有5种:
感觉媒体表示媒体
存储媒体表现媒体传输媒体
图2.1计算机外部信息与内部数据的转换
2.2数字化信息编码
•所谓编码,就是用少量简单的基本符号,对
大量复杂多样的信息进行一定规律的组合。
息,都是用二进制进行编码的。
•计算机内部采用二进制表示的原因:
1)二进制只有两种状态,在数字电路中很容易实现。
2)二进制编码、运算规则非常简单。
3r二比的"o”、“1”与二值逻辑一致,很容易实现
逻辑送直。
2.3数值数据的编码表示
・数值数据是表示数量多少和数值大小的数据。
•在计算机内部,数值数据的表示方法有两大类:第一
种是直接用二进制数表示;另一种是采用二进制编码的
十进制数(BinaryCodedDecimalNumber,简称BCD)
表示。
•表示一个数值数据要确定三个要素:进位计数制、
定/浮点表示和数的编码表示。
2.3.1进位计数制及其各进位制数之间的转换
•在某个数字系统中,若采用R个基本符号(0,1,
2,・・.,R-1)表示各位上的数字,则称其为基R
数制,或称R进制数字系统,R被称为该数字系统的基,
采用“逢R进一”的运算规则,对于每一个数位i,其
该
公7二台片£7*D1
•在计算机系统中,常用的几种进位计数制
有下列几种:
二进制R=2,基本符号为0和1
八进制R=8,基本符号为0,1,2,3,4,5,6,7
十六进制R=16,基本符号为0,1,2,3,4,5,6,7,8,9,
A,B,C,D,E,F
十进制R=10,基本符号为0,1,2基本,5,6为,8,9
例:十进制数2585.62代表的实际值是
2xl03+5xl02+8xl01+5xl0°+6xl0-1+2xl0-2
例:二进制数(100101.01)2代表的实际值是:
(100101.01)=lx25+0x24+0x23+lx22+0x21+
L9a
1x20+0x2T+卜2一2=(37.25)10
1.R进制数转换成十进制数
・任何一个R进制数转换成十进制数时,只要
“按权展开”即可。
例1二进制数转换成十进制数。
432
(10101.01)9=(1X2+0X2+1X2+0X21+1X2°+
12
OX2-+1X2-)10=(21.25)10
例2八进制数转换成十进制数。
21
(307.6)8=(3X8+7X8°+6X8-)10=(199.75)10
例3十六进制数转换成十进制数。
-1
(3A.C)=(3XIG^IOX160+12X16)10
=(58.75)10
2.十进制数转换成R进制数
•任何一个十进制数转换成R进制数时,要将
整数和小数部分分别进行转换。
(1)整数部分的转换
•整数部分的转换方法是“除基取余,上右下左”
例1将十进制整数835分别转换成二、八进制数。
余数低位
88353।
81040
8135
811
0高位
(835)io=(15O3)8
余数低位
28351▲
2|4171
22080
2I~W4-0
2520
2260
2131
260
2I~3^..........1
1
0高位
(835)10=(1101000011)2
(2)小数部分的转换
・小数部分的转换方法是
“乘基取整,上左下右”。
例2将十进制小数0.6875分别转换成二、八进制数。
整数部分高位
0.6875X2=1.3751
0.375X2=0.750
0.75X2=1.51
0.5X2=1.01
低位
(0.6875)io=(O.1011)2
整数部分高位
0.6875X8=5.55
0.5X8=4.04
(0.6875)io=(O.54)8
低位
例3将十进制小数0.63转换成二进制数。
整数部分高位
0.63X2=1.261
0.26X2=0.520
0.52X2=1.041
0.04X2=0.080
(0.63)io=(O.1010)2(近似值)低位
(3)含整数、小数部分的数的转换
•只要将整数、小数部分分别进行转换,得
到转换后的整数和小数部分,然后再这两
部分组合起来得到一个完整的数。
例4将十进制数835.6875转换成二、八进制数。
(835.6875)io=(1101000011.1011)2=(1503.54)8
3.二、八、十六进制数的相互转换
(1)八进制数转换成二进制数
例1将(13.724)8转换成二进制数
(13.724)8=(001011.111010100)2
=(1011.1110101)2
(2)十六进制数转换成二进制数
例2将十六进制数2B.5E转换成二进制数
(2B.5E)16=(00101011.01011110)2
=(101011.0101111)2
(3)二进制数转换成八进制数
(10011.01)2=(010011.010)2=(23.2)8
(4)二进制数转换成十六进制数
(11001.11)2=(00011001.1100)2
=(19.C)16
2.3.2定点与浮点表示
1.定点表示
•所谓定点表示是约定计算机中所有数据的小数点
位置是固定不变的。该位置在计算机设计时已被隐含地
规定,因此勿需再用任何硬件设备状态来明显表示小数点C
±1010110
小数点位置(隐含约定)
±1010001
Ab
方野位置(隐含
利用定点表示进行计算,须将所有数据之
值按一定比例予以缩小(或放大)后送入
计算机,同时须将计算结果以同一比例增
大(或缩小)后才能得正确结果值。
由于采用定点数表示数的范围较小,因此运算很容易
产生溢出,另外选择适当的比例因子有时也很困难。
2.浮点表示
在计算机中所表示的数,其小数点位置是可变的,这
种数称为浮点数。
WTXTWeMWm
对于任意一个二进制数X,可以表示成
如下形式:
E
X=±MXR
其中:M为尾数,常用定点纯小数表示;E为阶,一般
用定点整数表示;R为基数,隐含为2,也可以为2。,
q可取2,3,4等正整数。
|Nmax|=(l-2-m)X2(2e-1)Nmin=2』*2一*一
上溢区下溢区上溢区
负数区正数区
0
•浮点表示法的最大特点是它可以表示
很大的数据范围以及较高的数据精度。
2.3.3编码系统
•确定一个数值数据的三要素是:进位计数制、
定点/浮点表示和编码表示。它们分别用来解决数值
数据的基本表示符号、小数点位置和数的正负号表示。
•符号数字化:。表示正号,1表示负号。
机器数:数值数据在计算机内部编码表示的数。
真值:机器数真正的值(即:原来带有正负号的数)。
•机器数X的真值为:
XT=±X「Xn-2'…Xl'Xo'
(当X为定点整数时)
XT=±0.X_l'X_2'・・.X_(n—l)'X—n'
(当X为定点小数时)
数字化编码后的机器数X表示为:
X=XnXn-1Xn-2・・.X1X0
•常用的编码表示方式有三种:原码、补码和反码。
对于这三种编码:正数的所有编码表示都是相同的。
其结果总是:符号位取值为3数值部分保持不变。
负数的所有编码表示,其符号位总是为1,而数值
部分对于不同的编码则有不同的取值。
1.原码表示法
•原码表示的机器数由符号位后直接跟上
真值的数值构成。
定点小数:
rx1>%>0
[x]原二<
、1-xO>x>-1
[+0]=0.00•••0
[-0]=1.00•••0
定点整数:
X当>x>0
r
[x]原=<
\2rx当o\x>-2n-1
例:
[+noi]原=onoi
[―1101]原=inoi
原码表示的优点是与真值的对应关系直观、方便,
因此与真值的转换简单,并且用原码实现乘除运算
比较简便,但其加/减法运算规则复杂。
2.补码表示法
(1)模运算
•“对一个多于n位的数丢弃高位而保留低n位数”
至样一种处理,实际上等价于“将这个多于n位的数
像以2「,然后丢去商保留其余数”的操作。这样一种
操
我满足下列关系:A=B+KM
(K为整数),则记为:
A=B(modM)。
即:A、B各除以M后的余数相同,故称B和A为模M同
余。
•假定现在钟表时针指向10点,要将它拨向
6点,则有两种拨法:
①倒拨4格:10-4=6
②顺拨8格:10+8三18三6(mod12)
•所以在模12系统中:10-4=10+8(mod12)即:
-4三8(mod12)我们称8是-4对模我的补码。同样有
-3=9(mod12);-5=7(mod12)等等。
结论:“对于某一确定的模,某数减去小于模的另一
数,总可以用该数加上模与另一数绝对值之差来代替”。
因此,补码可以用加法实现减法运算。
例1.“钟表”模运算系统
10-4=10+(12-4)=10+8=6(mod12)
例2.“4位十进制数”模运算系统(相当于只
有四档的算盘)
/4\
9828-1928=9828+(10-1928)
=9828+8072
三7900(mod104)
(2)补码的定义
定点小数:
rxl>X>0
_X]补二Y
、2+x0>x>-l
定点整数:
X当2『1>X>0
r
_x]补=<
、2n+x当0>xN-2n-1
补码0的表示是唯一的:
[+0]补=00…0
[-0]补=2n-0=100…0=00…。(mod2n)
对于整数补码有:[T]补=2n-l=ir-l(n个1)
对于小数补码有:[T]补=2-1=1.00…0(n-1个0)
例.设补码的位数为6,求负数-0.10110
的补码表示。
[-0.10110]补=2-0.10110
=10.00000-0.10110
=1.01010
•求负数补码的简单方法:“符号位固定为1,其余各位
由真值中相应各位取反后,末尾加1所得。”
岫补码求真值的简便方法:“若符号位为1,则真值的
号为负,其数值部分的各位由补码中相应各位取反后,
末尾加1所得。”
•求一个补码“取负”后的补码表示方法:
“只要对该已知补码各位取反,末尾加1即可。”
•由[x]求[,X]的方法:将[x]n的符号位和数值位
一起向右扁]一位,符号位移走后还保持原来的值不变。
例L已知:XT=-0.1011010,求[XT]补。
[XT]#=1.0100101+0.0000001
=1.0100110
例2.已知:[XT]补=1011010,求XT。
XT=-100101+1=-100110
例3.已知:[XT]补=1011010,求[-XT]补
[-XT]#=0100101+1=0100110
例4.设[x]补=L0101000,则
[j]补=1.1010100
耳灯补=1.noioio
[1x]补=i.nioioi
第3章运算器与运算方法
•运算器部件是计算机中的执行部件,它可以对二进
制数据进行各种算术和逻辑运算;
•运算器也是计算机内部数据信息的重要通路。
•本章重点介绍运算器的核心部件—算术逻辑运算
单元ALU的组成与工作原理,以及数据在运算器的
基本运算方法。
3.1基本组成
1.算术逻辑运算单元ALU
▲运算器实现了对计算机中数据的加工处理;包括数
值数据的算术运算和逻辑数据的逻辑操作。
▲运算器中完成数里算术与逻辑运算的部件称之为算
术与逻辑运算单元(ArithmeticandLogicUnit,简
称ALU)oALU是运算器的核心。
▲ALU通常表示为两个输入端口,一个输出端口和多
个功能控制信号端的这样的一个逻辑符号。
控制信号
图3.1ALU的逻辑符号表示与多路开关
2.通用寄存器组
▲运算器内设有若干通用寄存器,构成通用寄存器组;
用于暂时存放参加运算的数据和某些中间结果。
•通用寄存器的数量越多,对提高运算器性能和程序
执行速度越有利。
•通用寄存器组是对用户开放的,用户可以通过指令
去使用这些寄存器。
▲在运算器中用来提供一个操作数并存放运算结果的
通用寄存器称作为累加器。
•如:ADDA,Rj
3.专用寄存器
▲运算器需要记录下指令执行过程中的重要状态标记,
以及提供运算前后数据的暂存缓冲等,这通过在运
算器中设置若干专用寄存器来实现。
.循环计数器对程序员是透明的。
•程序状态字PSW(ProgramStatusWord),它存放着
指令执行结果的某些状态;如是否溢出、是否为零、
是否有进位/借位、是否为负等。它对程序员是开放
的。
•堆栈指针SP(StackPointer),它指示了堆栈的使用情
况。
4.附加的控制线路
▲在运算器中附加一些控制线路;以达到运算
速度快,运算精度高的目的,。
•如:运算器中的乘除运算和某些逻辑运算是通过移
位操作来实现的。在ALU的输出端设置移位线路来
实现左移、右移和直送。
•移位线路是一个多路
选择器。
•图3.2实现移位功能的多
路选择器
FiFi+i
3.2算术与逻辑单元
3.2.1半加器与全加器
♦运算器中各种运算都是分解成加法运算进行的,因
此加法器是计算机中最基本的运算单元。
1.半加器
▲两个一位二进制数相加(不考虑低位的进位),称为半
力口。实现半加操作的电路,称为半加器。
表3.1半加运算的真值表
XiXHiG
0000
0110珥G
1010
1101HA
▲表3.1是两个一位二
进制数X「X相加的xjX
真值表,居和G的逻图3.3(a)逻辑图(b)符号表示
辑表达式如下:
Hi=xz+xz£=X]
2.全加器
▲考虑低位进位的加法运算就是全加运算,实现全加
运算的电路称为全加器。
▲根据真值表表3.2表3.2全加运算的真值表
XiYiCM3Ci
可写出居和Cj的逻00000
辑表达式:01010
10010
11001
00110
01101
10101
11111
K=QCt+XZGT+XXGT+X/Ci=X]㊉X㊉
G=xyCi+QCt+XKGT+XZCT=(X㊉X)GT+MX
▲实现逻辑表达式的全加器逻辑图和全加器的符号表示
3.2.2串行进位与并行进位
♦n个全加器相连可得n位的加法器;图3.5是串行进位
或行波进位加法器。
图3.5n位加法器
♦先行进位或并行进位加法器
•预先形成各位进位,将进位信号同时送到各位全加
器的进位输入端。
▲就4位加法器,讨论一下其进位C2>C3和C4的产
生条件:
①下述条件中任一条满足就可生成C1=1:
1)X。Y1均为“1”;
2)Yi任一个为“1%且进位Co为T。
•可得Ci的表达式为:
G=X]Yi+(Xi)Co
②下述条件中任一条满足,就可生成C2=l。
1)x2>丫2均为“1”;
2)X2>丫2任一个为“1”,且进位C1为T。
•可得C2的表达式为:
C2=X2Y2+(X2+Y2)C1
=X2Y2+(X2+Y2)X1Y1+(X2+Y2)(X1+Y1)CO
③同理,可得C3的表达式为:
C3=X3Y3+(X3+Y3)C2
=X3Y3+(X3+Y3)[X2Y2+(X2+Y2)X1Y1+
区+丫2)区+丫1)0]
=X3Y3+(X3+Y3)X2Y2+(X3+Y3)(X2+Y2K1Y1+
(X3+Y3)(X2+Y2)(XI+YI)CO
④同理,可得的表达式为:
C4=X4Y4+(X4+Y4)c3
=X4Y4+(X4+Y4)[X3Y3+(X3+Y3)X2Y2+
(X3+Y3)(X2+Y2)X1Y1+(X3+Y3)(X2+Y2)(X1+Y1)CO]
=X4Y4+(X4+Y4)X3Y3+(X4+Y4)(X3+Y3)X2Y2+
(X4+Y4)(X3+Y3)(X2+Y2)X1Y1+
(X4+Y4)(X3+Y3)(X2+Y2)(X1+Y1)C0
▲定义两个辅助函数:
Pi=Xi+K
Gi=XiX
•Pi表示进位传递函数,当x「X中有一个为“1”时,
若有低位进位输入,则本位向高位传送进位。
•G表示进位产生函数,当X「X均为“1”时,不管有
无低位进位输入,本位一定向高位产生进位输出。
▲将P「G代入前面的C]〜C4式,可得:
G=G1+P(o
C2=G2+P2G1+P2PxC0
C3=G3+P3G2+P3P2G1+P3P2P1O
C4=G4+P4G3+P4P3G2+P4P3P2&+P4P3P2P©
▲“先行进位产生电路”(图3.6(a))及“4位先行进
位加法器”的逻辑图(图3.6(b))
P4G3P3G2P2GiPi
图3.6(a)先行进位产生电路
图3.6(b)4位先行进位加法器
▲四个4位先行进位加法器串接起来构成16位加法器
•在各加法单元之间,进位信号是串行传送的,而在
加法单元内,进位信号是并行传送的。
F16-13F12-9^8-5^4-1
/\AAA
图3.7组间为串行进位构成的16位加法器
▲并行进位的概念可用于16位加法器;进一步提高16
位加法器的运算速度。
Cm=Gm+PmC0
•Cm表示4位加法器的进位输出,Pm表示4位加法器的
进位传递输出,Gm表示4位加法器的进位产生输出。
•Pm和Gm分别为:
Pm=P4P3P2Pl
Gm=G4+P4G3+P4P3G2+P4P3P2Gl
•应用于四个4位先行进位加法器,则有:
Cmi=Gml+PmlC0
Cm2—Gmz+Pfn2cmi
=Gm2+Pm2Gmi+「m2Pmico
Cm3—Gm3+Pm3cm2
=Gm3+Pm3Gm2+P1n3Pm2Gmi+Pm3^m2^ml^O
Cm。Gm4+Pm4cm3
=Gm4+Pm4Gm3+Pm4Pm3Gm2+
Pm4Pm3Pm2^ml+「m4Pm3Pm2P
X[&]3丫613
图3.8组间由先行进位链构成的16位加法器
▲可将并行进位的概念用于更大位数的加法器上,随
着加法器位数的增加,加法电路变得越来越复杂。
3.3定点加、减法运算
■计算机的一个重要特点是它只能用有限的
数码位数来表示操作数和操作结果。
•定点加、减法运算只有在遵守模运算规则的限制条
件下其结果才是正确的,否则就会出现结果“溢出”
•制定用来表示正、负数的各种码制;通过数据编码
来简化数据的运算,特别是补码,把加法和减法巧妙
地结合起来。
331补码定点加、减法
♦补码制的加、减法运算公式:
[X+Y]补=(凶补+[Y]补)MOD2n
[X・Y]补=([X]补+[.Y]补)MOD2n
•在补码制方法下,无论X、Y是正数还是负数,力口、
减法运算统一采用加法来处理;
•卢!亦和M补的符号位和数值位一起参与求和运算,加、
减运算结臬的符号位也在求和运算中直接得出。
♦例1:已知[X]补=01001,[Y]补=11100;
求补,
[X+Y][X-Y]#o
•则卜Y]补=00100
•[X+Y]补=([X]补+[Y]补)MOD25
=(01001+11100)MOD25
=00101
•因・丫]补=(凶补+[丫]补)MOD25
=(01001+00100)MOD25
=01101
♦当算术运算的结果超出了数码位数
允许的数据范围时,就产生溢出。
•对于n位的二进制码表示的补码整数(符号位占一
位),它可表示的数据范围为据5~2口・1・1。
•若结果超过了允许表示的最大正数时,产生的溢出称
为上溢;
•若结果超过了允许表示的最小负数时,产生的溢出称
为下溢。
・在运算器中应设有溢出判别线路和溢出标志位。
♦例2:已知[X]补=01010,[Y]补=01010
[X+Y]补=(01010+01010)MOD25=10100溢出
•[10]10+[10]10=[20]10>15产生上溢
♦例3:已知[X]补=10010,[Y]补=00100
5
[X-Y]#=(10010+11100)MOD2=01110溢出
[4]10=[-18]10<-16产生下溢
♦溢出常用的判别方法:
①两个补码数实现加、减运算时,若最高数值位向
符号位的进位值cnj与符号位产生的进位输出值
。不相同,表明加减运算产生了溢出OVR;
•可以表示为:
OVR='㊉Cn
OVR=1表示结果有溢出,OVR=0表示结果正确。
在例1中,求[X+Y]补时:OVR=Cn.㊉Cn=l㊉1=0,结果正确。
在例2中,求[X+Y]补时:OVR=Ln=l㊉0=1,结果溢出。
在例3中,求[X-Y]补时:OVR=%㊉©冒=0㊉1=1,结果溢出。
②常用双符号位方法来判别加、减法运算是
否有溢出,正数的双符号位是00,负数的
双符号位是11。
•两个正数双符号位的运算为00+00=00时,结果不溢出;
•两个正数双符号位的运算为00+00+1=01时,结果上溢。
•两个负数的双符号位运算为(11+11+1)MOD4=11
时,结果不溢出;
•两个负数的双符号位的运算为(11+11)MOD4=10
时,结果下溢。
▲采用模4补码运算,其运算结果的两个符号位不一致
时,产生溢出。
♦实现补码加、减法运算的逻辑电路(图3.15)
标志寄存器
图3.15实现补码加减法运算的逻辑电路
▲它的核心部件是二进制并行加法器F,它接收来自寄
存器X和寄存器Y的两个操作数。
▲用图3.15来实现加法[X+Y]补的逻辑操作步骤
如下:
①[X]补一寄存器X,[Y]补一寄存器Y。
②给出控制信号:X-F=LY.F=L且1.F=O。
[X]补和[Y]补送入加法器F的两个输入端。
③并行加法器F接收[X]补和[Y]补,完成[X]补+[Y]补的
加法过程,输出[X+Y]补,并置溢出、进位等信号到
标志寄存器。
④给出控制信号:F-X=l,加法器F的输出结果送入
寄存器X。加法运算结束。
▲用图3.15来实现减法[X・Y]补的逻辑操作步骤如下:
①[X]补-寄存器X,[Y]补,寄存器Y。
②给出控制信号:X-F=LY-^F=1o[X]补和五]补
用.济.2……项送入加法器F的两个输入端。
③给出控制信号:1fF=L并行加法器F接收[X]补、
[Y]补和进位信号1,完成[X]补+%.芯.2••…甲)+1=
[X]补+[,]补的加法过程,输出[X-Y]补,并置溢出、
进位等信号到标志寄存器。
④给出控制信号:F-X=L加法器F的输出结果
[X・Y]补送入寄存器X。减法运算结束。
▲当寄存器X或寄存器Y的内容送到加
法器F时,将符号位等值扩充一位,
形成双符号位;双符号位只在加法
器中执行加法运算时是必要的。
▲寄存器X、寄存器Y和加法器F的二进制位数对运算
数据和运算结果的大小有限制作用,当超过了这些
运算结构所能表示的数据范围时,就产生溢出。
▲以加法器和通用寄存器的二进制位数定义为计算机
的字长。计算机的字长通常是8的整数倍。
3.4定点乘法运算
♦常规的乘法运算方法(定点小数)
•笔一纸乘法方法,
•原码乘法,
•带符号位运算的补码乘法,
♦用组合逻辑线路构成的阵列乘法器。
3.4.1原码一位乘法
♦用原码实现乘法运算时,符号
位与数值位是分开计算的;
♦原码乘法运算分为二步;
•第一步是计算乘积的符号位;乘积的符号为相乘二数
符号的异或值。
・第二步是计算乘积的数值位;乘积的数值部分为两数
的绝对值之积。
♦用数学表达式描述原码乘法运算
•设:[X]原=,0,1.........Xn,[Y]原一
yoyi….yn(其中X。、y°分别为它们的符
号位)、
.若[X*Y「=ZoZi……Z2n(其中Zo为结果之符号位)
则Zo=Xo㊉yo
•Z1.........Z2n=(X1……Xn)*(yi……Yn)
♦笔一纸乘法方法
▲例LX=0.1011,Y=0.1101,X*Y的笔一纸乘法过程:
0.1011被乘数X=O.X1X2X3X4=O.1OU
*0.1101乘数丫=0.8丫2丫3丫4=0・1101
1011X*y/2-4
0000X*丫3*2-3
1011X*丫2*2-2
1011X*y/2-1
4
o.ioooiiiix*y=Z(x*X*2-z)=o.ioooim
Z=1
•因止匕X*Y=0.10001111
♦X*Y的笔一纸乘法过程中,计
算两个正数的乘法特点:
①用乘数Y的每一位依次去乘以被乘数,得X*%i=4、
3、2、1。若,=0,得0。若yi=L得X。
②把①中求得的各项结果x*y在空间上向左错位排列,
即逐次左移,可以表示为X*y「2-i。
4
③对②中求得的结果求和,f(X3*2T),这也就是两
个正数的乘积。I
♦就笔一纸乘法方法,为提高效率
而采取的改进措施
①每将乘数Y的一位乘以被乘数得X*、后,就将该结
果与前面所得的结果累加,而得到Py称之为部分
积;这减少了保存每次相乘结果X*y的开销。
②将部分积Pi右移一位与X*y相加。加法运算始终对
部分积中的高n位进行;因此,只需用n位的加法器
就可实现二个n位数的相乘。
③对乘数中“1”的位执行加法和右移运算,对“0”的
位只执行右移运算,而不执行加法运算。可以节省
部分积的生成时间。
♦部分积迭代法
▲已知两正小数X和Y,Y=0.yty2........yn?则:
.X*Y=X*(0.yiy2……yn)
=X*y/24+X*丫2*2.2+X*丫3*2.3+-------+X*y/2-n
=2-i{2-i[2-i-2-i(2-i(0+X*yn)+X*yn.1)+-一+
——、_____)X*yp+X*yj
n个2」
▲上述乘法运算可以归结为循环
地计算下列算式:
•设P()=0
P1=2“(Po+X*yn)
P2=2/(H+X*yn4)
Pi+i=21(H+X*yn4)(i=0J23,.…n-1)
Pn=2」(Pn4+X*yi)
•显然,X*Y=Pn
▲迭代过程可以归结为:
•若Ynl的值为“1”,将上一步迭代的
部分积匕与X相加。
•若Y*的值为“0”,什么也不做。再右移一位,产生
本次的迭代部分积Pi+「
•整个迭代过程以乘数最低位开始,经过n次
“判断——加法——右移”循环直到求出Pn为止。
•Pn就为乘法结果。
▲实现这种方法的二个定点小数
乘法的逻辑电路框图
图3.16实现定点乘法运算的逻辑电路
▲例1.已知[X]原=01101JY]原=01011,
•若[X*Y]JM=ZOZ1……z8
贝I]z0=0©0=0
•句……Z8=U01*10U的计算采用上述乘法流程,实现
的具体过程如下:
CPY说明
000001011开始,设Po=O
+1101y4=l,+X
01101IC,P和Y同时右移一位
0011011101得Pi
001101101得Pl
+1101I丫3=1,+X
10011C,P和Y同时右移一位
010011110得P2
y2=0,示作加注
C,P和Y同时右移一位
001001111得P3
+1101yx=l,+X
10001C,P和Y同时右移一位
0100011111得P4
•zt.......z8=10001111
•[X*Y^=ZoZ].......z8=010001111
3.4.2原码二位乘法
♦原码二位乘法的思想
•为提高乘法的速度,可以对乘数的每两位取值情况进
行判断,一步求出对应于该两位的部分积。
•采用原码二位乘法,只需增加少量的逻辑线路,就可
以将乘法的速度提高一倍。
♦在乘法中,乘数的每两位有四种可能的组合,每种
组合对应于以下操作:
2
00---------Pi+1=2Pi
01---------Pj+i=2-2(Pi+X)
10Pi+i=2-2(Pj+2X)
2
11Pi+i=2(Pi+3X)
•实现+3X有两种方法:
①分+X再+2X来进行,次法速度较低。
②以4X・X来代替3X运算,在本次运算中只执行・X,
而+4X则归并到下一拍执行。
Pi+i=2-2(Pj+3X)=2-2(P「X+4X尸2-2(P「X)+X。
♦用yw、8和T三位来控制乘法操作
•触发器T用来记录是否欠下+X,若是,则1fT
♦原码两位乘法运算规则
表3.3原码两位乘法运算规则
YuYiT操作迭代公式
0000fT22(Pj)
001+x0fT2-2(Pj+X)
010+x0fT2九匕+X)
011+2X0fT2"2(Pi+2X)
100+2X0—T2-2(Pj+2X)
101-XT2-2(P「X)
110-XT2{PrX)
111T22(Pi)
♦原码两位乘法运算过程举例
例1:已知[X]原=0111001,[Y]s=0100111,
[|X|]#=0111001,[-|X|]#=1000111;
则z0=0©0=0
•zt.......々2=111001*100111具体过程:
PYT说明
ooooooooo_loom~~6开始,Po=o,T=O~~
+111000111y5y6T=110,-X,T=1
111000111P和Y同时右移2位
Ill000111P和Y同时右移2位
1111100011110011得Pl
+001110010Iy3y4T=011,+2X,T=0
001100011P和Y同时右移2位
0000110001111100得P2
+001110010\yiy2T=100,+2X,T=0
010001010P和Y同时右移2位
0001000101011110得P3
•zx.......z12=100010101111
.因止匕[X*Y]原=0100010101111
3.4.3补码一位乘法
♦考查两个补码乘法运算的例子
例1:已知X=0.1011,Y=0.0001
[X]补=01011,[Y]补=00001
[X*Y]补=000001011
[X]补*[Y]补=000001011
•显然,[X*Y]补=[X]补叫Y]补
例2:已知X=0.1011,Y=-0.0001
[X]补=01011"Y]补=11111
[X*Y]补=111110101
[X]补*[Y]补=101010101
•显然,[X*Y]补w[X]补*[Y]补
▲对两个正数来说,它们补码的乘积等于它们乘积的
补码。若乘数是负数时,这种情况就不成立了。
♦考查两个补码乘法运算的一般情况
•若凶补=X°X]……X。,[丫]补=y°yi-ynO
•根据补码定义,可得出其真值:
Y=-y0+f
•[**丫]补=[X*(・y°+£补
=【£X*yi2*X*y。]补
i=l
n
=2区*2]补+[-X*y0]补
♦Booth(布斯)乘法
▲A.D.Booth算法思想:
•相乘二数用补码表示,它们的符号位与数值位一起
参与乘法运算过程,直接得出用补码表示的乘法结果,
且正数和负数同等对待。
▲Booth算法推导:
•已知[X]补=XoXi……xn,[丫]补=yoyx……yn;根据补码
定义,可得出:
•根据补码定义,可得出其真值:
Y=-yo+£力2"
i=l
=-yo+yi2'1+y22'2+y32-3+……+yn2"n
12
=-yo+(y/y/i)+(y22--y22-)+……+(yn2-(n-D-yn2-n)
+2-2+
=(yrYo)82+1)2/+(y3-y2)+……
(n4)
(yn-yn-i)2-+(o-yn)2-
=£(yi+ryi)2"
i=l
•设yn+i=o(称为辅助位);有:
[X*Y]补=[X《(yi+1-yi)2-%h
i=l
』)
={(yry0)X+2-4(y2-yx)X+2-1((y3-y2)X+…+2-i((yn]+i・ynX+
.—((yn-yQx+z-Yyvyn)X)…)…)]}补
•得到如下递推公式:
区+补口)
11=[2-i(Pi+(yn]+i・yn.i)X%(i=0,1,2…
•上式中Pi为上次部分积,丹+1为本次部分积。
令[Pol补=。,有:
1
[Pil#=[2-(y„+i-yn)*x]#(i=o)
叱]补
=[24Pi+(yn-yn.1)*x)]#(i=1)
%]补」
=[3-i(Pn+(y2-yi)*x)]#(i=n-i)
p=p「补
[n+ll#[n+(yyo)*X]
•经过比较可得
因*丫]补=%+山卜=[Pn+(y/y0)*X]补
=%1补+[仇伙)*蜀补
・对乘数的连续两位y*和y*+i进行判断
若y*y*+i=0i,则[Pi+J补=[24(Pi+X)]补
若yn』yn-i+l=10,则[Pi+J补=[2"(P「X)]补
若yn-iynl+i=oo或11,则出+1]补=[2-吗]补
•一个补码数据的右移是连同符号位右移,且最高位补
充符号位的值。
▲补码乘法运算规则:
①乘数最低位增加一辅助位yn+i=O;
②判断y,ymi+i的值,决定是“+x”或、x”,或仅右
移一位,得部分积;
③重复第②步,直到最高位参加操作(yryo)*X,但不
作移位,结果得[X*Y]补。
.图3.18是实现布斯乘法的算法流程图
图
3
・
18布
斯
乘
法
运
算
流
程
图
▲例3:已知[X]补=01101,[丫]补=10110,
[■X]补=10011。
.用布斯乘法计算[X*Y]补的过程如下
P丫yn+i说明
000000101100开始,设丫5=0,[Pol补=0
y4y5=。。,P、Y同时右移一位
000000010110得[PJ补
+110011y3y4=10,+[・X]补
110011iP、Y同时右移一位
111001101011得明]补
-1y2y3=ILP>Y同时右移一位
111100110101得0]补
111100110101得[P3]补
+001101yM=oi,+[X]补
001001」P、Y同时右移一位
000100111010得叫1补
+110011y°yi=io,+卜蜀补
11011111101最后一^次不右移
•因此,[X*Y]补=101111110
▲布斯乘法的算法过程为n+1次的“判断一加减一右移”
的循环,判断的次数为n+1次,右移的次数为n次。
▲在布斯乘法中,遇到连续的“1”或连续的“0”时,
是跳过加法运算,直接实现右移操作的,运算效率
高。
3.4.4补码二位乘法
♦补码二位一乘的方法可以用布斯
乘法过程来推导
・[Pi+ll补=21{叫补+Gn-i+1-yn-i)*[X]补
・田+2]补=21{出+1]补+(ynl-yn-Q*[X]补
・叱+2]补=2-2{田]补+(yn-i+1+丫111-2yn-i-i)*[X]补
▲根据乘数的两位代码丫用和y,以及右邻位yn1+i的值
的组合作为判断依据,跳过Ti+J补步,即从明]补直
接求得出+2]补。
表3.4乘数3位代码组合构成的判断规则
乘数代码对右邻位加减判断规则[Pj+2]补
yn-i-l丫n-iYn-i+l
00002-2叫补
001+[X]补2-2{叫补+[X]补}
010+[X]补2-2{叫补+凶补}
011+2[X]补2-2{[PJ补+2[X]补}
100+2[・X]补2-2{叫补+2[.X]补}
101+[X]补2-2{[固补+bX]补}
110+[-X]补2-2{叫补+[・X]补}
111021四补
♦设乘数[丫]补=丫0丫1.......yn,导出
补码二位乘法中的计算量。
⑴当n为偶数时,乘法运算过程中的总循环次数为
n/2+1o
(2)当n为奇数时,乘法运算过程中的总循环次数
为(n+1)/2o
♦例4:已知[X]补=00011JY]补=11010.[・X]补=11101
o用补码二位乘法计算[X*Y]补的过程。
说明
PYyn+i
000000°"oio0开始,设丫5=0,[P。]补=0
+1111010y3y4y5=100,+2[・x]补
1111010IP和Y同时右移二位
1111110IOILIO1得四1补
+1111101丫1丫2丫3=101,+1・X]补
1111011P和Y同时右移二位
11111101110^1得叱1补
丫0丫0丫1=111,示械加法
最后一*次不右移
.[X*Y]补=111101110
3.4.5阵列乘法器
♦实现上述执行过程的阵列结构的乘法器,
称为阵列乘法器(ArrayMultiplier)
♦图3.19中实现了X*Y的乘法运算,其中X=x/2X3X4,
Y=yiy2y3y4。x和Y都是无符号的小数部分。
444
X*Y=ZX*yj2-j=ZQX*yj2-i)2-j
j=lj=li=l
▲上式中一位乘积xJx用一个两输入端的“与”门实现;
.每一次加法操作用一个全加器实现;
•2-i和2T的因子所蕴含的移位是由全加器的空间错位来
实现。
图3.19直接实现定点数绝对值相乘
的阵列乘法器
部分积入被乘数x
♦阵列乘法器的特点
•阵列乘法器的组织结构规则性强,
标准化程度高。适合用超大规模
集成电路实现,且能获得很高的
运算速度。
•集成电路的价格不断下降,阵列乘法器在某些数字系
统中,例如在信号及数据处理系统中受到重视,它不
需要时钟脉冲,而其乘法速度仅决定于门和加法器的
传输延迟。
•Booth算法的乘法运算也可以用阵列乘法器的方法实
现,但要求的单元更复杂。
3.5定点除法运算
3.5.1原码除法运算
♦笔■纸方法的除法步骤:
①被除数与除数比较,决定上商。若被除数小,上商0;
否则上商1。得到部分余数。
②将除数右移,再与上一步部分余数比较,决定上商,
并且求得新的部分余数。
③重复执行第②步,直到求得的商的位数足够为止。
例1:已知两正数X=0.1001U0L
Y=0.1011
0.1110<商
0.10110.10011101V被除数
0000
除数10011101
1011部分余数
1000101V
1011
11001
1011
0011
0000
OOHV--------余数
•X/Y的商为0.1110,余数为0.0011*2-4
▲原码一位除法规律
•原码一位除法运算与原码一位乘法运算一样,要区分
符号位和数值位两部分。
•商的符号为相除两数符号的“异或”值,商的数值为
两数的绝对值之商。
♦计算机中实现二个正数除法时,
有几点不同:
①比较运算用减法来实现,由减法结果的正负来判断
两数的大小。结果为正,上商I;结果为负,上商0。
②减法运算时,加法器中两数的对齐是用部分余数左
移实现,并与除数比较,以代替除数右移(手算时)与
部分余数比较。左移出界的部分余数的高位都是0,
对运算不会产生任何影响。
③在计算机中,每一次上商过程都是把商写入商值寄
存器的最低位,然后部分余数和商一起左移,腾空
商寄存器的最低位以备上新的商。
♦采用部分余数减去除数的方法比
较两者的大小,当减法结果为负,
即上商0时,破坏了部分余数。
可米取两种措施。
L恢复余数的除法
▲两个正的定点小数X和Y,X=0.xxx2.......xn,
Y=0.yiy2……yn,求解X/Y的商和余数的方法:
第1步:Rx=X-Y
•若Ri〈O,则上商q0=0,同时恢复余数:R.&+Y。
•若%>=0,则上商q()=l。
•q。位不是符号位,而是两定点小
数相除时的整数部分;q0=l时,
当作溢出处理。
第2步:若已求得第i次的部分余数为Ry则第i+1次的部
分余数为:Ri+1=2RrY
•若Ri+i〈0,上商qj=O,同时恢复余数:Ri+1=Ri+1+Yo
•若Ri+i>=0,则上商qj=lo
第3步:不断循环执行第2步,直到求得所需位数的商为
止。
例1:已知[X]原=01011,[Y]原=11101;
求[X/Y]原。
・计算分为符号位和数值位两部分
•[X/Y]原商的符号位:0㊉1=1
•[X/Y]原商的数值位计算采用恢复余数法。运算中的减
法操作用补码加法实现。
•HY|]#=10011o
▲分别标识为X和Y运算过程:
部分余数商说明
0010110
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 代卖公司合同范本
- 产品抵押工资合同范本
- 内部购买服务合同范本
- 999玫瑰买卖合同范本
- 云南土地流转合同范本
- 04购房合同范例
- 无锡锦鲤池过滤器施工方案
- 主体盖房合同范本
- app监控合同范本
- 公司安全协议合同范本
- 《人力资源管理》全套教学课件
- 部编人教版语文小学六年级下册第四单元主讲教材解读(集体备课)
- (2024年)师德师风学习内容教师师德师风培训内容通用多篇
- GB/T 3452.3-2005液压气动用O形橡胶密封圈沟槽尺寸
- 标准击实试验自动计算记录表
- 一个近乎完美的微信引流招生方案
- 门诊特殊病种审批表
- T_CEC 102.1-2016 电动汽车充换电服务信息交换 第1部分_总则_(高清-最新版)
- 国际形式发票模板
- 山西省会计师事务所服务收费标准(汇编)
- 陕西延长石油(集团)有限责任公司企业年金方案
评论
0/150
提交评论