假定计算机 M 字长为 16 位,按字节编址,连接 CPU 和主存的系统总线中地址线为 20 位、数据线为 8位,采用 16 位定长指今字,指令格式及其说明如下:
其中,op1-op3 为操作码,rs,t 和 rd 为通用寄存器编号,R[]表示寄存器 r 的内容,imm为立即数,target 为转移目标的形式地址。请回答下列问题。
- ALU 的宽度是多少位? 可寻址主存空间大小为多少字节?指令寄存器、主存地址寄存器 (MAR) 和主存数据寄存器(MDR) 分别应有多少位?
- R 型格式最多可定义多少种操作?I型和]型格式总共最多可定义多少种操作?通用寄存器最多有多少个?
- 假定 opl 为 0010 和 0011 时,分别表示带符号整数减法和带符号整数乘法指令,则指01B2H 的功能是什么(参考上述指令功能说明的格式进行描述) ? 若 1、2、3 号通用寄存器当前内容分别为 B052H,0008H,0020H,则分别执行指令 01B2H 和 01B3H 后,3 号通用寄存器内容各是什么? 各自结果是否溢出?
- 若采用1型格式的访存指令中,imm(偏移量)为带符号整数,则地址计算时应对 imm进行零扩展还是符号扩展?
- 无条件转移指令可以采用上述哪种指令格式?
【分析】表中格式为指令格式,可发现其操作数占的位数,和寄存器占的位数以及指令的功能。题中计算机的字长位16位,地址线为20位,数据位8位,指令字长为定长16位。
- R型,前六位是00000,后面是rs、rt、rd寄存器分别都由两位表示,操作数op1用4位表示,其功能是将rs寄存器和rt寄存器中的访存op1操作后存入到rd中;
- I型,前六位是操作数op2,其含有两个寄存器,rs、rt分别都由两位表示,imm为立即数占4位(通常为立即寻址方式,给出的固定立即数),其指令的功能是条件转移和访存操作,含ALU运算。
- J型,前六位是操作数op3,后面10位都为标记位,做为转移目标的形式地址,其功能是将target中作为PC的低10位作为跳转地址。
【解】
1.因为计算机的机器字长为16位,所以ALU的宽度为16位。其中主存总线地址线的位数为20位且数据位为8位,故能进行的寻址空间大小就为2^20字节。地址寄存器20位;数据寄存器8位。
因为指令为定长为16位,故指令寄存器的位数为16位;
2.R型中操作码占4位,故一共由16种操作;I型J型中占6位,但R型中的000000已经占了作为固定的标志,所以为64-1=63种操作。通用寄存器,在R型跟I型中只用2位作为通用寄存器的编码,故最多有4个。
3.指令01B2H表示的二进制为0000 0001 1011 0010,则从指令格式中可以看出,前000000为固定位,01为rs寄存器,10为rt寄存器,11为rd寄存器,0010为op1。则其功能就为R[3]->R[1]-R[2];
执行01B2H时:R[3] = B052H - 0008H = B04AH,结果未溢出。
执行01B3H,即R[3]->R[1] x R[2],即R[3] = B052H x 0008H=8290H,结果溢出。
4. 因为进行地址跳转的时候,指令可能往前跳转,或者往后跳转,因此对imm进行符号扩展,方便指令跳转。
5. 无条件转移指令能采用J型指令,将target部分写入PC的低10位完成跳转。
【注】本题主要是对指令格式的考法,主要是对题目的研读,仔细阅读获取有用条件再进行作答,便可以比较清楚地解决问题。