前言

如果你对这篇文章可感兴趣,可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」,查看完整博客分类与对应链接。

文章目录

  • 前言
  • 第八章 控制器设计
    • 8.1 组合逻辑控制器
      • 8.1.1 操作码译码
      • 8.1.2 微操作设计概述
      • 8.1.3 (1) 指令周期微操作节拍安排
      • 8.1.4 (2) 绘制操作时间表
      • 8.1.5 (3) 设计微操作命令的最简逻辑表达式
      • 8.1.6 (4) 设计微操作命令的逻辑图
      • 8.1.7 (5) 综合优化
    • 8.2 微程序控制器工作原理
      • 8.2.1 微程序设计概述
      • 8.2.2 微程序工作原理
      • 8.2.3 微程序工作流程
      • 8.2.3 微程序设计特点总结
    • 8.3 微程序控制器设计方法
      • 8.3.1 微指令的编码方式
      • 8.3.2 微指令序列地址的形成

第八章 控制器设计

8.1 组合逻辑控制器

8.1.1 操作码译码

CU 执行的关键在于 IR 将指令操作码部分传入译码器中,译码器根据指令操作码部分输出对应的指令编号。

CU 再根据输入的指令编号,输出相应的微操作命令。

8.1.2 微操作设计概述

微操作设计的关键任务

由于控制器实质是根据当前指令功能,依次发出一系列控制信号,因此我们需要了解如下信息。

  1. 有哪些控制信号
  2. 这些控制信号如何依次发出?即这些控制信号应该安排到哪个机器周期的哪个节拍中发出。

微操作设计的前提假设

  • 采用同步控制方式。
  • 一个机器周期内有 3 个节拍。(时钟周期)
  • CPU 内部结构采用非总线方式。

安排微操作时序的原则

  1. 微操作的先后顺序一般不得随意更改。
  2. 被控对象不同的微操作尽量安排在一个节拍内完成。
    • 由于被控对象不同,因此不同微操作可以并行执行,提高执行效率。
  3. 占用时间较短的微操作,尽量安排在一个节拍内完成,并允许有先后顺序。
    • 两个微操作占用时间非常短,因此可以在同一个节拍内依次执行,加快硬件执行效率。

组合逻辑控制器设计流程

组合逻辑控制器就是一个大规模的组合逻辑电路,因此又称为硬布线控制器。

组合逻辑控制器设计一共分为以下 5 个流程。

  1. 指令周期的微操作节拍安排。
  2. 绘制操作时间表。
  3. 设计微操作命令的最简逻辑表达式。
  4. 设计微操作命令的逻辑电路图。
  5. 综合优化。

组合逻辑控制器设计的特点

  1. 思路清晰,简单明了。
  2. 电路庞杂,调试难,修改难,升级维护难。
  3. 速度快。
  4. 这种设计方式主要被 RISC 处理器采用,因此 RISC 处理器速度快,但一旦更新换代则很难做到兼容。

8.1.3 (1) 指令周期微操作节拍安排

取指周期微操作的节拍安排

间址周期微操作的节拍安排

执行周期微操作的节拍安排

以下述十条指令的执行周期为例。

  • CLA(清零)

T0,T1T_0,T_1T0​,T1​ 为空,T2T_2T2​ 时安排 0→AC0\rightarrow AC0→AC。

  • COM(取反)

T0,T1T_0,T_1T0​,T1​ 为空,T2T_2T2​ 时安排 AC‾→AC\overline{AC}\rightarrow ACAC→AC。

  • SHR(ACC右移,符号位不变)

T0,T1T_0,T_1T0​,T1​ 为空,T2T_2T2​ 时安排 L(AC)→R(AC),AC0→AC0L(AC)\rightarrow R(AC),AC_0\rightarrow AC_0L(AC)→R(AC),AC0​→AC0​。

  • CSL(循环左移)

T0,T1T_0,T_1T0​,T1​ 为空,T2T_2T2​ 时安排 R(AC)→L(AC),AC0→ACnR(AC)\rightarrow L(AC),AC_0\rightarrow AC_nR(AC)→L(AC),AC0​→ACn​。

  • STP(停机)

