【Computer Organization笔记04】ALU的基本功能,1位ALU,位数扩展以及功能扩展
本次笔记内容:
P7 计算机组成原理(07)
P8 计算机组成原理(08)
本节课对应幻灯片:组成原理14 ALU,第1页起。
文章目录
P4 运算器基本功能
- 完成算数、逻辑运算: + − × ÷ ∧ ∨ ¬
- 得到运算结果的状态: C Z V S
- 取得操作数(数据从哪里来): 寄存器组、数据总线
- 输出、存放运算结果: 寄存器组、数据总
- 暂存运算的中间结果: Q寄存器,移位寄存器
- 由
控制器
产生的控制信号驱动
而逻辑电路中的内容帮助我们完成如上功能。
P6 将上述组装,得到一个初步数据通路
ALU是数据通路的核心。
ALU的功能和设计
P8 1位ALU逻辑运算实现
此 ALU 是进行与运算还是或运算,给一个 1 位的控制信号 OP
即可。
写汇编语言时,要注意,能量等的考虑;不可仅用“软件”的思维。
P9-10 设计全加器流程
设计了电路的功能,明确输入位数,输出位数
,随即应该去写真值表
。
之后便可得出逻辑表达式
,便可以搭电路
。
1位ALU的设计过程,总结起来:
- 确定ALU的功能:与、或、加
- 确定ALU的输入参数
- 根据功能要求得到真值表,获得逻辑表达式
- 依据逻辑表达式实现逻辑电路
P15 如何实现 4 位 ALU 呢?
思路1:
- 同 1 位设计思路,但是这样对于 16 位、 32 位不太可行。
思路2:用 1 位 ALU 串联起来,得到 4 位的 ALU
。
但是如上图,唯一确定可能是性能不太好
。
P17 超前进位生成
为了弥补上述性能不太好
,提前得到进位,后面的无需等待前面的。
P21 原码乘法
基本算法:
- 若乘数的当前位==1,将被乘数和部分积求和
- 若乘数的当前为==0,则跳过
- 将部分积移位
- 所有为都乘完后,部分积即为最终结果
N位乘数*M位被乘数
为N+M位的积
乘法显然比加法更加复杂:
- 但是要比10进制乘法要简单
此外,老师讲了在硬件上的优化:分别有(一)(二)(三)三种方案。
P29 补码乘法
有没有可能对补码直接乘?而非提取符号,进行正常的乘法运算。
由此提出布斯运算。
P30 布斯运算
首先是推导过程。布斯运算基于这个原理:虽然乘法是加法的重复,但也可以将它理解成加法和减法的组合。
。
其运算过程很巧妙:
以 2*(-5) 为例。
但是,实际问题中,并不是使用上述方法。因为 ALU 性能太低。实际操作中,使用乘法器,进行矩阵运算。
P37 除法运算(原码的、补码的)
涉及到:
- 恢复余数法;
- 加减交替法。