第九章:控制单元的功能

9.1 微操作命令的分析

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

  • 程序地址保存在程序计数器(PC)中,PC将指令地址送给MAR到地址总线到存储器
  • I—>R 控制器向存储器发出读命令
  • 读出的数据由存储器通过数据总线送给MDR到IR
    -译码确定要做的操作,由指令的操作码给出, IR中的操作码送给CU,CU译码确认要做的操作。
  • PC更新,为下一条指令做准备
    在这里插入图片描述
  • 形式地址(IR中地址码部分)给MAR传到地址总线到存储器地址线上
  • 控制器要将IR地址码部分送给MAR控制信号,然后由控制器向存储器发出读操作命令
  • 存储器接收到地址和读操作命令在指定内存单元中将操作数的地址取出,通过数据总线除数给MDR
  • 被取出的地址送到IR寄存器地址码部分
    在这里插入图片描述
  • 执行周期指令不同,操作也不同。
  • 算数右移:右移把ACC左边的数据写到ACC寄存器右侧,同时最高的一位ACC0再写回到ACC0当中
  • 循环左移:ACC右面的个位移到ACC左侧,ACC第0位移到ACC第n位(最末)当中
  • 停机操作:将停机标志置0。
    在这里插入图片描述
  • 加法:将ACC中的内容和X中保存的内容相加,保存在ACC中。加数从内存单元取出 。指令保存在IR中,加数的地址在IR当中保存的那条指令的地址码部分
    • IR当中地址码部分送给MAR
    • 读命令
    • MAR寄存器中保存的地址作为访问存储器的地址,把给定的单元中保存的数据取出放到MDR寄存器中
    • ACC中数据和MDR中数据相加放到ACC中
  • 存数指令:将ACC中保存的数据保存到内存单元给定地址X,为完成对存储器的写操作,要把地址码给内存
    • 将IR中保存的指令地址码部分 拿出送给MAR保存
    • CU向存储器发出写命令
    • 要写的数据在ACC中,ACC中内容送入到MDR寄存器,准备向内存单元进行写操作
    • 完成写操作,将MDR中给定的数据保存在给定的内存单元当中。给定的内存单元的地址保存在MAR当中。(MDR中的内容存储器寄存器指定的内存单元中)
      在这里插入图片描述
  • 取数指令:把内存单元当中,给定的一个地址的数据取出,保存在cpu的ACC寄存器中,要对存储器进行读操作,读的地址保存在IR寄存器。
    • IR寄存器的地址码部分送给MAR
    • CU发出读命令
    • MAR寄存器指定内存单元内容读出送到MDR
    • MDR寄存器中的内容数据取出放到ACC当中
  • 转移指令
    • 无条件转移: 转移的目标地址在被取出的这条无条件转移指令的地址码部分。将这条指令地址码部分送到PC,指令被保存在IR寄存器。故将IR寄存器的地址码部分送到PC
    • 条件转移:有很多种,这里仅给一个例子。
      • BNX(负则转,上次计算结果是负值则转移到X(将IR中保存的指令地址码部分送给PC跳转)。非负则接着执行下一条指令,下一条指令执行地址在PC中(PC送到PC接着执行下一条顺序指令)。而上一条指令计算结果保存在ACC中,通过判断ACC最高位A0判断正负,A0为1则是负)
        在这里插入图片描述
        在间址周期中,对于存储器间接寻址或寄存器间接寻址的指令,它们的操作是不同的
        在这里插入图片描述
  • 中断周期的操作
    • 保存断点
      • 存入给定0地址 :控制单元将断点保存到内存当中,内存单元的地址就是这个0。①0送入MAR②控制单元向存储器发出写命令③程序断点保存在PC计数器当中,则就是要保存PC寄存器的内容。故将PC寄存器的内容保存入MDR④完成写入操作,将MDR的内容保存到MAR指定内存单元当中
      • 程序断点进栈:①SP-1形成新的栈顶地址送到MAR,要将程序的断点写入到新的栈顶地址。②写操作③PC的内容保存到内存单元中,将PC送到MDR中④MDR内容保存到MAR指出的内存单元当中
    • 形成中断程序的入口地址:①硬件向量法:向量地址保存到PC中②软件查询法:将中断识别程序入口地址M送到PC中
    • 关中断:硬件关中断,不允许发生中断,将0送到中断允许的触发器中。

