计算机原理
计算机原理. 唐玉华. 国防科技大学计算机学院. 第三章 运算方法与运算器. 3.1 基本运算. 3.2 定点加(减)法运算. 3.3 定点乘法运算 3.4 定点除法运算 3.5 浮点运算方法 3.6 运算器组织. 1、运算方法 讨论各种算术运算和逻辑运算是按什么规则进行的。 计算机的运算最终可分解为四则运算与基本的逻辑运算。 2、 运算器 运算方法的硬件实现. 第三章 运算方法与运算器. 第三章 运算方法与运算器. 运算器的硬件组织 1位全加器 n 位并行加法器 与移位寄存器组合构成乘法器与除法器
计算机原理
E N D
Presentation Transcript
计算机原理 唐玉华 国防科技大学计算机学院
第三章 运算方法与运算器 3.1 基本运算 3.2 定点加(减)法运算 3.3 定点乘法运算 3.4 定点除法运算 3.5 浮点运算方法 3.6 运算器组织
1、运算方法讨论各种算术运算和逻辑运算是按什么规则进行的。 计算机的运算最终可分解为四则运算与基本的逻辑运算。2、 运算器运算方法的硬件实现 第三章 运算方法与运算器
第三章 运算方法与运算器 • 运算器的硬件组织 • 1位全加器 • n位并行加法器 • 与移位寄存器组合构成乘法器与除法器 • 定点整数阶码运算器和定点小数尾数运算器组成浮点运算器 • 与其他寄存器组构成完整的ALU
第 3.1 节 基本运算
3.1、基本运算 • 知识点 • 理解计算机中的基本运算 • 逻辑运算 • 移位运算 • 算术运算 • 重点 • 掌握基本运算方法
3.1、基本运算 • 运算器的基本运算 • 对寄存器中的数据进行运算 • 是计算机中最基本的操作,是最小的有独立意义的操作单元,一个时钟周期完成 • 需要控制信号
3.1、基本运算 • 运算的表征 • 针对哪个寄存器进行操作 • 进行什么性质的操作 • 执行这些运算需要什么控制条件 目的寄存器D op源寄存器S
3.1.1、逻辑运算 • 对象: 逻辑数 • 主要特点 • 寄存器中的数据按位进行操作,即各位同时进行指定的操作 • 每一位均按二值布尔规则运算,各位之间没有关系,无进位和溢出
3.1.1、逻辑运算 • 逻辑运算的种类 • 二变量X和Y可组成的逻辑函数形式: • F=0X Y+1X Y +2 X Y+3 X Y • 其中系数 0 ~3 为特征值,共有16种组合 • 表3.1 两个变量组成的16个逻辑函数的操作
3.1.1、逻辑运算 • 基本逻辑运算及其应用 (1) 清除 A0 表示A寄存器所有位清0 • 用于建立机器的启动初始状态 • 清除状态位信息 • 实现机器工作状态转换 • 外设工作状态的建立与撤消 • 清除寄存器内容等
3.1.1、逻辑运算 (2)置“1”运算 A1 表示A寄存器所有位置“1” • 用来置寄存器或计数器的初值,置工作状态位以启动机器 • 工作状态转换 • 外设工作状态建立等
3.1.1、逻辑运算 (3)逻辑与运算 AAB 表示A、B两寄存器对应位实现逻辑与 运算,结果送A寄存器 • 用于数据处理中的“屏蔽”(Mask)或删除操作
3.1.1、逻辑运算 (3)逻辑与运算 AAB 例: 通过将B的对应位置0,可以使用与操作 将A的某位清除
3.1.1、逻辑运算 (4)逻辑或运算 AAB 表示A、B两寄存器对应位实现逻辑或运算,结果送A寄存器 • 主要用于数据处理中的“选位置1” (Selective Set),插入(Insert)和拼组(Packing)等操作
3.1.1、逻辑运算 (4)逻辑或运算 ① 选位置1 • 寄存器某些位要求置“1”时的操作 例:要求A寄存器A0、A3、A5被置1
3.1.1、逻辑运算 (4)逻辑或运算 ② 插入操作 • 用新数值取代寄存器中某些位 例:在A寄存器前4位插入新的数值 • 首先将A的前4位删除(与操作) • 在A的前4位插入新数值(或操作)
3.1.1、逻辑运算 ② 插入操作 例:在A寄存器前4位插入新的数值 • 首先将A的前4位删除(与操作) • 在A的前4位插入新数值(或操作)
3.1.1、逻辑运算 (5)异或运算 AA B 表示A、B两个寄存器对应位实现异或运算,结果送A寄存器 • 主要用于数据处理中“比较(Compare)”以及“选位置反(Selective-Complement)”等操作
3.1.1、逻辑运算 (5)异或运算 ①选位置反 • 寄存器某些位要求置反操作 例:将A的A2、A3、A6、A7内容置反 变符号操作: B的第一位为1,其余位为0
3.1.1、逻辑运算 (5)异或运算 ②比较操作 两个寄存器内容逐位加以比较,如两个寄存器内容相同,经异或运算后,目的寄存器内容为0;两个寄存器内容不同时,经异或运算后,目的寄存器内容不等于0 比较操作后,还须对目的寄存器进行判0
3.1.1、逻辑运算 (5)异或运算 ②比较操作 • 同或
3.1.2、移位运算 • 移位运算既属算术运算又属逻辑运算 • “末端”触发器 • 右移时是指最左边那位触发器 • 左移时是指最右边那位触发器 • 移位类型 • 移位性质:逻辑移位,循环移位,算术移位 • 移位数据长度:字节、半字、字、双字、多字 • 移位位数:1位、2位、多位 7 0 寄存器
3.1.2、移位运算 1、逻辑移位 • 对寄存器中整组数据进行移位 • 数据处理中字的装配、拼组、拆散等 • 程序控制中的状态位和特殊信息的调用 • 串行信息的传送 • 寄存器末端触发器补入0,其符号表示为SHR A 或 SHL A 没有数字下标一般表示移一位
A1 A2A3A4A5 A6A7 A8 10110101 A的始值 …… 丢失 补0 01011010 SHR A 3.1.2、移位运算 例:A寄存器逻辑右移运算
A1 A2A3A4A5 A6A7 A8 10110101 A的始值 丢失 …… 01101 010 补0 SHL A 3.1.2、移位运算 例:A寄存器逻辑左移运算
3.1.2、移位运算 1、逻辑移位 • 拼组操作:将两个或多个二进制编码信息(如字母)组合成一个字的操作 例:将ASCII码中三个字母Y、O、U拼成一个21位的字。在21位寄存器A中拼组
3.1.2、移位运算 2、循环移位 • 寄存器两端触发器有移位通路,形成闭合的移位环路。在移位时,寄存器内信息在该环路内循环流动 • 用于寄存器移位时信息仍须保留的情况 • 描述语句为 CIR A或 CIL A
A1 A2A3A4A5 A6A7 A8 10111001 A的始值 …… 01110011 CIL A 3.1.2、移位运算 例:A寄存器循环左移
A1 A2A3A4A5 A6A7 A8 10011001 A的始值 …… 11001100 CIR A 3.1.2、移位运算 例:A寄存器循环右移
3.1.2、移位运算 例:用移位操作将寄存器A的内容送到B分析 • A的内容要保持,对A进行循环右移 • 每次移位将A右端数据传给A的左端,同时传给B的左端 • 对B进行右移 • 循环n次完成 A寄存器 B寄存器
3.1.2、移位运算 3、算术移位 • 寄存器带符号数的移位 • 移位时,数的符号位不变 • 算术移位语句: ASHR A或 ASHL A • 算术运算数的移位操作会引起数值变化 • 右移一位,相当于带符号的数除以2(乘以1/2) • 左移一位,相当于带符号的数乘以2
3.1.2、移位运算 3、算术移位 • 对于正数 • 原码、反码和补码均相同,移位时只需要在末端补“0”。左移时可能出现符号错误 • 若A<2n-2,则左移后的数值增大1倍 • 若A为偶数,且A0,则右移后的数值缩小1倍 • 对于负数的移位,不同码制的处理不同
A1 A2A3A4A5 A6A7 A8 11010111 A的始值 补0…… 丢失 ASHR A 10101011 3.1.2、移位运算 3、算术移位 (1)原码 • 符号位不参与移位,只是绝对值移位,其末端补入0 例:A寄存器进行算术右移运算
A1A2A3A4A5 A6A7 A8 10010101 A的始值 丢失 …… 补0 10101010 ASHL A 3.1.2、移位运算 3、算术移位 (1)原码 • 符号位不参与移位,只是绝对值移位,其末端补入0 例:A寄存器进行算术左移运算
3.1.2、移位运算 3、算术移位 (2)补码 • 算术移位实质上是数值的增大与缩小的运算,而符号位是否要参与移位操作? • 补码表示的数进行算术运算时,符号位要参与运算,即补码的符号位可以作为数的一部分参加运算 • 问题:算术移位怎样才能保持正确的符号和正确的移位值?
3.1.2、移位运算 3、算术移位 (2)补码右移 例:设x= -1011000,则[x]补=10101000,第一位为符号位。现将其真值x右移,再求出其对应补码,列式如下: 不移位x = -1011000 [x]补= 10101000 右移一位½x = -0101100 [½x]补= 11010100 右移二位 ¼x = -0010110 [¼x]补= 11101010
A1 A2A3A4A5 A6A7 A8 A的始值 1 0 1 0 1 0 0 0 …… 丢失 1 1 0 1 0 1 0 0 ASHR A 符号位不变 3.1.2、移位运算 3、算术移位 (2)补码右移 • 结论:补码右移时,只要将其符号位也随之右移且符号位不变即可
3.1.2、移位运算 3、算术移位 (2)补码左移 例:设x= -0010110,则[x]补=11101010 ,第一位为符号位。现将其真值x左移,再求出其对应补码,列式如下: 不移位x = -0010110 [x]补= 11101010 左移一位2x = -0101100 [2x]补= 11010100 左移二位 4x = -1011000 [4x]补= 10101000
3.1.2、移位运算 3、算术移位 (2)补码左移 • 结论:左移时其末端补入0,若符号位与后一位相同,则数值高位移入符号仍会得到正确的符号;若符号位与后一位不同,在左移时会出现溢出,即超出数的表示范围,这样将破坏正确的符号位
A1 A2A3A4A5 A6A7 A8 10101000 A的始值 丢失…… 补0 ASHL A 产生错误 01010000 3.1.2、移位运算 3、算术移位 (2)补码左移 • 为了保持正确符号,往往采用补码变形码,使其有两位或多位符号位
A1 1A12A2A3A4A5 A6A7 A8 1 10101000 A的始值 丢失…… 补0 101010000 ASHL A 3.1.2、移位运算 3、算术移位 (2)补码左移 • 符号位出现10情况表示负数溢出 • 符号位出现01情况表示正数溢出
正数 左移 补0 负数 左移 补0 正数 右移 补0 负数 右移 补1 3.1.2、移位运算 3、算术移位 (2)补码 • 对于补码表示数的算术移位,符号位参与操作 • 右移时,其末端补入符号位 • 左移时,其末端补入0 • 采用补码变形码保持符号的正确性
3.1.2、移位运算 3、算术移位 (3)反码 • 反码表示的数进行算术运算时,符号位也要参与运算,即反码的符号位可以作为数的一部分参加运算 • 问题:算术移位微操作怎样才能保持正确的符号和正确的移位值?
3.1.2、移位运算 3、算术移位 (3)反码右移 例:设x= -1011000,则[x]反=10100111,第一位为符号位。现将其真值x右移,再求出其对应反码,列式如下: 不移位 x = -1011000 [x]反= 10100111 右移一位 ½x = -0101100 [½x]反= 11010011 右移二位¼x = -0010110 [¼x]反= 11101001
A1 A2A3A4A5 A6A7 A8 A的始值 1 0 1 0 1 0 0 0 …… 丢失 1 1 0 1 0 1 0 0 P: ASHR A 符号位不变 3.1.2、移位运算 3、算术移位 (3)反码右移 • 结论:反码右移时,只要将其符号位也随之右移且符号位不变即可
3.1.2、移位运算 3、算术移位 (3)反码左移 例:设x= -0010110,则[x]反=11101001 ,第一位为符号位。现将其真值x左移,再求出其对应反码,列式如下: 不移位 x = -0010110 [x]反= 11101001 左移一位 2x = -0101100 [2x]反= 11010011 左移二位 4x = -1011000 [4x]反= 10100111
3.1.2、移位运算 3、算术移位 (3)反码左移 • 结论:左移时其末端补入1,若符号位与后一位相同,则数值高位移入符号仍会得到正确的符号;若符号位与后一位不同,在左移时会出现溢出,即超出数的表示范围,这样将破坏正确的符号位
A1 A2A3A4A5 A6A7 A8 10101000 A的始值 丢失…… 补1 P:ASHL A 产生错误 01010001 3.1.2、移位运算 3、算术移位 (3)反码左移 • 为了保持正确符号,往往采用变形码,使其有两位或多位符号位
A1 1A12A2A3A4A5 A6A7 A8 1 10101000 A的始值 丢失…… 补1 1 01010001 P:ASHL A 3.1.2、移位运算 3、算术移位 (3)反码左移 • 符号位出现 10 情况表示负数溢出,符号位出现 01 情况表示正数溢出