文章目录
CPU设计
CPU功能
指令控制 操作控制 时间控制 数据加工 中断处理 其他处理
CPU组成部件图
- AX-DX: 通用数据寄存器
- BX,BP: 基址寄存器
- SI,DI: 变址寄存器
- SP: 堆栈指针
- ALU: 算术逻辑单元
- T,S: 两个16位暂存器,T可以移位和循环操作
- PC: 程序计数器
- IR: 指令寄存器, 存放正在执行指令
- PSW: 程序状态字
- AR: 单向地址寄存器
- DR: 双向地址寄存器
- IR: 指令寄存器
指令设计格式
指令执行
有三个步骤: 取指令操作码,取操作数,执行指令
取指令
PC->AR //存储PC
AR->MEMadr
RD,PC+1->PC //取下一PC
MM->DB
DB->DR
DR-IR //将先前PC放到指令寄存器
译码
取操作数
双操作数指令
RD为读信号
要取内容就要过存储器,不需要取就直接入暂存器
ADD BX,[DI]
bit[3]-bit[0]为0111可知为DI的寄存器间接寻址
bit[7]-bit[4]为1001可知目的寄存器为BX
将DI的内容通过存储器放到暂存器S中
MOV AX,4000H //MOV译码和执行同时完成,即取操作数阶段即可结束
bit[3]为1可知为立即寻址
bit[7]-bit[4]为1000可知目的为AX
由PC内容作为地址读出立即数4000H,PC加一,将立即数放入AX
单操作数指令
INC [BX] //对BX内容(当作地址)的内容+1
bit[7]-bit[4]可知为INC
bit[2]-bit[0]为101可知为以BX为目标的寄存器间接寻址
BX定位的存储器的内容送入暂存器S
SHR CX //逻辑右移
bit[3]-bit[0]可知为对CX的寄存器寻址指令
CX送入暂存器S
无操作数指令
bit[3]-bit[0]确定为哪条无操作数指令
执行指令
转移指令
//取操作数后偏移量已放到暂存器S,且加到ALU的一端
PC->ALU //将当前PC(当前指令地址)放到ALU另一端
ADD->T //ALU两端相加,得到偏移地址放到暂存器T
T->PC //更新PC为新的偏移地址
双操作数指令
ADD BX,[DI]: //取操作数后一个操作数[DI]已放到暂存器S中,且加到ALU一端
BX->ALU //将BX内容加到ALU另一端
ADD->T //ALU两端相加,得到结果放到暂存器T
T->BX //结果送入BX
单操作数指令
INC [BX]: //已将[BX]放到暂存器S中,且加到ALU一端
ALU中S+1->T //+1,放到暂存器T
BX->MEMadr //取出BX内容,放入放入地址寄存器(可省略,因取操作数阶段地址寄存器已存放该地址直到指令执行结束)
T->DB,WR //将结果放入数据总线DB上,给出写控制信号WR,将结果写回存储单元
SHR CX: //已将CX内容放到暂存器S,且加到ALU一端
ALU直通->T
T逻辑右移
T->CX
微操作命令
微操作命令提供控制信号实现微操作
PC->AR
是微操作 P C o u t , A R i n PC_{out},AR_{in} PCout,ARin是微命令
取指令码周期FIC
W0-W3为节拍信号,P0-P3为触发脉冲
W0 P C o u t , A R i n PC_{out},AR_{in} PCout,ARin // P C o u t PC_{out} PC