9.2 控制单元的功能

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
MAR:主存地址寄存器
MDR:主存数据寄存器

  • PC从MAR中取出指令地址,从指令地址取出指令放到MDR当中
  • 指令被送到IR寄存器
    • 若取出的是数据如加法指令,将数据放到AC当中。
    • 若是取数指令,将取出的数据要存到ACC中。
    • 加法指令取出的数据可能直接送到ALU。
    • 若是间址寻址,取出的是操作数的地址,则要将地址再送到MAR,以便把操作数从内存单元取出。
  • IR寄存器的操作码部分,要送给CU进行译码
  • 时钟要送到控制器当中,控制控制单元发出各种类型的控制信号
  • 这些控制信号会控制ALU做各种类型的操作
    • 若是加法操作,AC当中的内容和MDR当中送过来的数据在ALU当中,在控制信号的控制下进行相应的操作,并把结果保存在AC当中
      在这里插入图片描述

本例加法指令用间接寻址的方式,@是间接寻址的标志

  • 取指过程
    • 由CU控制PC和MAR之间的数据通路C0,把PC的内容送给MAR。
    • MAR把数据经过C1控制电路送出,送给内存单元的地址线
    • 同时CU发出一个读命令,告诉CPU要进行读操作
    • 从内存单元读回来的指令要经过C2这个控制电路被放入到MDR当中
    • 再由MDR将取出的指令经过C3这个控制信号送入到IR寄存器
    • C4是IR的操作码部分,要经过C4控制电路送给CU进行译码。
    • PC要加1

操作数的地址被保存在地址为X的单元当中
指令已被取回,现在要取操作数的地址
假设这个形式地址在MDR当中

  • MDR将这条指令地址码部分内容通过C5控制门送入到MAR寄存器,再通过C1控制信号送到存储器的地址线
  • 控制单元通过控制总线向主存发出读命令,读加法指令操作数的物理地址。
  • 通过C2把从内存单元当中读出来的操作数的地址送入到MDR寄存器,这时候MDR当中保存了操作数的地址
  • C3这个门打开把MDR当中保存的操作数的地址,保存入IR寄存器的地址码部分
    在这里插入图片描述
    执行周期
    操作数的地址存在MDR,也保存在IR寄存器当中
    假设这个操作数地址来自MDR寄存器
  • 控制单元发出指令,把MDR内容送到MAR当中,通过C1把MAR当中的地址送入到内存单元的地址线
  • CU发出读操作命令(读操作命令在控制信号当中),读入的数据通过C2控制门被送入到MDR
  • 这时,加法操作的两个操作数都已经被保存到CPU的寄存器中,被加数在AC,加数在MDR
  • C6和C7打开把操作数送到ALU,ALU控制信号控制下完成加法操作,通过C8把运算结果送到AC

在这里插入图片描述
Y是寄存器
在采用CPU内部总线方式的示意图中,当CPU内有多个通用寄存器时,由于设置了寄存器Y,可实现任意两个寄存器之间的算逻运算。
IR操作码要送到CU进行译码
在这里插入图片描述
1——>R:CU把1送给R,控制信号发出控制存储器做读操作

  • 读回的内容就是参加加法运算操作数的地址,经过数据线送入到MDR当中
    操作数地址被保存到了MDR
    Ad(IR):IR寄存器的地址码部分

在这里插入图片描述
MDR操作数地址送到MAR
指令的地址码给出存储器地址的加法指令,在执行周期一定访存
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
计算机执行乘法指令时,由于其操作较复杂,需要更多的时间,通常采用中央与局部控制相结合的的控制方式。

多级时序系统实例分析

在这里插入图片描述

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值