本系列文章是学习了网课《哈尔滨工业大学–计算机组成原理》之后,用以梳理思路而整理的听课笔记及相关思维拓展。本文涉及到的观点均为个人观点,如有不同意见,欢迎在评论区讨论。
目录
1、某机主存容量为4M x 16位,存储字长等于指令字长,若该机指令系统能完成97种操作,操作码位数固定,且具有直接、间接、变址、基址、相对、立即六种寻址方式。
①画出一地址指令格式并指出各字段的作用
OP为操作码字段,共7位, 2 7 2^7 27 = 128 > 97种操作
M寻址方式特征字段,共3位, 2 3 2^3 23 = 8 > 6种寻址方式
A形式地址字段,共16 - 7 - 3 = 6位
②直接寻址的最大范围
直接寻址的最大范围为 2 6 2^6 26 = 64
③一次间址和多次间址的寻址范围
一次间址的寻址范围为 2 16 2^{16} 216,因为存储长度为16位(形式地址指向的存储空间长度为16位,所以说最多寻址 2 16 2^{16} 216)。
多次寻址需要最高位用作是否继续间接寻址,寻址范围为 2 15 2^{15} 215
④立即数的范围
立即数的范围是 2 6 2^6 26,所以是-32到31(有符号数)或0到63(无符号数)
⑤相对寻址的位移量
相对寻址的位移量为-32到31
⑥上述六种寻址方式哪一种执行时间最短?哪一种最长?哪一种便于用户编制处理数组问题的程序?哪一种便于程序浮动?
立即数由指令直接给出,执行时间最短。
间址寻址要多次访存,执行时间最长。
变址寻址中变址寄存器允许修改,而形式地址不变,便于用户处理数组问题。
相对寻址中有效地址和当前指令地址相差一定的位移量,有利于程序浮动。
⑦如何修改指令格式,使指令的直接寻址范围扩大到4M?
若指令的格式改为双字指令,OP占用7位,M占用3位, A 1 占用 6 位 A_1占用6位 A1占用6位, A 2 占用 16 位 A_2占用16位 A2占用16位,即指令的地址字段共16+6 = 22位,指令的直接寻址范围可扩大到4M。
2、假设某机的指令长度可变,而且CPU与存储器的数据传送宽度为32位。试问如何区分一个存储字包含多少条指令?
可在设计该指令时,在指令中安排两位来区分指令的长度,2位共四个状态,直接区分1到4字节指令。
3、说明数据在存储器中可以按“边界对准”或“边界不对准”两种方式存放的特点,并分析利弊。
设存储字长为32位,可按字节、半字、字寻址。
按边界对准方式存放,数据字的地址一定是4的整数倍,这样每访问一个字,即可读出32位。当所存数据不能满足此要求时,会浪费一些存储空间。
若不按边界对准方式存放,则数据字可能跨了两个存储字的位置,此时需要访问两次存储器,影响了取数的时间。
4、假设指令字长为16位,操作数的地址码为6位,指令有零地址、一地址、二地址三种格式。
①设操作码固定,若零地址指令有M种,一地址指令有N种,则二地址指令最多有几种?
操作数地址码有6位,二地址指令中的操作码位数有16 - 6 -6 = 4,这四位操作码有16种操作。由于操作码固定,除去零地址指令M种,一地址指令N种,剩下的二地址指令有16 - M - N种。
②采用拓展操作码计数,二地址指令最多有多少种?
2 4 2^4 24 = 16种编码,去掉一种编码(1111)用于一地址指令拓展,二地址指令有15种操作。
③采用拓展操作码技术,若二地址指令有P种,零地址指令有Q种,则一地址指令最多有几种?
二地址、一地址和零地址的操作码长度分别由4位、10位和16位。
二地址指令操作码每减少一种,就可以多构成 2 6 2^6 26种一地址指令操作码;一地址指令操作码每减少一种,就可以多构成 2 6 2^6 26种零地址指令操作码
二地址指令有P种,一地址有 ( 2 4 − P ) × 2 6 (2^4 - P)×2^6 (24−P)×26种;若一地址有R种,则零地址指令最多有 [ ( 2 4 − P ) × 2 6 − R ] × 2 6 [(2^4-P)×2^6-R]×2^6 [(24−P)×26−R]×26种。
5、设相对寻址的转移指令占两个字节,第一字节是操作码,第二字节是相对位移量,用补码表示。每当CPU从存储器取出一个字节后,即自动完成(PC)+1 -> PC。
①设当前PC值为3000H,试问转移后的目标地址范围是什么?
由于相对寻址的转移指令为两字节,第一字节是操作码,第二字节为相对位移量,且用补码表示,范围为-128到127,即80H到7FH。当前PC值为3000H,CPU取出指令后,PC修改为3002H,因此最终转移的目标地址范围为3081H到2F82H。
②设当前PC值为2000H,要求转移到201BH,则转移指令第二字节的内容是什么?
若当前为2000H,取出指令后,变成2002H,201BH - 2002H = 19H
③若当前PC值为2000H,指令JMP * - 9的第二字节的内容是什么?
指令要求,转移后的目标地址为2000H - 09H = 1FF7H,但是取出后,PC变为2002H,所以转移指令第二个字节的内容应该为-11,即F5H。
6、画出完成ADD * + 3 指令的信息流程图(表示相对寻址,另一操作数隐含在ACC中)。假设(PC)= 2000H。
①先从内存中取出ADD + 3的指令,送入IR中进行处理
②IR处理之后,由控制器控制PC加上相对寻址的偏移3,得到2003H
③将2003H送入内存中找到操作数
④操作数送至ALU和已经隐藏在ACC中的另一个操作数相加