zoukankan      html  css  js  c++  java
  • 计算机组成原理 05 详解上章工作过程

    1.5 详解上章工作过程


    在这里插入图片描述
    在这里插入图片描述

    1. 首先 我们 a b c y 这些数据 都会被 存储在 主存的存储体中。

    2. PC 指向 第一条指令的存储地址。

    3. PC 又通过 地址总线 传递给 MAR ,然后 控制器 通过 控制单元 发送信号 告诉 主存储器 你要执行 读操作,而非写操作。

    4. 接收到 读操作的主存储器,会 根据 MAR 存储的地址,到 存储体里 找到 对应的 二进制代码,然后 放到 MDR 里。

    5. 由于这次我们取到的二进制代码,是一个指令。如果是一个指令,那么就会 被 存储到 IR 里面。然后再把这串二进制代码的 操作码 传递给 CU 控制单元,让 CU 去分析 这个操作码,再去 决定执行什么操作。

    由于 000001 是 取数的操作。所以 要把 IR 里面 存储的 地址码部分里面内容 取出来。并且 还要 让 MDR 里面的数据 存放到 ACC里。

    1. 如果要取数据,那么肯定要通过 存储体来进行读取。所以 IR 就会把 地址码部分 传递到 MAR 里面,然后 再通过 CPU 控制器 发送 读取的信号给 主存储器,然后 通过 MAR 里面的 地址码,我们可以 取出 a 的 数据,放在 MDR 里面。

    2. 然后 MDR 还要通过 数据总线 传递到 ACC 寄存器里面。(当我们 只是进行 取值的操作时,可能默认 就会 存储到 ACC 寄存器里。

    3. PC 会自动加1,然后来到 下一条指令。然后 取出指令的地址,再 把指令 放到 IR 里,然后通过 CU 进行分析。发现我们要 做 乘法运算。

    4. 我们会通过 类似于上述的一系列操作,把 b 取出来 送到 MQ 寄存器里。

    5. 然后由于我们要 进行 运算,所以我们会把 ACC 里面的值 暂且放在 X通用寄存器 里面。(即被乘数 放到 X 里,乘数 放到 MQ 里面

    6. CU 会发送信号,告诉 ALU,利用 MQ 和 X 里面的数据,进行 乘法运算。 最后把 结果 再次 放到 ACC 寄存器里。 如果乘积结果 过大,则需要 MQ 寄存器 进行辅助存储。(会存储 结果的 二进制低位部分。

    7. PC+1 来到 第三条指令,发现 要 进行 取 c 的操作,所以 MAR 要 去存储 该指令 的地址。然后 MDR 取出指令的二进制代码,让 CU 进行 判断,再把 地址码 返回给 MAR 然后 取出 c 的值。由于 ACC 现在 存储的结果是 上一个 乘积的结果 "6". 所以 c 的值 只能 存储到 x 通用寄存器当中的一个 寄存器里了。

    8. 然后 CU 把 加法的信号发送给 ALU,让 ALU 通过 ACCX 的数据,进行 加法运算。再把 结果 返回给 ACC 寄存器

    9. PC+1 执行 下一条指令,该指令 是 为了让 ACC 里面的数据 存储到 存储体里面。

    10. 所以 CU 会告诉 主存储器 我要进行 写入操作。然后把 地址码 传递给 MARACC 里面的数据 给 MDR,即可 进行 写入操作。这样子 ACC 的最终结果 "7" 也就被存储到了 主存储器当中。即 内存当中。

    11. PC+1,根据 CU 分析 发现 我们 要调用 停机指令而停机是 要利用 中断机制通知操作系统终止该进程的。

  • 相关阅读:
    Redis面试题
    redis基本操作
    pwd命令和cd命令
    ls命令详解
    Python时间操作所相关
    Nginx
    网络相关知识
    LeetCode 刷题记录(6-10题)
    绕过校园网Web认证
    Java相关知识
  • 原文地址:https://www.cnblogs.com/MuQuanyu-YuGod/p/15178599.html
Copyright © 2011-2022 走看看