计算机体系结构:ALU算术运算单元 北大计算机系
北京大学计算机科学技术系北京大学计算机科学技术系 计算机系统结构教研室计算机系统结构教研室 计算机组织与系统结构计算机组织与系统结构 电路设计过程与电路设计过程与ALUALU设计设计 The Design Process 1 A, B; 1 位进位输入:位进位输入:Cin.Cin. 输出输出: 1 x 16: 1 x 16位结果:位结果:S; 1S; 1位进位输出:位进位输出:Co.Co. 操作操作: PASS, ADD (A + B + Cin), SUB (A : PASS, ADD (A + B + Cin), SUB (A - - B B - - Cin),Cin), AND, XOR, OR, COMPARE (AND, XOR, OR, COMPARE (相等相等) ) 性能性能: : 现在,还没有详细说明!现在,还没有详细说明! (2) (2) 框图框图 理解数据和控制流理解数据和控制流 ALU A B M Cin Co S 16 16 16 3 模式模式/ /功能功能 “VHDLVHDL行为行为“ “ “VHDLVHDL实体实体“ “ 北京大学计算机科学技术系北京大学计算机科学技术系 计算机系统结构教研室计算机系统结构教研室 二进制数绪论二进制数绪论 °4位二进制数位二进制数 °示例示例: : 3 + 2 = 5 3 + 3 = 6 二进制二进制 二进制二进制 十进制十进制 0 0000 1 0001 2 0010 3 0011 十进制十进制 4 0100 5 0101 6 0110 7 0111 0 0 1 1 0 0 1 0 + 0 1 0 1 1 0 0 1 1 0 0 1 1 + 0 1 1 0 1 1 北京大学计算机科学技术系北京大学计算机科学技术系 计算机系统结构教研室计算机系统结构教研室 计算机中的机器数表示计算机中的机器数表示 °原码表示原码表示 符号位用符号位用0 0表示正数,用表示正数,用1 1表示负数表示负数 数值用二进制表示数值用二进制表示 对对0 0有两种表示:有两种表示:+0+0和和- -0 0 °反码表示反码表示 若是正数,与原码表示一致若是正数,与原码表示一致 若是负数,除符号位以外取反若是负数,除符号位以外取反 对对0 0有两种表示:有两种表示:+0+0和和- -0 0 北京大学计算机科学技术系北京大学计算机科学技术系 计算机系统结构教研室计算机系统结构教研室 补码补码(Twos Complement)表示表示 °负数的补码表示负数的补码表示 每位取反每位取反, ,并加并加 1 1 负数的最大位负数的最大位( MSB) ( MSB) 总是为总是为 1 => 1 => 符号位符号位 最大的最大的4 4位二进制数位二进制数: 7: 7 最小的最小的4 4位二进制数位二进制数: : - -8 8 北京大学计算机科学技术系北京大学计算机科学技术系 计算机系统结构教研室计算机系统结构教研室 北京大学计算机科学技术系北京大学计算机科学技术系 计算机系统结构教研室计算机系统结构教研室 北京大学计算机科学技术系北京大学计算机科学技术系 计算机系统结构教研室计算机系统结构教研室 ALU的设计需求和规范描述的设计需求和规范描述 °ALU 控制线控制线 (ALUop) 功能功能 000 按位与(按位与(and) 001 按位或(按位或(Or) 010 Add 110 Subtract 111 Set-on-less-than ALU N N N A B 结果(Result) 溢出(Overflow) 零(Zero) 3 ALUop 输出进位(CarryOut) 北京大学计算机科学技术系北京大学计算机科学技术系 计算机系统结构教研室计算机系统结构教研室 1位位 ALU °该该 1位位 ALU将完成将完成 AND、OR和和 ADD A B 1-bit 全加器全加器 输出进位(输出进位(CarryOut) 输入进位(输入进位(CarryIn) 多路选择器多路选择器 结果(结果(Result) 北京大学计算机科学技术系北京大学计算机科学技术系 计算机系统结构教研室计算机系统结构教研室 1位全加器位全加器 °又称为又称为 “ (3, 2) adder” °半加器半加器: 没有没有CarryIn 和和 CarryOut °真值表真值表: 1-bit 全加器全加器 CarryOut CarryIn A B C 输入输入 输出输出 注释注释 A B CarryIn Sum CarryOut 0 0 0 0 0 0 + 0 + 0 = 00 0 0 1 0 1 0 + 0 + 1 = 01 0 1 0 0 1 0 + 1 + 0 = 01 0 1 1 1 0 0 + 1 + 1 = 10 1 0 0 0 1 1 + 0 + 0 = 01 1 0 1 1 0 1 + 0 + 1 = 10 1 1 0 1 0 1 + 1 + 0 = 10 1 1 1 1 1 1 + 1 + 1 = 11 北京大学计算机科学技术系北京大学计算机科学技术系 计算机系统结构教研室计算机系统结构教研室 CarryOut的逻辑方程式的逻辑方程式 °CarryOut = (!A S_delay: integer := 20 ns); port ( signal A, B: in vlbit_vector (0 to 31); signal m: in vlbit_vector (0 to 3); signal S: out vlbit_vector (0 to 31); signal c: out vlbit; signal ovf: out vlbit) end ALU; . . . S Need 32-bit multiply and divide, signed and unsigned °Sll, Srl, Sra (下一讲下一讲) => Need left shift, right shift, right shift arithmetic by 0 to 31 bits °Nor (课后思考课后思考) => logical NOR or use 2 steps: (A OR B) XOR 1111.1111 北京大学计算机科学技术系北京大学计算机科学技术系 计算机系统结构教研室计算机系统结构教研室 设计过程的要素设计过程的要素 °分治分治 Divide and Conquer (e.g., ALU) 针对较简单的部件,阐明解决方案针对较简单的部件,阐明解决方案. 设计每个部件(子问题)设计每个部件(子问题) °产生产生 并并 测试测试 Generate and Test (e.g., ALU) 给出一组积木,寻求如何将它们组装起来,满足需求给出一组积木,寻求如何将它们组装起来,满足需求 °逐步求精逐步求精 Successive Refinement (e.g., carry lookahead) 解决“大多数”问题解决“大多数”问题 (即即, 忽视一些约束或特殊情况)忽视一些约束或特殊情况), 检查并修改缺陷检查并修改缺陷 °阐明可供选择的高级方案阐明可供选择的高级方案 Formulate High-Level Alternatives (e.g., carry select) 当追踪任何一种步骤时,都要最考虑多种策略当追踪任何一种步骤时,都要最考虑多种策略 °做已知如何做的事情做已知如何做的事情 Work on the Things you Know How to Do 在不断前进中,未知的事情将越来越明显。在不断前进中,未知的事情将越来越明显。 北京大学计算机科学技术系北京大学计算机科学技术系 计算机系统结构教研室计算机系统结构教研室 设计过程小结设计过程小结 采用层次式设计处理复杂性采用层次式设计处理复杂性 自顶向下自顶向下 vs.自底向上自底向上 vs. 逐步求精逐步求精 设计表达的重要性设计表达的重要性: 基本模块(基本模块(Block Diagrams) 分解为位片(分解为位片( Bit Slices) 真值表、真值表、 K-Maps 电路图电路图 其他描述其他描述: 状态图、时序图状态图、时序图, 寄存器传输寄存器传输, . . . 优化标准优化标准: 门数门数 封装数封装数 Logic Levels Fan-in/Fan-out Power top down bottom up 面积面积 Delay mux design meets at TT Cost Design time 管脚输出管脚输出 北京大学计算机科学技术系北京大学计算机科学技术系 计算机系统结构教研室计算机系统结构教研室 总结总结 °设计过程概述设计过程概述 设计是一个不断反复的过程设计是一个不断反复的过程- 逐步求精逐步求精 无需等到无需等到 洞察一切后洞察一切后 才开始设计才开始设计 °二进制算术绪论二进制算术绪论 使用补码表示,易于实现减法使用补码表示,易于实现减法 °ALU设计设计 设计一个简单的设计一个简单的4位位 ALU 其他构建其他构建ALU的技术的技术 °ISA驱动的驱动的ALU设计设计