1.定点补码加减法
(1)加法
整数 [X+Y]补=[X]补+[Y]补 (mod 2^n+1)
小数 [X+Y]补=[X]补+[Y]补 (mod 2)
(2)减法
整数 [X-Y]补=[X]补- [Y]补=[X]补+[-Y]补(mod 2^n+1)
小数 [X-Y]补=[X]补- [Y]补=[X]补+[-Y]补(mod 2)
若已知[Y]补,将[Y]补的每一位(包括符号位)取反且末位加“1”,可实现[-Y]补。
[-Y]补=-[Y]补 (mod 2)
例题:
溢出:运算结果超出数的表示范围。
上溢:两个正数相加,结果为负,结果大于机器所能表示的最大正数
下溢:两个负数相加,结果为正,结果小于机器所能表示的最小负数
产生“溢出”的原因:当最高有效数值位的运算进位与符号位的运算进位不一致时,将产生运算“溢出”
补码加(减)法运算规则:
(1)参与运算的操作数用补码表示。
(2)符号位作为数的一部分一起参与运算。
(3)符号位采用变形补码表示时,溢出表达式为 V=Sf1异或Sf2 ;符号位采用单符号表示时,溢出表达式为V=Cf异或C0。
由于数据以补码形式存储,各位求反加1操作也易于实现,且符号位既不单独处理,也无需按参加运算的数的符号决定怎样运算,十分方便,故大多数计算机均采用补码加(减)法运算。
2.定点加减法
3.从半加器到算术逻辑部件ALU
算术逻辑部件ALU(Arithmetic Logic Unit)是运算器的核心,用来实现数据加工和处理所必需的各种整型数据和逻辑型数据的算术运算和逻辑运算功能。算术运算包括加、减、乘、除运算,但不论是那种运算都离不开加法运算,因此加法器是ALU中最基本的部件。
半加器
全加器
并行加法器
4.定点乘法
实现乘除法运算的方案:
1、当使用乘除运算较多,速度要求高时,用硬件直接实现;
2、一般情况,配置乘除法选件;
选件:是指在标准配置之外,可以增强产品功能,提升产品性能的部件。
3、对速度要求不高的机器,用软件实现。
(1)乘积符号的运算规则:同号相乘为正,异号相乘为负
(2) 手工运算过程:
运算步骤
(1) 从乘数的最低位开始,用乘数y的每个二进制位去乘被乘数A,若y的某个二进制位为1,则得位积A;如为0,则得位积0。
(2) B的各位分别乘以A的所得的位积,因为位权不同,逐次向左移位,即在空间上按一定位数错开,这样逐位进行下去,直到乘数各位都乘完为止。
(3) 把经过移位对准的各次位积相加起来即得结果。
机器与人们习惯的算法不同之处:
(1) 机器通常只有n位长, 两个n位数相乘, 乘积可能为2n位。
(2) 只有两个操作数相加的加法器难以胜任将n位积 一次相加起来的运算。
改进:
(a)把一次求和的操作,变成逐步累加求部分积的操作
(b)将求积过程中逐位按权左移位积的操作,改为位积不动,而是上次部分积右移的操作
1.原码乘法
原码表示对乘法运算比较方便,原码表示的两数相乘,乘积的符号位为相乘两数符号位的按位加之和,数值部分为两数绝对值之积。原码乘法实际上是两个正数相乘的方法。这里“按位加”就是不考虑进位的加法,即“异或”运算,记作+,所以原码乘法的表达式为;
设被乘数为X、乘数为Y。
用原码表示为:
被乘数[X]原 = Xs. X1X2···Xn-1Xn
乘数[Y]原= Ys. Y1Y2···Yn-1Yn
(2) 改进后的笔算乘法过程(竖式)
乘法运算
加和移位。n = 4,加 4 次,移 4 次
由乘数的末位决定被乘数是否与原部分积相加, 然后1形成新的部分积,同时乘数1(末位移丢),空出高位存放部分积的低位。
被乘数只与部分积的高位相加
例题:
原码一位乘法运算实现的原理框图:
这是一个5位二进制数X = (+/-)0.X1X2X3X4 与Y = (+/-)0.Y1Y2Y3Y4采用原码一位乘法运算的原理框图,图中,
被乘数[X]原= Xs. X1X2X3X4
乘数 [Y]原= Ys. Y1Y2Y3Y4
C寄存器为4位寄存器存放部分积,初值为0;
B寄存器为4位寄存器存放乘数Y的绝对值|Y|;
D为2选1的选择器
CSR为右移控制信号(脉冲信号),每发一脉冲信号,控制有关寄存器C_B右移一次,移出位(bs)信号值 ——1或0控制选择器D的输出;
bs=1时,选择器D输出被乘数X的绝对值|X|到ALU,与部分积相加后输出,形成新的部分积送寄存器C同寄存器B一起右移决定下一次操作;
bs=0时,选择器D输出0到ALU,与部分积相加后输出(即仅输出上次的部分积),形成新的部分积送寄存器C同寄存器B一起右移决定下一次操作;
计数器CR为减法计数,初始值为操作数中数值位的位数,用来控制操作中部分积的右移次数,当CR为0时结束操作。
P为(2n+1)位寄存器,用来存放最终结果,2n位存放乘积的数值,最高位Ps为符号位,由异或门输出Xs+Ys生成。
5. 定点运算器的组成
最基本的组成:算术/逻辑运算单元、数据缓冲寄存器、通用寄存器、多路转换器和数据总线等。
1.逻辑运算
1.逻辑非运算:求反,在数上面加一横;
2.逻辑加运算:逻辑或、‘∨’ , ‘+’;
3.逻辑乘运算:逻辑与、‘∧’ ,‘·’ ,‘×’;
4.逻辑异运算:异或、模2的和、按位加、 ‘ 异或 ’;
2.内部总线
1.内部总线 :机器内部各部份数据传送频繁,可以把寄存器间的数据传送通路加以归并,组成总线结构。
2.分类
(1)所处位置: 内部总线(CPU内), 外部总线(系统总线)
(2)逻辑结构: 单向传送总线 ,双向传送总线
三态门组成的双向数据总线:
3.基本结构
运算器包括:ALU、阵列乘除器、寄存器、多路开关、三态缓冲器、数据总线等。
(1)单总线结构的运算器
所有的部件都连接到同一总线上。所有的数据传输都是采用分时方式。
缺点:操作速度比较慢。
优点:电路设计比较简单。
(2)双总线结构的运算器
两个操作数同时加到ALU进行运算,只需要一次操作控制,而且马上可以得到运算结果。
(3)三总线结构的运算器
ALU的两个输入端分别由两条总线供给,而ALU的输出则与第三条总线相连,因此,算术逻辑操作可以在一步的控制之内完成。
6.移位电路
该移位电路是由三个三选一的选择器组成的,三选一电路的工作过程是:以中间选择器为例,输入信号为b,输出信号为a。
当S1S0=00是,a2=b3右移;S1S0=01时,a2=b2直通;S1S0=10时,a2=b1左移。
据此,在图3-14所示的移位电路中,选择信号S1S0用来控制移位功能。
当S1S0=00时a3a2a1=b4b3b2,三位代码右移1次;
S1S0=01时a3a2a1=b3b2b1,三位代码直通传送;
S1S0=10时a3a2a1=b2b1b0,三位代码左移一次。
在上述移位电路的基础上,增加选择信号S以增加移2位,移4位和移8位等功能,构成桶形移位器。
1.寄存器组 由若干个通用寄存器组成,为一个输入端口和二个输出端口的结构,输出分别送A寄存器和B寄存器,可以通过寄存器号来选择输入寄存器,以及输出寄存器。
2.A寄存器、B寄存器和Q寄存器 A寄存器,B寄存器接收来自寄存器组的数据,作为ALU二个运算数据的来源之一;B寄存器的数据也可直接送到选择电路3。
Q寄存器,接收来自移位电路1的数据,其输出可反馈到其移位电路1的输入端(左、右移输入端)。实现数据的左移1位或右移1位的操作。Q寄存器输出通过三选一电路1送入ALU的输入端。Q寄存器在进行乘除法运算时可用作乘数及商寄存器。
3.ALU为多功能算术逻辑运算部件 参加运算的二个数据来自:①选择电路1——三选一电路,输入来自Q寄存器、A寄存器和B寄存器;②选择电路2—二选一电路,输入来自B寄存器和外部输入。ALU输出端送选择电路3——二选一电路,可以选择ALU输出或B寄存器输出。
4.移位电路1和移位电路2: 可进行左移1位,右移1位以及直通操作,移位数据可以来自ALU输出(移位电路1,还可对Q寄存器反馈回来的信息进行左移或右移1位的操作)。
ALU的加减操作和移位操作可以在同一操作步骤中完成。