计算机组成原理--第三章 运算方法与运算器

结合了课上老师(中南民族大学)提供的ppt和自己的手写笔记

前言

计算机的主要功能是对数据信息进行加工处理--算术运算(四则运算)和逻辑运算(无进位的位运算)

3.1计算机中的运算

3.1.1 C语言中的位运算--按位进行 p57

3.1.2C语言中的逻辑运算 p58

3.1.3C语言中的移位运算“<<和>>”

·左移运算操作符对应汇编指令中的逻辑左移--将高位移出,低位补零

·右移运算操作符对应根据无符号和有符号的类型分别对应逻辑右移(--将低位移出,高位补零)和算术右移指令(--高位不是直接补零,而是填充原数据的符号位

·每左移一位,数据扩大一倍;每右移一位,就缩小一半

3.1.4C语言中的算术运算 p59-p60

3.2定点加减法运算

3.2.1补码加减法运算方法

·补码加法

【x】补+【y】补=【x+y】补

·计算过程

1)先将真值x和y转换成补码数据表示

2)利用补码加法公式列竖式--符号可以直接参与运算

3)得到【x+y】补,可求x+y值

4)当符号位进位为模值时应该舍去

·补码减法

和加法相似,不同是要多求一个【-y】补,且【x-y】补=【x】补+【-y】补=【x】补 -【y】补

---【-y】补就是对【y】补再求一下补码

---可以用整数运算来验算

3.2.2溢出与检测

·溢出:运算结果超出数据类型的表示范围

1 两个正数相加,结果变成了负数

2 两个负数相加,舍去进位,变成了正数

***模数舍弃不等于运算溢出

***由于计算机字长是确定的,能表示的数据范围有限,∴溢出现象是不可避免的

·溢出检测

--只有两个符号相同的数相加时才会有溢出

3.2.3加减法的逻辑实现

·手动加法运算通常是从低位开始逐位相加,并将相加过程中产生的进位信号向高位运算传递

1.一位全加器--有两种形式(一个有共享,一个没有;硬件开销不同)

b4aab2dace6e45f6ba4167ff285ca7c6.png

 (一行就是一级,每行取最大,整体取最大,得延迟时间)

·半加器(HA电路):没有进位输入,时间延迟为3T

2.多位串行加法器(行波进位加法器)---单符号位溢出检测

d81ca12f4ded4a2fa40616af7e438282.png

高位得全加器必须低位进位后才能运算

b397d83776d246a8a1e31c4aca799e32.png

c6e606a751514c708680c7ae362d70e6.png

749cc24764b74ea78464048171e18b6c.png

3.可控加减法器(CAS)--单符号位溢出检测

00648f9b04394cbeabddd655353149d2.png

·进位输出仅与最低位进位输入C0有关

·位数越长,进位链电路复杂度越高

·通常按照4位一组进行分组运算

4.先行进位加法器(CLA)

 6a6a991ef81843d1b01ae9f9453d68cf.png

 5. 4位先行进位快速加法器

d570ad6b38754cb78380205b96cb022a.png

6.成组进位

7851c159fa414d16b550725e1b717f90.png

4b80b008250a1049e6deae9354662576.png

2c7d3253da6219779b798be1706df846.png

4059684dd36d36256fecbefea487b9e9.png

3898d0c64fe9dd3b203b5963c7a45557.png

***比较时机器是通过做减法运算进行判断的

3.3定点乘法运算

3.3.1原码一位乘法

n位原码乘法包括n个位积,也就是每次只利用乘数y中的一位来计算位积,最终需要将n个位积全部累加起来得到乘积。

(还有二位乘法)

(1)乘积的符号

·等于两个操作数符号间的异或

(2)乘积的数值

·由被乘数和乘数的绝对值之积求得 |P|=|x|×|y|

·两个n位的数相乘,乘积结果是2n位的

·二进制手动乘法的运算过程

d7ac47dbf7f447adbcb44f753bfb6fa2.jpg

7056a99135b24258a76a65e656dfde79.png

·算法流程

73af427afaf94f59abc4bb75d71d0056.png

·例题

e12960ed85894e679c405ca97777852b.png

1)用循环累加与算术右移操作实现了原码一位乘法

2)见课本

3)两个n位数参加乘法运算要进行n次加法和n次移位操作

4)加法运算可能有局部溢出

3.3.2补码一位乘法/Booth算法

(1)乘法采用单符号位,末位增设附加位Yn+1,初值为0

(2)利用Yn+1与Yn的差值判断各步的具体运算:

差值为1,累加上【x】补

差值为0,累加上0

差值为-1,累加上【-x】补

累加完成后需要进行算术右移的操作,初值为0

(3)按照上述算法进行n+1次累计操作,n次右移操作即可完成乘积运算

·例题

3.3.3阵列乘法器

·原码

8e60182f79ef4fc1ab494ed0eb79ac80.png

17809c00592e4ea59449e39e1d79066d.png

2b004cd2f5954a6fa8699af8f3b4dd14.png·补码

cb0da32bc81b44d5ab99b6629eb65c4b.png

7c8d0512be3a458fb047fa5b58f0e1cc.png

3.4定点除法运算--数值用绝对值,符号单独处理

:将n位数的除操作转换成若干次“加、减及移位”的循环操作来实现

3.4.1原码的一位除法

9607d633d8a34f2aa9b16f6a481e3bbc.png

 e6fdb1b8664c4cb78ab5d528b9134430.png

ea402b341da14a3ca22e3b488c4e4bab.png

22e28f74248e4bf89508e951e51068a9.png

85009780f46b4251b31405541165ea75.png

a774ee20db4245f7844b1b3e18b47a2f.png

e0e7c2be584340e38a4cc785b914d5ed.png

ab2e2e5bb1ed4155a5bd17722dcd4681.png

37c9ce7232914e4abce9e8e18eaf87c3.png

 ***阵列除法器时间复杂度O(n的平方),除法是O(n)

3.5浮点运算

·(1)阶码和尾数采用补码表示的浮点加减运算

41b32f49ee8345c8aff989d8dc360f83.png

·运算步骤

63eea89b8e9247dda3426844407ea625.png

·溢出判断

d2cb94d1239041fc9bedcba10ab41dac.png

4d1a6b3f90434cdc9b83bdeb1e09062b.png

5ceac37310b54936872c1d9e712541eb.png

729300bce8054bf58ab8e64a0b067de0.png

0398247cdffc4eef80b7080002227e8d.png

ac6cd53c453949858d6b6d0cccac4870.png

06e20b016d1b43efa9e8274a3082cf11.png

·(2)浮点乘法运算

 

·(3)浮点除法运算

3.6运算器 

1.定点运算器组成

(1)算术逻辑运算单元(ALU)

·算术、逻辑运算电路,纯组合逻辑电路

·产生运算结果及各种状态标志

(2)通用寄存器组(堆)

·暂存源数据和运算结果

·状态寄存器、变址寄存器、堆栈指示器等

(3)输入、输出数据选择控制

·选择参加运算的数据送给ALU

(4)内部总线

·连接各部件,进行数据传送

2.定点运算器的基本结构(运算器与总线结构) 

 

 

·单总线,2个锁存器,3个时钟周期

·双总线,1个锁存器,2个时钟周期

·三总线,0个锁存器,1个时钟周期

·总线越多,性能越好 

3.ALU设计

构造ALU的基本单元

 

·4功能ALU 

·寄存器组

 4.

4.浮点运算器

·浮点运算过程较长,性能较差

·对阶、尾数求和、规格化、舍入、溢出判断

改造成4段浮点流水线

本章小结

 

 

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值