教学机的微指令由56位组成,其中最高的20位(含两位备用位)用于控制微程序下地址的形成。有10位用于给出微指令转移用的转移地址或微程序执行用到的数据(例如微程序循环次数)。4位用作Am2910的命令码CI3-CI0,另有4位(3位SCC和1位SC)用于给出微指令转移的判别条件。
余下的36位,1位备用,其它35位用于给出对控制器之外的其它几个功能部件的控制命令,包括对运算器、主存、入/出接口、总线等的控制。
其中有26位用于运算器,在第2章讲运行器部件时已看到过24位,这里还有两位SA和SB,用于指明送给Am2101的A口地址、B口地址的信息是来自微指令的A口字段、B口字段,还是来自指令寄存器的SR、DR字段。通常,单或双操作数指令中用到SR、DR内容时,Am2901的A口、B口地址需要由指令寄存器提供。当另一些指令用到默认的寄存器内容时(如IN和OUT指令默认使用通用寄存器RO,LDMC指令要用到R1,R2和R3等),这些寄存器的编号,就必须在相关的微指令字的A口地址或者
B口地址字段给出。此外,由于PC、IP和SP等是用R5、R6和R4实现的,在涉及到PC和SP的计算、读写等操作时,这些寄存器的编号也必须通过相关微指令字的A口地址、B口地址字段来提供。为此,特规定分别用SA和SB完成这一选择,如表3.7所示。
为了对内存和输入/输出接口的读写进行控制,用了/MIO、REQ和/WE三位微码,具体规定如表3.8所示,即这三位用于指明正常总线周期的类型和支持动态微程序设计用到的一个写控制存储器的特殊操作周期。
表 3.7 A口地址、B口地址的来源
当SA=0时,Am2901的A口地址来自微指令的A口字段
SA=1时,则来自指令寄存器的SR字段 |
当SB=0时,Am2901的B口地址来自微指令的B口字段
SB=1时,则来自指令寄存器的DR字段 |
表3.8 总线周期的类型
| /MIO REQ /WE |
操作功能
|
0 0 0
0 0 1
0 1 0
0 1 1
1 0 X
1 1 X
|
内存写
内存读
I/O 写
I/O 读
不操作
装入微码(写控存) |
说明:X代表此位的值取0取1随意
|
|