计算机组成原理 控制器

控制器

控制器的功能和原理
控制器的结构和功能
硬布线控制器
微程序控制器
设计步骤
CPU控制方式
微操作时序安排
微程序控制器的组成
微指令格式
微程序设计步骤

控制器的功能

运算器部件通过数据总线与内存储器、输入设备和输出设备传送数据
输入设备和输出设备通过接口电路与总线相连接
内存储器、输入设备和输出设备从地址总线接收地址信息,从控制总线得到控制信号,通过数据总线与其他部件传送数据
控制器部件从数据总线接收指令信息从运算器部件接收指令转移地址,送出指令地址到地址总线,还要向系统中的部件提供它们运行所需要的控制信号控制信号图例
在这里插入图片描述

CU控制单元

CU的输入:
(1) 指令寄存器
OP (IR)->CU控制信号的产生与操作码有关
(2) 时钟:
一个时钟脉冲发一个操作命令或一组需要同时执行的操作命令
(3) 标志:
如条件转移指令,根据相应的标志位决定下一步操作
(4) 外来信号:
中断请求信号INTR
总线请求信号HRO

CU输出:
(1) CPU 内部的控制信号
寄存器之间的数据传输、PC的修改、控制ALU进行相应的运算
(2) ))
到存储器:访存控制信号MREO、读命令RD、写命令WR
到I/O设备:访问I/O设备的控制信号IO
中断响应信号INTA、总线响应信号HLDA
在这里插入图片描述

硬布线控制器

硬布线控制器
硬布线控制器就是采用逻辑电路设计控制器
硬布线设计步骤
1.分析每个阶段的微操作序列
2.选择CPU的控制方式
3.安排微操作时序
4.组合电路设计
在这里插入图片描述

CPU控制方式

CPU控制方式 特点
同步控制方式 整个系统所有的控制信号均来自一个统一的时钟信号。同步控制方式的优点是控制电路简单,缺点是运行速度慢
异步控制方式 异步控制方式不存在基准时标信号。各部件按自身固有的速度工作,通过应答方式进行联络。异步控制方式的优点是运行速度快,缺点是控制电路比较复杂
联合控制方式 对各种不同的指令的微操作实行大部分采用同步控制、小部分采用异步控制的办法。

设计骤
1.分析每个阶段的微操作序列
2.选择CPU的控制方式(同步控制方式,一个机器周期内安排3个节拍)
3.安排微操作时序
4.电路设计

安排微操作时序
原则一:微操作的先后顺序不得随意更改
原则二:被控对象不同的微操作尽量安排在个节拍内完成
原则三:占用时间较短的微操作尽量安排在节拍内完成并允许有先后顺序
[概念]
取指阶段
pnuuzz
T0 (1)PC->MAR
T0 (2)1->R
T1 (3) M(MAR)->MDR   (3)在(1)之后
T1 (4)(PC)+1->PC   (4)(1)后
T2 (5) MDR->IR   (5)在(3)之后
T2 (6) OP(IR)->ID   (6)在(5)之后

安排微操作时序
原则一:微操作的先后顺序不得随意更改
原则二:被控对象不同的微操作尽量安排在一
原则三:占用时间较短的微操作尽量安排在个节拍内完成一个节拍内完成并允许有先后顺序
析指阶段
T0 (1) Ad(IR)->MAR
T0 (2) 1->R
T1 (3) M(MAR)->MDR
T2 (4) MDR->ACC

安排微操作时序
原则一:微操作的先后顺序不得随意更改
原则二:被控对象不同的微操作尽量安排在个节拍内完成
原则三:占用时间较短的微操作尽量安排在节拍内完成并允许有先后顺序

中断阶段
T0 (1)a->MAR
T0 (2) 1->W
T1 (3) 0->EINT 硬件关中断
T2 (4)(PC)->MDR
T2 (5) MDR->M(MAR)
T2 (6) 中断向量地址->PC

执行阶段常见指令
  • 非访存指令
    • CLA
      clear
      ACC清零   0->AC
    • COM
      complement
      ACC取反
    • SHR
      shift
      算术右移   L(AC)->R(AC),AC0->AC0
    • CSL
      cyclic shift
      循环左移   R(AC)->L(AC), A C 0 − > A C n AC_0->AC_n AC0>ACn
    • STP
      stop
      停机   0->G
  • 访存指令
    • ADD X   Ad(IR)->MAR,1->R
      加法指令   M(MAR)->MDR
      隐含ACC   (AC)+(MDR)->ACC
    • STA X   Ad(IR)->MAR,1->W
      存数指令   (ACC)->MDR
      隐含ACC   MDR->M(MAR)
    • LDAX   Ad(IR)->MAR,1->R
      取数指令   M(MAR)->MDR
      隐含ACC   MDR->AC
  • 转移指令
    • JMP X
      jump
      无条件转移 Ad(IR)->PC
    • BAN X
      Branch ACC
      Negative
      条件转移

