410计算机组成原理学习笔记——运算方法和运算电路(三)

简介: 410计算机组成原理学习笔记——运算方法和运算电路(三)

7.补码的乘法运算

1.进行n轮加法、移位(补码的算术右移),最后再多来一次加法

2.加法的可能值为+0、x的补码、-x的补码(根据MQ的最低位和辅助位确定)

①辅助位 - MQ最低位 = 1:(ACC)+(x的补码)

②辅助位 - MQ最低位 = 0:(ACC)+ 0

③辅助位 - MQ最低位 = -1:(ACC)+(-x的补码)

3.符号位参与运算

4.初始状态:

①ACC置为0,使用双符号位(与原码乘法相同)

②MQ存放乘数,补码的乘法实现中,MQ需要添加一位辅助位(存放在最低位),辅助位初始为0,辅助位加上符号位,因此,设数值位为n位,则实际上MQ需要有n + 2位,并且,ACC和ALU也需要有n + 2位(MQ添加在低位,而ACC和ALU添加在高位)(原码乘法中MQ为n + 1位,仅有符号位,没有辅助位)

③寄存器X存放被乘数,使用双符号位补码形式(原码中被乘数也存放在X)3a085be1738e47f1bf33f4749e81aea2.png5.手算:a021e10c6f8640f29c964d15b85248fb.png

最后一次加法:使得符号位参与运算

8.原码的除法运算

1.符号位不参与运算,单独使用异或得到结果后替换(同原码的乘法思想),数值位取绝对值

2.数值位取绝对值运算

3.计算机在计算的时候,默认当前位的商为1,然后判断ACC和X的大小,若X更大,则恢复余数

4.初始:ACC存放被除数,X存放除数,MQ置为0(存放商),其最后一位为当前将要确定的商

①MQ当前位默认商1,(ACC)+ (-|Y|)补→ACC,ACC负值,说明余数比除数更小,应该商0

03e5facf335a48c4a487c9609311938b.png

②MQ修改当前位为0,(ACC)+ (|Y|)补→ACC,恢复余数eecce31992804e78a875afaa3fe0dbdb.png

③逻辑左移(错位)

23e0cc5cd59842e5becd08ba5c967ed4.png④MQ当前位默认商1,(ACC)+ (-|Y|)补→ACC,ACC负值,说明余数比除数更大,应该商15237ba22d01a4dd69265d37f982f0354.png

⑤逻辑左移4541697263804e4291f6b1542e6333fd.png

⑥MQ当前位默认商1,(ACC)+ (-|Y|)补→ACC,ACC负值,说明余数比除数更大,应该商16badb11734ce49e599520ac9a4fd415b.png

⑦逻辑左移 e7ee5c17bad641afa94b3571f4a08f07.png

⑧MQ当前位默认商1,(ACC)+ (-|Y|)补→ACC,ACC负值,说明余数比除数更小,应该商0411bd9113a1441dfb017ba7c6e41b5ad.png

⑨MQ修改当前位为0,(ACC)+ (|Y|)补→ACC,恢复余数

3d41295fdccb4f2da34b0254cbbee70e.png

⑩逻辑左移d81bc091bd284e02b9ed65deb76b82ce.png

11. MQ当前位默认商1,(ACC)+ (-|Y|)补→ACC,ACC负值,说明余数比除数更大,应该商1

f948fc50ce2c463995321981e47b9c2c.png

12.若最后MQ商的结果为负,则也需要恢复余数并商0

13.替换符号

5.小结84f847f62b454351b37e458a61083939.png

6.不恢复余数法:当余数为负时商0,先左移 ,再+除数(直接进行到下一位商的判断)

9.定点补码除法运算


a5ac9b390a9c486fb36974a06a969111.png

ccc107a628094998a2d379a96e7cbee3.png

10.C语言类型转换

1.C语言的整数用补码表示

2.无符号数和有符号数的相互转换不会改变数值的存储,但是会改变解释方式(符号位)

3.长整数变短整数:高位截断,保留低位

4.短整数变长整数:符号扩展

11.数据的存储和排列

1.大小端存储:

①大端方式:最高有效字节存在低地址,最低有效字节存在高地址(利于人类阅读)

②小段方式:最低有效字节存在低地址,最高有效字节存在高地址(方便机器处理)

4ee2a8d9f9b64173a0e956258aacfffb.png

2.按字节、半字、字寻址:设字长位32bit,半字为16bit

①按字节寻址:一个字节对应一个地址

②按半字寻址:一个半字对应两个字节,因此,每个半字对应两个地址。设寻找半字地址为3,则二进制为11,左移一位(一个半字对应两个字节),因此,首字节地址为110,即6

③按字寻址:一个字对应四个字节,因此,一个字对应四个地址。设寻找字地址为2,则二进制为10,左移两位(一个字对应四个字节),因此,首字节地址为1000,即8

19ffb4e26a064b169304f67d0769e5bf.png

3.边界对齐:每次访存只能读/写一个字image.png

12.无符号整数乘法的基本电路结构image.png

1.被乘数存放在被乘数寄存器X中,乘数存放在乘数寄存器Y中

2.乘积寄存器位P数和被乘数寄存器X、乘数寄存器Y相同,逻辑上乘积寄存器P、乘数寄存器Y和进位C是连在一起使用的(即逻辑右移时,原来的C作为现乘积寄存器的最高位原乘积寄存器的最低位作为现乘数寄存器的最高位,原乘数寄存器的最低位舍弃)

