嘿,我正在为一项任务而苦苦挣扎。有人来帮我解决这个问题吗?
考虑 Mic-1 的外观并讨论以下变化。Go 例如,询问微架构是否仍然在基本工作,哪些变化发生在线路上,对微程序有什么影响或将对 MIR 产生什么影响。
(a) 我们要添加另一个标志,例如进位标志。
(b) 我们想添加另一个(读和写)寄存器。
(c) 我们删除 TOS 注册。
(d) 我们正在删除 MDR 注册
a) 如果您添加另一个进位标志,您就有另一个进位位。
基本设计中没有进位位/标志,因此这不是添加另一个进位位 - 只是更一般地添加另一个标志/位。
但是,是的,如果您添加这样的标志,则现有微机的现有微码仍将基本起作用。
讨论
但是如果没有至少一个其他操作来使用或测试新标志,这个新添加的标志将毫无用处,这可能类似于现有标志 (N,Z) 的测试方式(例如,通过微机中的条件分支)。
该架构使用水平微码,因此要添加一个测试进位标志的操作,可以将微指令集从 36 位扩展到 37 位。 JAMN
并且JAMZ
是用于测试 N 和 Z 的现有位,您可以添加一个新位来JAMC
以相同的方式测试进位标志。
一旦微机指令扩大到 37 位,现有的微代码将不得不修改为现有指令插入 0,以便它们继续按原样工作,从某些角度来看这很简单(在微程序中所有现有微指令的列)。
此外,您还想添加一条使用新的微机JAMC
功能的 IJVM 指令,以提供对新进位标志功能的常规机器代码/汇编程序访问。这样的新指令可以简单地测试进位标志和分支,或者,它可以为多字算术提供带进位的 ADD(或两者都提供),其中一些还可能表明对微机的进一步更改(例如带有进位的 ADD 的新 ALU 操作)。
b) 这不是问题,因为 ALU 的结果可以同时在多个寄存器中写入和读取。
是的,仅仅添加另一个寄存器不会破坏机器。
从根本上说,微机和微程序将继续工作,但当然,要利用新寄存器,必须在微架构中添加 B 总线编码字段(以允许读取新寄存器:放置在B 总线),但现有程序将继续工作。
此外,水平微码中的额外位也是必要的(类似于微架构中的 TOS 位,它能够捕获 TOS 中的 C 总线值)——根据上面的讨论,扩大微指令大小会改变现有的微程序,尽管一个简单的解决方法(用 0 来扩展现有的微程序以用于那些新的位)。
c) 如果您删除 TOS,您将无法再从堆栈顶部读取或写入 Alu 操作。
是的,提供的微架构会在几个地方被破坏,现有的 IJVM 微程序肯定会被破坏。
d) MDR 是一个重要的寄存器,与 MAR 一起作为一个快速缓冲区。
是的,如果没有 MDR,就无法在主存储器和微程序之间读写数据。