zoukankan      html  css  js  c++  java
  • 个人理解的计算机以及指令的执行过程

    • 计算机CPU主要构成部分

        计算、控制、存储、总线四部分。计算单元一般叫ALU,负责执行运算。

        控制部分主要是指令控制器,负责指令的翻译和产生控信号。

        存储主要分为内存以及各种寄存器,内存用来存储指令和数据,寄存器则主要分程序计数、地址、指令、标志、求和等

                  所有部件之前的通过总线连接来读写数据,同一时刻仅有一个部件能输出数据到总线。

    • 计算机的本质

        读取指令并执行、可以保存信息,具备条件跳转指令。(图灵完备)

    •  一条指令(机器码)执行的过程

        预置条件: 指令被放置到内存的某个地址中,程序计数器设置为改内存地址。

                  一条的执行实质上是被分成一定数量微指令执行的,一个微指令对应一个时钟周期。

                  指令控制器获取到指令后,根据指令以及微指令的序列产生特定的控制信号,微指令执行到一定步数后,一条指令也就结束了。

        比如一条机器码为 1001 0015,其内存地址为0001,如果我们定义为该指令为将内存0010地址中的数据加载到A寄存器。假设程序计数器当前计数为0001,微指令的数量限制为5条,整个过程如下。

                  微指令计数为0时,指令控制器需要产生让程序计数器网总线输出0001,地址寄存器从总线读入的控制信号。(这样到下一步时,地址寄存器读入了地址0001)

                  微指令计数为1时,指令控制器需要产生让内存输出,指令寄存器读入的的信号,同时允许程序计数+1。(这样到下一步时,内存地址0001中的数据被读入到指令寄存器)

        前两步为取指操作,到第三步时,指令控制才获取到要执行的指令为1001 0015。

        微指令计数为2时,指令控制器需要产生让指令寄存器输出地址 0015,地址寄存器从总线读入的控制信号。(这样到下一步时,地址寄存器读入了地址0015)

        微指令计数为3时,指令控制器需要产生让指内存输出,A寄存器从总线读入的控制信号。(这样到下一步时,完成了将0015地址的数据读入到A寄存器的整个过程)

        此时虽然动作已经完成,但微指令数量限制为5,因此当微指令计数为4时,不需要产生任何控制信号,也就是不允许任何动作。

                  再往下时,微指令计数重置为0,由于之前程序计数器已经+1。这时将开始下一条指令的取值过程,一直继续下去直到执行停止指令。

     8位计算组成(参考自benblue 自制8位计算机)

  • 相关阅读:
    Mysql(三) Mysq慢查询日志
    Mysql(二) Mysql错误日志
    Mysql(一) Mysql二进制日志
    HA(二)Heartbeat实现LVS集群DR模式下Director高可用
    HA(一)高可用集群原理
    LVS(五)LVS集群RealServer高可用健康监测
    LVS(四)LVS集群DR模式
    LVS(三)LVS集群NAT模式
    LVS(二)LVS集群中实现的三种负载均衡技术
    Cocos2d-JS实现的打飞机
  • 原文地址:https://www.cnblogs.com/wp2ypy/p/13912481.html
Copyright © 2011-2022 走看看