T0,T1T_0,T_1T0​,T1​ 为空,T2T_2T2​ 时安排 0→G0\rightarrow G0→G。

  • ADD X(ACC加上 X 对应数据)

  • STA X(存数)

  • LDA X(读数)

  • JMP X(跳转)

T0,T1T_0,T_1T0​,T1​ 为空,T2T_2T2​ 时安排 Ad(IR)→PCAd(IR)\rightarrow PCAd(IR)→PC。

  • BAN X(条件跳转)

T0,T1T_0,T_1T0​,T1​ 为空,T2T_2T2​ 时安排 A0∗Ad(IR)+A0‾(PC)→PCA_0*Ad(IR)+\overline{A_0}(PC)\rightarrow PCA0​∗Ad(IR)+A0​​(PC)→PC。

中断周期微操作的节拍安排

中断周期即三条中断隐指令的实现。

  • T0:T_0:T0​: 执行微操作 0→MAR,1→W0\rightarrow MAR,1\rightarrow W0→MAR,1→W 以及硬件关中断
  • T1:T_1:T1​: 执行微操作 PC→MDRPC\rightarrow MDRPC→MDR
  • T2:T_2:T2​: 执行微操作 MDR→M(MAR),向量地址→PCMDR\rightarrow M(MAR),向量地址\rightarrow PCMDR→M(MAR),向量地址→PC

8.1.4 (2) 绘制操作时间表

在这个步骤中需要根据第一步中设计的微操作来安排每个指令的具体执行过程。下图中空格子表示不执行。

取指周期操作时间表

间址周期操作时间表

执行周期操作时间表

ADD、STA、LDA 三个指令的执行过程如下。

其余七条指令的执行过程如下。

8.1.5 (3) 设计微操作命令的最简逻辑表达式

我们以 M(MAR)→MDRM(MAR)\rightarrow MDRM(MAR)→MDR 这条命令为例。

M(MAR)→MDR=FE∗T1+IND∗T1(ADD+STA+LDA+JMP+BAN)+EX∗T1(ADD+LDA)=T1{FE+IND(ADD+STA+LDA+JMP+BAN)+EX(ADD+LDA)}\begin{aligned} & M(MAR)\rightarrow MDR \\ & = FE*T_1+IND*T_1(ADD+STA+LDA+JMP+BAN) \\ & \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ +EX*T_1(ADD+LDA) \\ & = T_1\{FE+IND(ADD+STA+LDA+JMP+BAN)+EX(ADD+LDA)\} \end{aligned} ​M(MAR)→MDR=FE∗T1​+IND∗T1​(ADD+STA+LDA+JMP+BAN)               +EX∗T1​(ADD+LDA)=T1​{FE+IND(ADD+STA+LDA+JMP+BAN)+EX(ADD+LDA)}​

上述的逻辑表达式恰好是根据第二部分中各指令执行的操作时间表来决定的。

我们可以发现其中时钟信号 T1T_1T1​,机器周期 FE,IND,EXFE,IND,EXFE,IND,EX 以及十种操作类型均在下述的硬件电路中已经给出。

8.1.6 (4) 设计微操作命令的逻辑图

我们根据上述的最简逻辑表达式设计出下述的逻辑电路图。

8.1.7 (5) 综合优化

上述的过程只涉及到了一条微操作的设计,在实际工作中,我们需要将全部微操作命令的逻辑图综合起来,从整体上进行优化工作。

8.2 微程序控制器工作原理

8.2.1 微程序设计概述

微程序设计思想

以 “微程序-微指令-微操作命令” 三级对一条机器指令进行划分。

一条机器指令对应一个微程序,将微程序存入 ROM 中,称为控制存储器。

微程序与硬布线设计方式的联系

  • 微程序以微指令为单位,硬布线以时钟周期为单位。其中微指令与时钟周期一样,都会发出一个或几个微操作命令。
  • 硬布线方式的三级结构: “指令周期-机器周期-时钟周期-微操作 (控制信号)”
  • 微程序方式的三级结构: “大段微程序-小段微程序-微指令-微操作 (控制信号)”

8.2.2 微程序工作原理

控制存储器的组成