3.ALU主要实现加法运算,C是两个数相加可能产生的进位:若当前乘数寄存器的最低位为0,则ALU左边输入乘积寄存器,右边输入0,计算结果输出到乘积寄存器中;若当前乘数寄存器的最低位为1,则ALU左边输入乘积寄存器,右边输入被乘数寄存器,计算结果输入到乘积寄存器中

4.ALU计算完成并输出数据后,进行逻辑右移

5.控制逻辑发出加、右移和写使能控制信号;设乘数和被乘数位n位,则计数器从n开始计数,进行n轮加法、右移,每进行一轮加法和右移后,计数器 - 1

6.两个n位数相乘,结果用2n位暂存,结果最终保留的是乘数寄存器中n bit,乘积寄存器舍弃。若乘积寄存器全0,则不发生溢出;只要有1,则发生溢出

7cc7e53afc6740928d6d1121d3795b6e.png

7.初始状态:被乘数寄存器X存放被乘数1101,乘数寄存器Y存放乘数0111,乘积寄存器置为0,计数器 = 4

①第一轮加法:

A.控制逻辑检测乘数寄存器中当前最后一位为1,则乘积寄存器需要加上被乘数

B.控制逻辑发出发出加信号,乘积寄存器输入到ALU的左边,被乘数寄存器输入到ALU的右边,即进行0000 + 1101 = 1101,计算不产生进位,C为0

C.ALU计算完成后,ALU发出写使能信号,使得计算结果写入乘积寄存器中

5dfd68a1ce104a2abc9a7f5563f61266.png

第一轮右移:逻辑右移

A.进位C、乘积寄存器、乘数寄存器逻辑上是相连的

B.进行逻辑右移,右移后,则原来的C作为现乘积寄存器的最高位,原乘积寄存器的最低位作为现乘数寄存器的最高位,原乘数寄存器的最低位舍弃b7f3c38f592e45a7823ddb1eb2cf435e.png

此时,第一轮的加法和移位进行完毕,计数器 - 1 = 3

②第二轮加法:

A.控制逻辑检测乘数寄存器中当前最后一位为1,则乘积寄存器需要加上被乘数

B.控制逻辑发出发出加信号,乘积寄存器输入到ALU的左边,被乘数寄存器输入到ALU的右边,即进行0110 + 1101 = 1 0011,计算产生进位,C为1

C.ALU计算完成后,ALU发出写使能信号,使得计算结果写入乘积寄存器中

fe5fd2bbcc304e8dbf6f804c8a83d264.png

第二轮右移:逻辑右移6d60e1c8df8c426492fc5f49270185fd.png此时,第二轮的加法和移位进行完毕,计数器 - 1 = 2

③第三轮加法:

A.控制逻辑检测乘数寄存器中当前最后一位为1,则乘积寄存器需要加上被乘数

B.控制逻辑发出发出加信号,乘积寄存器输入到ALU的左边,被乘数寄存器输入到ALU的右边,即进行1001 + 1101 = 1 0110,计算产生进位,C为1

C.ALU计算完成后,ALU发出写使能信号,使得计算结果写入乘积寄存器中


image.png

第三轮右移:

9f6fddf3886b49cd87b26d533b4ad109.png

此时,第三轮的加法和移位进行完毕,计数器 - 1 = 1

④第四轮加法:

A.控制逻辑检测乘数寄存器中当前最后一位为0,则乘积寄存器需要加上0

B.控制逻辑发出发出加信号,乘积寄存器输入到ALU的左边,0000输入到ALU的右边,即进行1011 + 0000 = 1011,计算不产生进位,C为0

C.ALU计算完成后,ALU发出写使能信号,使得计算结果写入乘积寄存器中

41ea19ba1af84e37b524f60a8194d47c.png

第四轮右移:e762b2517166412f8c88afe0c78c5057.png

此时,第三轮的加法和移位进行完毕,计数器 - 1 = 0

⑤此时,乘法计算结束,4bit * 4bit = 8bit存储,得到最终结果0101 1011 = 91,若只保留乘数寄存器的n bit,则结果位11,发生溢出























相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
5月前
【408计算机组成原理】—原码的乘法运算(九)
【408计算机组成原理】—原码的乘法运算(九)
|
9月前
|
算法
计算机组成原理(微课版) -- 第三章 -- 运算方法与运算器
计算机组成原理(微课版) -- 第三章 -- 运算方法与运算器
|
4天前
计算机里加法器的工作原理
计算机里加法器的工作原理
22 0
|
存储
计算机的运算方法
计算机的运算方法
181 0
计算机组成原理<三>——数据的表示和运算(上)
计算机组成原理<三>——数据的表示和运算(上)
计算机组成原理<三>——数据的表示和运算(上)
|
存储 人工智能 BI
计算机组成原理<四>——数据的表示和运算(下)(三)
计算机组成原理<四>——数据的表示和运算(下)
计算机组成原理<四>——数据的表示和运算(下)(三)
【计算机组成原理】定点加减法运算
一、补码加减法的运算方法 1. 补码加法 2. 补码减法 二、溢出及检测 1. 溢出的概念 2. 溢出的检测
177 0
【计算机组成原理】定点加减法运算
409计算机组成原理学习笔记——运算方法和运算电路(二)
409计算机组成原理学习笔记——运算方法和运算电路(二)
280 1
409计算机组成原理学习笔记——运算方法和运算电路(二)
http://www.vxiaotou.com