硬布线组合电路设计
(1)列出操作时间表
(2)写出微操作命令的最简表达式
(3)画出逻辑图

在这里插入图片描述

M(MAR)->MDR
= F E ⋅ T 1 , + I N D ⋅ T 1 ( A D D + S T A + L D A + J M P + B A N ) + E X ⋅ T 1 ( A D D + L D A ) =FE·T_1,+IND·T_1(ADD+STA+LDA+JMP+BAN)+EX·T_1(ADD+LDA) =FET1,+INDT1(ADD+STA+LDA+JMP+BAN)+EXT1(ADD+LDA)
= T 1 { F E + I N D ( A D D + S T A + L D A + J M P + B A N ) + E X ( A D D + L D A ) } =T_1\{FE+IND(ADD+STA+LDA+JMP+BAN)+EX(ADD+LDA)\} =T1{ FE+IND(ADD+STA+LDA+JMP+BAN)+EX(ADD+LDA)}

微程序控制器

微程序控制器
微程序控制器采用存储逻辑实现,也就是把微操作信号代码化,使每条机器指令转化成为一段微程序并存入一个专门的存储器 (控制存储器) 中,微操作控制信号由微指令产生。
在这里插入图片描述

概念
微命令是微操作的控制信号
微操作是微命令的执行过程
微指令是若干微命令的集合
执行一条微指令的时间叫做微周期
一条指令对应一个微程序。

微程序控制器
  1. 控制存储器
    它是微程序控制器的核心部件,用于存放各指令对应的微程序,控制存储器可用只读存储器 ROM构成
    指令
  2. 微指令寄存器
    用于存放从 CM中取出的微指令,它的位数同微指令字长相等
  3. 微地址形成部件
    用于产生初始微地址和后继微地址,以保证微指令的连续执行
  4. 微地址寄存器
    接收微地址形成部件送来的微地址,为在CM中读取微指令作准备

在这里插入图片描述

微指令格式
取值 析址 析址 析址
微指令123... 微指令123... 微指令123...

取指阶段:
默认是公共的,故如果某指令系统中有n条机器指令,则CM中微程序的个数至少是n+1个
取指阶段,析指阶段,中断阶段不一定是公共的:
但是可以做成公共的,故如果这台计算机指令系统中有n条机器指令,则CM中微程序的个数至少是n+3个

微指令格式

  1. 水平型微指令:一次能定义并执行多个并行操作
操作控制 顺序控制
优点: 微程序短,执行速度快, 缺点: 微指令长,编写微程序较麻烦
  1. 垂直型微指令: 由微操作码字段规定微指令的功能
uOP(微操作码) 目的地址 源地址
优点 : 微指令短、简单、规整,便于编写微程序 缺点: 微程序长,执行速度慢,工作效率低。
  1. 混合型微指令: 由微操作码字段规定微指令的功能
    在垂直型的基础上增加些不太复杂的并行操作,微指令较短,仍便于编写,微程序也不长,执行速度加快
水平型微指令的编码方式
  1. 直接编码(直接控制)方式
    在微指令的操作控制字段中,每一位代表一个微操作命令
1 0 0 0 0 0 1 0 下地址
操作控制
优点: 简单、直观,执行速度快,操作并行性好。 缺点: 微指令字长过长,n个微命令就要求微指令的操作字段有n位,造成控存容量极大
  1. 字段直接编码方式
    将微指令的控制字段分成若千"段",每段经译码后发出控制信号微命令字段分段的原则
  • D互斥性微命令分在同一段内,相容性微命令分在不同段内。
  • 每个小段中包含的信息位不能太多,否则将增加译码线路的复杂性和译码时间。
  • 一般每个小段还要留出一个状态,表示本字段不发出任何微命令。

因此,当某字段的长度为3位时,最多只能表示7个互斥的微命令,通常用000表示不操作。
在这里插入图片描述

优点 : 可以缩短微指令字长
缺点: 要通过译码电路后再发出微命令,因此比直接编码方式慢

微指令的地址形成方式
  1. 微指令的下地址字段指出:
    微指令格式中设置一个下地址字段,由微指令的下地址字直接指出后继微指令的地址,这种方式又称断定方式
  2. 根据机器指令的操作码形成:
    当机器指令取至指令寄存器后,微指令的地址由操作在微地址形成部件形成
  3. 增量计数器法(CMAR)+1 CMAR
  4. 分支转移
    转移方式: 指明判别条件,
    转移地址: 指明转移成功后的去向
