文章
85
粉丝
253
获赞
1
访问
29.2k
### 问题(1)解析
#### 1. 寄存器R、Q、Y的初始内容
首先明确补码除法器(以常见的“加减交替法”为例)的核心寄存器功能:
- **Y寄存器**:存放被除数的高位部分(符号位+高位数值),初始为符号扩展后的被除数高位;
- **R寄存器**:存放被除数的低位部分,初始为被除数的低位;
- **Q寄存器**:存放商,初始为0(或与被除数低位相关,需结合“双字除单字”场景)。
已知条件:
- 计算机M字长32位,`d[i] = 0x87654321`(32位补码,符号位为1,负数);
- `scov R1`指令将32位的`R1`(存`d[i]`)按符号扩展为64位`{R0, R1}`,即`R0`为符号位扩展的高位(全1,因`d[i]`符号位为1),`R1`为`d[i]`本身;
- `idiv R1, R2`是**双字(64位{ R0,R1 })除以单字(32位R2)** ,补码除法初始时需将被除数送入Y(高位)和R(低位),商初始在Q。
因此初始内容:
- **Y**:64位被除数的高位32位,即`R0`的内容`0xFFFFFFFF`(符号扩展结果);
- **R**:64位被除数的低位32位,即`d[i]`的内容`0x87654321`;
- **Q**:商的初始值为0(32位),即`0x00000000`。
#### 2. 包含计数器的部件
补码除法需固定执行“字长次数”的运算(32位除法需32轮操作),计数器用于记录已执行的轮次,确保运算结束。该计数器通常集成在**控制逻辑部件**中(或与ALU协同的时序控制模块),因需按轮次触发ALU运算、移位等操作。
#### 3. ALUop控制的ALU运算种类
加减交替法的核心操作是“减除数”和“加除数”,结合移位前的判断,ALU需支持2种核心运算:
- **减法(Y - |除数补码| 或 对应补码减法)**:第一轮运算或上一轮商为1时,需用Y减去除数补码;
- **加法(Y + |除数补码| 或 对应补码加法)**:上一轮商为0时,需用Y加上除数补码,修正之前的减法结果。
因此ALU运算有**2种**。
### 问题(2)解析
#### 1. 除法异常的触发情况(补码除法)
补码除法的异常仅两种核心场景:**除数为0*...
登录后发布评论
暂无评论,来抢沙发