E N D
计算机组成原理考研辅导 第五部分 中央处理器CPU 例题
【例1】2009年试题44 • 某计算机字长16位,采用16位定长指令字结构,部分数据通路结构如下图所示,图中所有控制信号为1时表示有效,为0时表示无效,例如控制信号MDRinE为1表示允许数据从DB打入MDR,MDRin为1时表示允许数据从内部总线打入MDR。假设MAR的输出一直处于使能状态。加法指令“ADD(R1),R0”的功能为(R0)+ ((R1))→(R1),即将R0中的数据与R1的内容所指主存单元的数据相加,并将结果送入R1的内容所指主存单元中保存。
【例1】2009年试题44 • 下表给出了上述指令的取指和译码阶段每个节拍(时钟周期)的功能和有效控制信号,请按表中描述方式用表格列出指令执行阶段每个节拍的功能和有效控制信号。
【例2】控制器(大纲) • 下图是一个简化的CPU与主存连接结构示意图(图中省略了所有多路选择器)。其中有一个累加寄存器AC、一个状态寄存器和其他四个寄存器:主存地址寄存器MAR、 主存数据寄存器MDR、程序计数器PC和指令寄存器IR,各部件及其之间的连线表示数据通路,箭头表示信息传送方向。要求: • (1)请写出图中a、b、c、d四个寄存器的名称。 • (2)简述图中指令从主存取到控制器的过程。 • (3)说明数据从主存取出、运算、写回主存所经过的数据通路(假定数据地址已在MAR中)。
(2)取指令 PC→MAR,M(MAR) →MDR, MDR →IR, PC+1 (3)取数、运算、写回 M(MAR)→MDR, MDR →ALU, 运算结果→AC, AC→MDR, MDR →M (MAR) 【例2】控制器(大纲) MDR MAR IR PC
【例3】单总线控制器1 • 设CPU内部结构如图下所示,此外还设有B、C、D、E、H、L6个寄存器(图中未画出),它们各自的输入和输出端都与内部总线相通,并分别受控制信号控制(如Bin为寄存器B的输入控制;Bout为寄存器B的输出控制),假设ALU的结果直接送入Z寄存器中。要求从取指令开始,写出完成下列指令所需的控制信号。 • ADD B,[C] (B)+((C))→B • MOV AC,#data data →AC,data在指令第二字
控制信号 PCOut MARin Yin ACOut ACin PCin IRin MDRin MDROut 控制信号 … … CU 时钟 IR PC +1 CPU 内 部 总 线 MAR A M D MDR AC Y ALUin ALU ZOut Z
【例3】单总线控制器1 • 扩展: (均为双字指令) • ADD E,#data • ADD [addr],F • JMP disp ;PC+disp →PC • MOV AC,[H+X];X是变址寻址的形式地址,在指令第二字
【例4】单总线控制器2 • 某单总线计算机的主要部件如图所示,其中:LA—A输入选择器,LB—B输入选择器,C、D—暂存器。 • (1)请补充各部件间的主要连接线,并注明数据流动方向。 • (2)拟出指令ADD(R1),(R2)+的执行流程(含取指过程与确定后继指令地址)。该指令的含义是进行加法操作,源操作数地址和目的操作数地址分别在寄存器R1和R2中,目的操作数寻址方式为自增型寄存器间接寻址。
ADD(R1),(R2)+ • 功能: ((R1))+((R2)) →(R2), (R2)+1→R2 • PC →MAR ,M(MAR)→MDR,PC+1 • MDR →IR • R1 →MAR, M(MAR)→MDR • MDR→LA • R2 →MAR, M(MAR)→MDR • MDR→LB • LA+LB →MDR • MDR → M(MAR) • R2 →LA • LA+1 → R2
【例5】单总线控制器3 • 设CPU中各部件及其相互连接关系如图2-5-6所示。图中W是写控制标志,R是读控制标志,R1和R2是暂存器。 • (1)假设要求在取指周期由ALU完成(PC)+1→PC的操作(即ALU可以对它的一个源操作数完成加1的运算)。要求以最少的节拍写出取指周期全部微操作控制信号及节拍安排。 • (2)写出指令ADD # a(#为立即寻址特征,隐含的操作数在ACC中)在执行阶段所需的微操作控制信号及节拍安排。
【例5】单总线控制器3 • (1)取指周期: • PC→MAR , 1→R,M(MAR)→MDR,PC+1 →R2 • MDR →IR • R2 →PC • (2)执行指令ADD # a(假设a在指令中的地址码字段) • IR(addr)→R1 • ACC→内部bus,R1+ACC→R2 • R2 →ACC
【例6】双总线控制器1 • 一CPU数据通路为双总线结构,如下图所示。图中连线有误。 • 回答下列问题: • (1)画出修正错误后的连线图,不能改变原有的双总线结构。 • (2)如要实现直接寻址方式,如何修改?(假设指令为双字,第二字是直接地址;或者假设指令为单字) • (3)描述ADD addr,R1指令从取指令开始的实现过程。指令的功能为 • (R1)+(addr)→addr
【例6】双总线控制器1 • (2)直接寻址:指令为单字,则不需要更改(存在IR到MAR的通路); • 若为双字指令,在取出指令第二字后,要送入MAR,所以必须存在MDR到MAR之间的数据通路。方法:通过设置一个连通器连接双总线。
【例6】双总线控制器1 • (3)ADD addr,R1 • 单字指令:addr在地址码字段 • PC→MAR,M(MAR)→MDR,MDR →IR,PC+1 • IR(addr)→MAR,M(MAR)→MDR • MDR→RA • R1→bus,(R1)+(RA)→MDR • MDR → M(MAR)
【例6】双总线控制器1 • (3)ADD addr,R1 • 双字指令:addr在指令第二字 • PC→MAR,M(MAR)→MDR,MDR →IR,PC+1 • PC→MAR,M(MAR)→MDR, PC+1 • MDR →MAR • M(MAR)→MDR • MDR→RA • R1→bus,(R1)+(RA)→MDR • MDR → M(MAR)
【例7】双总线控制器2 • 某计算机的CPU内部为双总线结构,如图所示,图中Y为暂存器,PC为程序计数器,MAR和MDR分别为存储器地址和数据寄存器,IR为指令寄存器。所有数据传送都通过ALU,ALU还具有下列功能。 • F=A; F=B F=A+1; F=B+1 • F=A-1; F=B-1 • 写出转子指令(JSR)的取指和执行周期的微操作序列。JSR指令占两个字,第1个字是操作码,第2个字为子程序的入口地址。返回地址保存在存储器堆栈(上推堆栈)中,堆栈指针始终指向栈顶空单元。
存储器 栈顶 堆栈段 SP 栈底 堆栈概念 • 堆栈:由若干个连续主存单元组成的先进后出(first in last out,即FILO)存储区。 • 栈底:第1个放入堆栈的数据所存放的单元,栈底是固定不变的。 • 栈顶:最近放入的数据所存放的单元; • 栈顶是随着数据的入栈和出栈在时刻变化; • 栈顶的地址由堆栈指针SP指明。
堆栈的结构 • 一般计算机中,堆栈从高地址向低地址扩展,即栈底的地址总是大于或等于栈顶的地址,称为上推堆栈;也有少数计算机相反,称为下推堆栈。 • 堆栈指针的管理: • SP总是指向最后压入的有效数据 • SP总是指向栈顶的空单元
存储器 00000000H: 栈顶 SP 堆栈段 ×× ×× ×× 栈底 ×× 0FFFFFFFFH: 对堆栈的访问与操作 • 只对栈顶操作; • 两种操作: • 压入:PUSH指令;数据存入堆栈 • 弹出:POP指令;从堆栈取出数据 • 假设一堆栈: • 结构? • 数据字长为1B;
存储器 00000000H: 栈顶 SP 堆栈段 ×× ×× ×× 栈底 ×× 0FFFFFFFFH: 堆栈指令的实现 • 压入指令 PUSH Ri:将Ri寄存器内容压入堆栈: • (SP)-1→SP,(Ri) →(SP) • 弹出指令POP Ri:从堆栈中弹出1个数据送Ri寄存器: • ((SP)) → Ri ,(SP)+1→SP • 思考: • 指令的两个操作,顺序互换? • 堆栈结构改变后,如何实现?
【例7】双总线控制器2 • 取指令: • PC→B,F=B,F→MAR,read,M(MAR)→MDR • PC→B,F=B+1,F→PC • MDR→B,F=B,F→IR • 执行指令: • PC→B,F=B,F→MAR,read,M(MAR)→MDR • PC→B,F=B+1,F→PC • MDR→B,F=B,F→Y • SP→B,F=B,F→MAR • PC→B,F=B,F→MDR,write, MDR→M(MAR) • SP→B,F=B-1,F→SP • Y→A,F=A,F→PC
【例8】微指令 • 某机采用微程序控制方式,微指令字长24位,采用水平型编码控制的微指令格式,断定方式。共有微命令30个,构成4个互斥类,各包含5个、8个、14个和3个微命令,外部条件共3个。 • (1)设计出微指令的具体格式。 • (2)控制存储器的容量应为多少?
【例8】微指令 • (1)微指令的具体格式: • 3位、4位、4位、2位、3位、8位(下址字段) • (2)控制存储器的容量应为多少? 28×24位
【例9】微命令编码 • 某机有8条微指令I1~I8,每条微指令所含的微命令控制信号如表所示。试为这10个微命令设计格式并安排编码。
【例9】微命令编码 • a,b,e • c,d,f • g,h,j • i