挑战408——组成原理(24)——硬布线控制器

控制单元(CU)是提供完成计算机指令全部操作的微操作指令序列部件.用下图来描述其外部特性:
在这里插入图片描述

输入信号
  1. 时钟
    上述的所有操作都具有下面的两点特点:
    • 完成每个操作都要占用一定的时间
    • 各个操作都是有先后顺序的

因此,为了让CU按一定的顺序,一定节拍发出各种控制信号,CU必须受到时钟的控制。也就是说,每一个时钟脉冲发送一个或者一组的操作命令 。

  1. 指令寄存器(IR)
    现行指令的操作码,决定了不同指令在执行周期所需要完成的不同操作,因此,指令的操作码字段就是CU的输入信号。,并且与时钟配合,产生不同的控制信号。
  2. 标志
    为什么标志也是CU的输入信号呢?这是因为CU有时候要依赖CPU当前所处的状态(比如ALU操作产生的结果)来产生控制信号,因此,标志也是CU的输入信号。
  3. 来自系统总线的控制信号
    比如:中断请求,DAM请求。
  4. 送到系统总线的信号(输出信号)
    比如:命令I/O或者主存进行读写,对中断的响应等等
  5. CPU内部的控制信号(输出信号)
    主要用于CPU内部寄存器之间的传送,以及控制ALU实现不同的操作。
常见的操作控制器

操作控制器一般分为两种:硬布线控制器,微程序控制器

硬布线控制器的微操作

为了便于讨论,假设CPU内有4个寄存器,MAR与地址总线相连,存放欲访问的存储单元地址。MDR与数据总线相连,存放欲写入存储器信息或者近期从存储器中读出的信息。PC存放现行指令的地址,且有计数功能,IR存放现行指令。
1. 取址周期
在这里插入图片描述

PC ->MAR//将现行指令的地址,送到MAR
1->R //向主存发送读指令,进行读操作
M(MAR) ->MDR //通过地址总线,将MAR所指的主存单元,通过数据总线,送到MDR
MDR ->IR  //将MDR的内容送到IR
OP(IR)->CU //j将指令的操作码部分,送到CU进行译码操作
(PC)+1->PC //PC自动加一,形成下一条指令地址

2. 间址周期
在这里插入图片描述
一旦取值周期结束,CPU便检查IR中的内容,以确定是否有间址操作,如果有,那么MDR的形式地址(记为Ad(MDR)),送到MAR中,然后通过地址总线,此时CU向存储器中发出读命令,以获取有效地址,并将读到的数据存入MDR。微操作如下:

Ad(IR) ->MAR //将指令的形式地址送到MAR
1-->R //cu发出读命令
M(MAR)->MDR  //将MAR指向的主存单元内容,也就是有效地址,通过数据总线送到MDR中
MDR->Ad(IR)//将EA送到寄存器的地址字段

3.执行周期
不同指令的执行周期大不相同,这里主要分析非访存类跟访存类以及转移类指令。
3.1 非访存类(即在执行周期内不访存)

指令意义微操作
CLA清除ACC指令0->ACC
COMACC取反指令!ACC ->ACC
SHR算术右移一位L(ACC)->R(ACC), ACC。->ACC。(符号位不变)
CSL循环左移一位R(ACC)->L(ACC), ACC。->ACCn
STP停止机器运行0->G(G为运行标记触发器,1运行,0停机)

3.2 访存类
这一类比较多,用markdown画的表格不好看,那么我就拍一张
在这里插入图片描述
在这里插入图片描述

4. 中断周期
在执行周期结束时刻,CPU要查询是否有请求中断事件发生,如有,则进入中断周期。在中断周期,由中断隐指令自动完成断点保护,寻找中断服务程序入口地址以及硬件关中断操作,假设程序的断点存到了主存的0单元处,采用硬件向量法寻找入口地址,则微操作如下:

0->MAR //将地址‘0’,送入MAR中
1->W //C发出写指令
PC ->MDR //将PC的内容(即程序的断点 )。送到MDR
MDR->M(MAR) //将MDR的内容,写入到MAR所指示的主存单元(即0)中
向量地址 ->PC //为下一条指令取指周期做准备
0->EINT  //中断触发器清0

如果程序断点存入的是栈中,那么进栈的操作为,先修改栈指针,再存取数据,也就是上面的第一步改为:

(SP)-1 ->SP
SP ->MAR
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值