由于指令的取指、间址、中断周期均一致,因此在控制存储器中的固定位置统一存放这三个过程的微程序。并在其余部分依次存放各类操作执行周期对应的微程序。

微程序控制单元的基本框图

CMDR: 控存数据寄存器,保存当前微指令。
CMAR: 控存地址寄存器,保存微指令的地址。

微指令分成两个部分,“操作控制字段” 与 “顺序控制字段” (保存下一条微指令地址,因此也称为 “下址字段”)。

微程序的存储结构

根据控制存储器中的内容,我们可以看到取指周期的最后一条微指令的下址字段不确定,原因是不知道接下来执行哪一段微程序。

并且所有执行周期微程序最后一条微指令的下址字段均为 M,因为执行完后开始下一条指令的取址。

8.2.3 微程序工作流程

取指阶段

取指阶段入口地址 M 送给 CMAR

微指令的控制字段是一个0、1序列,其中 1 代表一个控制信号的开启。

执行阶段

8.2.3 微程序设计特点总结

特点

  • 指令执行的每个阶段都是一段微程序,共同组成完成指令的微程序。
  • 全部微指令存在控制存储器(CM)中,程序执行过程中只需读出。因此一旦指令集更新换代,也只需要更新 CM 即可,比硬布线方式方便很多。
    • 因此微程序设计方式为 CISC 处理器所采用。

实现关键点

  • 微指令的操作控制字段如何形成微操作命令。
  • 微指令的后续地址如何形成。

8.3 微程序控制器设计方法

8.3.1 微指令的编码方式

直接控制方式

在微指令的操作控制字段中,每一位代表一个微操作命令,这种方式速度最快。

在操作控制码字段,某位为 “1” 即表示该控制信号有效。

字段直接编码方式

将互斥的微操作经编码合在一起作为一个 “段”,每段经译码后发出控制信号。

例如 8 个互斥微操作,我们可以用 4 位进行二进制编码,最后再译码得到对应控制信号。(4 位的原因是还有一个无操作信号,一共 9 个信号)

这种方式缩短了微指令字长,增加了译码时间,执行较慢。

字段间接编码方式

混合编码

直接编码和字段编码(直接和间接)混合使用。

8.3.2 微指令序列地址的形成

6 种形成方式

  1. 微指令的下地址字段指出

  2. 根据机器指令的操作码形成(IR)

  3. 增量计数器
    (CMAR)+1→CMAR(CMAR)+1\rightarrow CMAR (CMAR)+1→CMAR

  4. 分支转移

    • 根据转移方式来判断转移去向。
  5. 由硬件产生微程序入口地址

    • 第一条微指令地址(由专门硬件产生)
    • 中断周期(由硬件产生中断周期微程序首地址)
  6. 通过测试网络

具体形成过程

微程序序列地址由下述的 555 种方式依次产生,并通过一个多路选择器来确定最终的序列地址,然后将地址传入 CMAR 中,经过译码后将控制存储器中对应的微程序存入CMDR中,然后发出对应的控制信号。

