总过程
(1)从控制存储器 中逐条取出“取机器指令”用的微指令,执行取指令公共操作,执行完后,从主存中取出的机器指令就已存入指令寄存器中了。
(2)根据指令寄存器中的操作码,经过微地址形成部件,得到这条指令对应的微程序入口地址,并送人微地址寄存器。
(3)从控制存储器中逐条取出对应的微指令并执行。
(4)执行完对应于一条机器指令的一段微程序后又回到取指微程序的入口地址,继续第l)步,以完成取下一条机器指令的公共操作。
控制存储器里面存放的是微指令,是固定的写死的
指令寄存器是存从内存中取出来的指令(不是微指令)
内存里的指令8位,前5位为操作码后三位为地址
微指令存储器里面的指令20位前15位为控制字段,后5位为地址转移逻辑
这里
因为后5位的前两位是01所以需要地址转移
与此时的指令的前3位拼在一起变成01000,所以下一个执行的微地址是第八个微地址
程序实现上述操作,data_r就是20位微指令,add_r就是下一条微指令的地址
假如是10的地址转移逻辑
复位信号为0的时候把程序加载到内存储器里面,复位信号为1对时钟信号敏感
- 这里的16应该是从后面往前数,因为是直接表示法所以每一位表示一个操作比如这里第16位为1就说明要执行的操作是把程序控制器上的数和000相与形成八位然后放在sysbus上面,
- 19是把内存地址读出来放到数据寄存器mdr里面
MDR(Memory Data Register)用于暂时存储从内存中读取的数据,或者存储要写入内存的数据。当处理器需要从内存中读取数据时,该数据会被加载到 MDR 中供后续处理使用。同样地,当处理器需要将数据写入内存时,它会将要写入的数据存储在 MDR 中,然后传输到内存。
- 10的话是pc(程序计数器)+1
- 15是1的话就把数据寄存器mdr(mar里面的有可能是程序有可能只是数据)里面的值打入指令寄存器中
- 9时读了一条指令后,要把操作码译码定位到微程序,操作数地址打到MAR里面去,这里是指令寄存器地址+000达到总线上去
MAR(存储器地址寄存器)当处理器执行指令时,可能需要读取或写入内存中的数据。MAR(Memory Address Register)用于存储要访问的内存地址。处理器将要读取的数据的地址放入 MAR,或将要写入数据的地址放入 MAR。
- 最后的操作是把IR(指令寄存器的高三位)给操作码
- 这里17,11,5,6 就是把做加减啥的放入acc(累加器)中
- 18是把acc的内容放到总线上
- 最后acc为0,z_flag置为1,否则置为0
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EPVoUiCO-1686498465562)(null)]
- 这个也是从ir读出来执行的
- mem是内存
1457)]
[外链图片转存中…(img-S0IGNgVc-1686498461460)]
[外链图片转存中…(img-fwse4kIi-1686498461462)]