一.楔子
在复习的过程中,我发现传统的408教辅书王道对大部分知识点会有一个大致的涵盖,但对于一些重要且有不小可能会考的知识点覆盖不足,数据通路的设计是其中之一,这里以2015年408真题43问为引子,本文将对数据通路的设计做一个介绍.
可以看到,本文考察了加法器电路的结构,并且在第(6)问中与指令的执行过程(数据通路)进行了一个综合,对于长期使用王道而没有相关知识背景的学生来说,第一次做就想到相关的答案几乎是不可能的.而观察历年408的考察结构,可以发现相关的知识点是来自于袁春风的《计算机组成体系结构》一书,本文将介绍这个教科书中涉及而王道忽略的知识点.
二.ALU设计
2.1.运算类型
此处需要专门记住一个重要的知识点,类型转换时的扩展和截断运算,可以做一个总结
2.1.1.扩展与截断
无符号数扩展:0扩展,前面补0
带符号整数扩展:符号扩展,前面补符号
截断:无论什么数都是丢弃高位
2.1.2.ALU的功能实现
2.1.2.1.补码加减法运算电路
2.1.2.2.乘法原理与改进
2.1.2.3.乘法器的改进与快速乘法器介绍
2.1.3.浮点数运算和IEEE754知识补充
2.1.3.1.浮点数运算的过程和结果
2.1.3.2.浮点数溢出情况的处理(可能在之后作为408考点,最好了解)
三.标志位生成与应用
OF(溢出标志,溢出为1,否则为0)
计算方法:OF等于最高位产生的进位异或次高位产生的进位
OF对无符号的加减法无意义
SF(符号标志,结果为负号时为1,否则为0)
计算方法:SF=最高本位和
SF对无符号的加减法无意义
ZF(零标志,运算结果为0时,ZF置为1,否则置为0)
计算方法:两个数的运算结果为nbit,只有n位全为0时,ZF=1
CF(进位/借位标志,进位借位时为1,否则置为0)
计算方法:最高位产生的进位异或sub,sub=1表示减法,sub=0表示加法。
CF对有符号数无意义
sub=1,运算为A-B,CF=1时,表明A-B<0,即A<B
sub=0,运算为A+B,CF=1时,表明A+B产生进位