计算机组成原理完整学习笔记(八):控制器设计相关推荐

  1. 《王道计算机组成原理》学习笔记和总目录导航

    <王道计算机组成原理>学习笔记和总目录导读 本篇文章是阅读和学习<王道计算机组成原理>后总结的理论知识笔记导航,专门用于遗忘后复习 下面的文章是我在学习了<王道计算机组成 ...

  2. 计算机组成原理(哈工大)学习笔记

    文章目录 计算机组成原理 一.计算机系统概论 1.1计算机系统简介 一.计算机的软硬件概念 二.计算机系统的层次结构 三.计算机体系结构和计算机组成 1.2计算机的基本组成 1.3计算机硬件的主要技术 ...

  3. 《计算机组成原理》学习笔记

    目录 第一章 计算机系统概论 1.计算机的软硬件概念及系统的层次结构 2.计算机的基本组成 3.计算机体系结构与组成 4.冯·诺伊曼机基本组成.特点 5.计算机基本概念:CPU(由哪几部分构成)机器字 ...

  4. 《王道计算机组成原理》学习笔记总目录+思维导图

    本篇文章是对<2021王道组成原理>知识点的笔记总结归档,虽说是2021年的,但是这些都是最核心的底层基础知识,过多少年都不会有很大的变化,核心都差不多. 我的武功秘籍:note.bith ...

  5. 计算机组成原理分时传送电路设计,计算机组成原理和系统结构实验仪,FPGA设计,上海求育...

    原标题:计算机组成原理和系统结构实验仪,FPGA设计,上海求育 上海求育QY-JXSY46计算机组成原理与系统结构实验箱 上海求育QY-JXSY46计算机组成原理与系统结构实验箱是采用八位机主板和十六 ...

  6. 计算机原理考研题库,2022考研853计算机专业基础综合《计算机组成原理》复习笔记及考研真题题库.pdf...

    2022考研 853计算机专业基础综合 <计算机组成原理>复习笔记及考 研真题题库 计算机系统概论 一.计算机的分类 1电子模拟计算机 模拟计算机的特点是数值由连续量来表示,运算过程也是连 ...

  7. 黑马程序员_java自学学习笔记(八)----网络编程

    黑马程序员_java自学学习笔记(八)----网络编程 android培训. java培训.期待与您交流! 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无 ...

  8. 853计算机科学基础综合,2022考研853计算机专业基础综合《计算机组成原理》复习笔记及考研真题题库...

    2022考研853计算机专业基础综合<计算机组成原理>复习笔记及考研真题题库 计算机系统概论 一.计算机的分类 1电子模拟计算机 模拟计算机的特点是数值由连续量来表示,运算过程也是连续的. ...

  9. Halcon 学习笔记八:颜色识别

    Halcon 学习笔记八:颜色识别 一.图像处理需要的知识 二.图像处理的预处理和分割过程 二.颜色识别的方法 三.例子一 四.例子二 五.例子三 一.图像处理需要的知识 1.图像处理基础(rgb(h ...

  10. 【一文弄懂】张正友标定法-完整学习笔记-从原理到实战

    张正友标定法-完整学习笔记-从原理到实战 文章目录 张正友标定法-完整学习笔记-从原理到实战 (零)前言: 1 为什么需要标定? 2 相机标定的已知条件和待求解是什么? 标定前的已知条件: 待求信息: ...

最新文章

  1. Docker编排工具Fig介绍
  2. Day10_linux计划任务管理
  3. java调用接口失败重试,httpclient接口测试中重试控制器设置
  4. 11寸笔记本电脑推荐_3000-20000元高性价比笔记本电脑推荐 含CPU天梯图、显卡天梯图 2020年11月更新...
  5. 网络工程师成长日记370-阿尔斯通
  6. 把经典的ABAP webdynpro应用配置到SAP Fiori Launchpad里
  7. mybatis学习(2):基本设置和核心配置
  8. 【C/C++学习】之七、指向函数的指针
  9. 现代程序设计 作业5
  10. 正弦函数_题型和解析 | 三角函数(补充)
  11. python函数递归 字符串反转
  12. 以太坊到底是什么 | 工作原理
  13. 1 + 2 + 3 + 4 + ⋯
  14. java timer指定线程池_Java 定时器(Timer)及线程池里使用定时器实例代码
  15. Spring相关面试题总结
  16. Jupyter Notebook使用
  17. SPSS19.0实战之聚类分析(转载)
  18. 腾讯广告算法大赛(即腾讯社交广告算法大赛)
  19. 前沿重器[7] | 小布助手登顶百度千言短文本相似度的秘诀
  20. 图片也查重?期刊用AI审论文防造假,旋转/翻转/拉伸都不行

热门文章

  1. Xor异或是什么意思? - 已解决 - 搜搜问问
  2. ERP选型需把握主动权!
  3. Java实现棒子老虎鸡小游戏
  4. Java设计person类,有姓名,年龄,性别。要求:该类至多只能创建一男,一女两个对象。
  5. HNUCM 1388:高中数学
  6. iphonex屏幕出现一条绿线_苹果x出现闪屏乱跳怎么回事
  7. 代码文件夹带有红色感叹号_接口测试平台代码实现7:菜单的开发
  8. Mysql之查询基础select
  9. len函数实例python_Python通过len函数返回对象长度
  10. python程序设计期末作业_Python高级应用程序设计任务期末作业