操作控制字段 转移方式 转移地址
  1. 通过测试网络
  2. 由硬件产生微程序入口地址
    第一条微指令地址 由专门 硬件 产生
    中断周期会由硬件产生中断周期微程序首地址
微程序设计

设计步骤:

  1. 分析每个阶段的微操作序列
  2. 写出对应机器指令的微操作命令及节拍安排
  3. 确定微指令格式
  4. 编写微指令码点

取指周期设计

取指周期-硬布线控制器的节拍安排 取指周期-微程序控制器的节拍安排
T0 PC->MAR T0 PC->MAR
T0 1->R T0 1->R
T1 M(MAR)->MDR T1 M(MAR)->MDR
T1 (PC)+1->PC T1 (PC)+1->PC
T2 MDR->IR T2 MDR->IR
T2 OP(IR)->ID T2 OP(IR)->微地址形成部件

取指周期设计
取指周期-微程序控制器的节拍安排
T0 PC-> MAR
T0 1->R
T1 M(MAR)->MDR
T1 (PC)+1->PC
T2 MDR->IR
T2 OP(IR)->微地址形成部件

需考虑如何读出这3条微指令,以及如何转入下一周期
T0 PC->MAR
T0 1->R
T1 Ad (CMDR)-> CMAR
T2 M(MAR)->MDR
T2 (PC)+1->PC
T3 Ad (CMDR)-> CMAR
T4 MDR-> IR
T4 OP(IR)->微地址形成部件
T5 OP(IR)-> CMAR

  1. 写出每个周期所需要的微操作 (参照硬布线)
  2. 补充微程序控制器特有的微操作:
    a.取指周期
    Ad( CMDR)CMAR
    OP(IR)CMAR
    b.执行周期
    Ad(CMDR)-CMAR
微程序设计步骤
  1. 分析每个阶段的微操作序列
  2. 写出对应机器指令的微操作命令及节拍安排
    (1) 写出每个周期所需要的微操作 (参照硬布线)
    (2) 补充微程序控制器特有的微操作:

a.取指周期: Ad(CMDR)- >CMAR   OP(IR)->CMAR
b.执行周期: Ad(CMDR)->CMAR
3. 确定微指令格式
根据微操作个数决定采用何种编码方式,以确定微指令的操作控制字段的位数。由微指令数确定微指令的顺序控制字段的位数。
最后按操作控制字段位数和顺序控制字段位数就可确定微指令字长。
4. 编写微指令码点
根据操作控制字段每一位代表的微操作命令,编写每一条微指令的码点

总结

微程序控制器 硬布线控制器
工作原理 微操作控制信号以微程序的形式存放在控制存储器中,执行指令时读出即可 微操作控制信号由组合逻辑电路根据当前的指令码状态和时序,即时产生
执行速度
规整性 较规整 烦琐,不规整
应用场合 CISC CPU RISC CPU
易扩充性 易扩充修改 困难

注意区分以下寄存器 :

  • 地址寄存器 (MAR) : 用于存放主存的读/写地址
  • 微地址寄存器(CMAR) : 用于存放控制存储器的读/写微指令的地址
  • 指令寄存器 (IR) : 用于存放从主存中读出的指令
  • 微指令寄存器 (CMDR或uIR) : 用于存放从控制存储器中读出的微指令

相关推荐

  1. 计算机组成原理

    2024-01-05 12:46:08       18 阅读
  2. 计算机组成原理讲解

    2024-01-05 12:46:08       19 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-05 12:46:08       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-05 12:46:08       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-05 12:46:08       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-05 12:46:08       18 阅读

热门阅读

  1. 面试经典150题(62-64)

    2024-01-05 12:46:08       29 阅读
  2. 中间件:构建现代软件架构的桥梁

    2024-01-05 12:46:08       31 阅读
  3. merge发生冲突时 ☞ 撤销merge

    2024-01-05 12:46:08       42 阅读
  4. WiFi7: MLD寻址

    2024-01-05 12:46:08       41 阅读
  5. redis总结

    2024-01-05 12:46:08       41 阅读
  6. .NET C# 如何获取object对象的数据

    2024-01-05 12:46:08       29 阅读
  7. CSS中变量的作用

    2024-01-05 12:46:08       36 阅读
  8. Linux 服务器安全策略技巧:网络分段

    2024-01-05 12:46:08       31 阅读
  9. 路由的安装顺序

    2024-01-05 12:46:08       43 阅读
  10. Go语言中的乐观锁与悲观锁

    2024-01-05 12:46:08       45 阅读