《计算机组成原理》唐朔飞 第10章 控制单元的设计 - 学习笔记

news2024/12/23 23:10:59

写在前面的话:此系列文章为笔者学习计算机组成原理时的个人笔记,分享出来与大家学习交流。使用教材为唐朔飞第3版,笔记目录大体与教材相同。


网课

计算机组成原理(哈工大刘宏伟)135讲(全)高清_哔哩哔哩_bilibili


笔记

《计算机组成原理》唐朔飞 第5章 输入输出系统 - 学习笔记_友人帐_的博客-CSDN博客

《计算机组成原理》唐朔飞 第7章 指令系统 - 学习笔记_友人帐_的博客-CSDN博客

《计算机组成原理》唐朔飞 第8章 CPU的结构和功能 - 学习笔记_友人帐_的博客-CSDN博客

《计算机组成原理》唐朔飞 第9章 控制单元的功能 - 学习笔记_友人帐_的博客-CSDN博客

《计算机组成原理》唐朔飞 第10章 控制单元的设计 - 学习笔记_友人帐_的博客-CSDN博客


课后习题答案

计算机组成原理(第三版)唐朔飞-课后习题(完整版)_计算机组成原理唐朔飞第三版答案_蓝净云的博客-CSDN博客


哈尔滨工业大学计组实验

计算机组成原理实验一 运算器 预习报告_基本运算器实验_旅僧的博客-CSDN博客

计算机组成原理实验二 存储系统 预习报告_旅僧的博客-CSDN博客

计算机组成原理实验三 系统总线和具有基本输入输出功能的总线接口 预习报告_旅僧的博客-CSDN博客

计算机组成原理实验四 微程序控制器 实验报告_旅僧的博客-CSDN博客


第十章 控制单元的设计

10.1 组合逻辑设计

特点:

  • 思路清晰,简单明了
  • 线路庞杂,调试困难,修改困难
  • 速度快(RISC)

10.1.1 组合逻辑控制单元CU框图

  • 将计算机的时钟接入节拍发生器,频率为主频,产生多个节拍信号,在每个节拍信号时钟的起始段CU可以产生控制命令。
  • 将存放在IR的n位操作码经过一个译码电路产生 2 n 2^n 2n个输出,每对应一种操作码便会有一个输出送至CU;
  • 输入还包括一系列标志信号
  • 在每一个节拍会输出一个或多个控制信号。多个表示这些指令能并行操作或者在一个时钟周期内可以完成。

在这里插入图片描述

10.1.2 微操作的节拍安排

假设机器采用同步控制,每个机器周期包含3个节拍。

在这里插入图片描述

(1)安排微操作时序的原则

  1. 有些微操作的次序是不容改变的
  2. 将被控制对象不同的微操作尽可能安排在同一个节拍内(尽量并行),以节省时间。
  3. 如果有些微操作所占的时间不长,应该将它们安排在一个节拍内完成,并且允许这些微操作有先后次序(可以分为上升沿和下降沿开始)。

(2)取指周期微操作的节拍安排
在这里插入图片描述

T0:PC->MAR, 1->R

T1: M(MAR)->MDR, (PC)+1->PC

T2: MDR->IR, OP(IR)->ID

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

在这里插入图片描述

T0: Ad(IR)→MAR, 1→R

T1: M(MAR)→MDR

T2: MDR→Ad(IR)

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

  1. 清除累加器指令CLA

该指令在执行周期只有一个微操作,按同步控制的原则,此操作可安排在 T 0 ∼ T 2 T_0\sim T_2 T0T2的任一节拍内,其余节拍空,例如:

在这里插入图片描述

  1. 累加器ACC取反指令COM

此操作可安排在 T 0 ∼ T 2 T_0\sim T_2 T0T2的任一节拍内,其余节拍空,例如:

在这里插入图片描述

  1. 算术右移一位指令SHR

在这里插入图片描述

  1. 循环左移一位指令CSL
    在这里插入图片描述

  2. 停机指令STP

在这里插入图片描述

  1. 加法指令 ADD X

在这里插入图片描述

  1. 存数指令 STA X

在这里插入图片描述

  1. 取数指令 LDA X

在这里插入图片描述

  1. 无条件转移指令 JMP X

在这里插入图片描述

  1. 有条件转移(负则转)指令 BAN X

在这里插入图片描述

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

保存断点、形成中断服务程序的入口地址、关中断
在这里插入图片描述

10.1.3 组合逻辑设计步骤

首先根据指令微操作的节拍安排列出微操作命令的操作时间表,然后写出每一个微操作命令(控制信号)的逻辑表达式,最后根据逻辑表达式

画出相应的组合逻辑电路图

(1)列操作时间表

在这里插入图片描述

  • I:间址周期的标志,有效则进入到间址周期,否则直接进入执行阶段,对应最后取指两行;
  • 间址周期可能有多个,用IND为间址周期标志;

(2)写微操作命令的最简逻辑表达式

在这里插入图片描述

(3)画出微操作命令的逻辑图

在这里插入图片描述

在设计逻辑图时要考虑门的扇入系数和逻辑级数。如果采用现成芯片,还需选择芯片型号。

10.2 微程序设计

组合逻辑电路线路结构十分庞杂,调试困难,为了克服这些缺点,可采用微程序设计方案。

10.2.1 微程序设计思想的产生(存储逻辑)

将一条机器指令编写成一个微程序,每一个微程序包含若干条微指令,每一条微指令对应一个或几个微操作命令。然后把这些微程序存到一个控制存储器中,用寻找用户程序机器指令的方法来寻找每个微程序中的微指令。由于这些微指令是以二进制代码形式表示的,每位代表一个控制信号(若该位为1,表示该控制信号有效;若该位为0,表示此控制信号无效),因此,逐条执行每一条微指令,也就相应地完成了一条机器指令的全部操作。

微程序控制单元的核心部件是一个控制存储器。

微程序设计省去了组合逻辑设计过程中对逻辑表达式的化简步骤,无须考虑逻辑门级数和门的扇入系数,使设计更简便,而且由于控制信号是以二进制代码的形式出现的,因此只要修改微指令的代码,就可改变操作内容,便于调试、修改,甚至增删机器指令,有利于计算机仿真。

10.2.2 微程序控制单元框图及工作原理

(1)机器指令对应的微程序

一条机器指令对应一个微程序,由有顺序的几条微指令组成。

在这里插入图片描述

(2)微程序控制单元基本框图

在这里插入图片描述

  • 控制存储器:核心,存放微程序,只读;
  • CMAR:是控制存储器地址寄存器,用来存放欲读出的微指令地址;
  • CMDR:是控制存储器数据寄存器,用来存放从控存读出的微指令;
  • 微地址形成部件:形成微程序在控制存储器的首地址,接受来自IR的操作码字段;
  • 顺序逻辑:控制形成下一条微指令的地址(从微地址形成部件和下地址中选出一个送给CMAR)。其输入与微地址形成部件、微指令的下地址字段以及外的标志有关。

微指令基本格式

  • 操作控制字段:发出各种控制信号;

  • 顺序控制字段:下条微指令的地址(简称下地址),以控制微指令序列的执行顺序。
    在这里插入图片描述

10.2.3 微指令的编码方式

(1)直接编码(直接控制)方式

每一位代表一个微操作命令,“1” 表示控制信号有效,“0”表示控制信号无效。

在这里插入图片描述

  • 含义清晰,而且只要微指令从控存读出,即刻可由控制字段发出命令,速度快。
  • 但由于机器中微操作命令甚多,可能使微指令操作控制字段达几百位,造成控存容量极大。

(2)字段直接编码方式

是将微指令的操作控制字段分成若千段,将一组互斥的微操作命令放在一个字

段内,通过对这个字段译码,便可对应每一个微命令。

(因靠字段直接译码发出微命令,又称显式编码)

在这里插入图片描述

  • 可用较少的二进制信息表示较多的微操作命令信号。例如,3位二进制代码译码后可表示7个互斥的微命令,留出一种状态表示不发微命令。
  • 由于增加了译码电路,使微程序的执行速度稍微减慢。

(3)字段间接编码方式

一个字段译码结果还与其他字段译码结果有关。

(由于不是靠字段直接译码发出微命令,又称隐式编码)

在这里插入图片描述

  • 进一步缩短微指令字长
  • 削弱了微指令的并行控制能力

(4)混合编码

把直接编码和字段编码(直接或间接)混合使用,以便能综合考虑微指令的字长、灵活性和执行微程序的速度等方面的要求。

(5)其他

微指令中还可设置常数字段,用来提供常数、计数器初值等。常数字段还可以和某些解释位配合,如解释位为0,表示该字段提供常数;解释位为1,表示该字段提供某种命令,使微指令更灵活。

10.2.4 微指令序列地址的形成

顺序逻辑从多个来源中选出正确的微指令地址送入CMAR。

后续微指令地址形成原理图:

在这里插入图片描述

  1. (CMAR)+1 -> CMAR
  2. 微指令的下地址字段
  3. 指令寄存器OP字段(通过微地址形成部件)
  4. 硬件形成的微程序入口地址

(1)直接由微指令的下地址字段指出

又称断定方式。

在这里插入图片描述

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

在这里插入图片描述

(3)增量计数器法

在很多情况下,后续微指令的地址是连续的,因此对于顺序地址,微指令可采用增量计数法,即 ( C M A R ) + 1 → C M A R (CMAR)+1\rightarrow CMAR (CMAR)+1CMAR来形成后续微指令的地址。

(4)分支转移

根据各种标志来决定下一条微指令的地址。

微指令格式:

在这里插入图片描述

  • 转移方式:指明判别条件
  • 转移地址:指明转移成功后的去向

(5)通过测试网络形成

将顺序控制分为高位低位,高位不变,低位字段通过一个测试网络,由测试源(状态和条件)对低位地址进行变换,之后和高位地址合在一起,形成一个新的微指令地址,送入CMAR中。

在这里插入图片描述

可以用于微程序在小范围内的条件转移。

(6)由硬件产生微程序地址

  • 当开机后,第一条微指令的地址可由专门的硬件电路产生,也可由外部直接向CMAR输入微指令的地址,这个地址即为取指周期微程序的入口地址。

  • 当有中断请求时,若条件满足,CPU响应中断进入中断周期,此时需中断现行程序,转至对应中断周期的微程序。由于设计控制单元时已安排好中断周期微程序的入口地址,故响应中断时,可由硬件产生中断周期微程序的入口地址。

  • 当出现间接寻址时,也可由硬件产生间址周期微程序的入口地址。

10.2.5 微指令格式

(1)水平型微指令

特点:一次能定义并执行多个并行操作的微命令。

例如:直接编码、字段直接编码、字段间接编码以及直接和字段混合编码。

(2)垂直型微指令

特点:采用类似机器指令操作码的方式,在微指令字中,设置微操作码字段,由微操作码规定微指令的功能。通常一条微指令有12个微命令,控制12种操作。

对比:

①水平型微指令比垂直型微指令并行操作能力强、效率高、灵活性强。

②水平型微指令执行一条机器指令所需的微指令数目少,因此速度比垂直型微指令的速度快。

③水平型微指令用较短的微程序结构换取较长的微指令结构,垂直型微指令正相反它以较长的微程序结构换取较短的微指令结构。

④水平型微指令与机器指令差别较大,垂直型微指令与机器指令相似。

10.2.6 静态微程序设计和动态微程序设计

静态:CPU的指令集事先设计好,不再修改,保存在ROM里;

动态:可以修改或拓展计算机系统的指令集,增加指令。通过修改微程序的方式,在控制存储器中写入新的指令所对应的执行阶段的微程序,实现对指令集的扩展。有利于仿真,采用EPROM作为控制存储器。

10.2.7 毫微程序设计

微程序可看作是解释机器指令的,毫微程序可看作是解释微程序的,而组成毫微程序的毫微指令则是用来解释微指令的。采用毫微程序设计计算机的优点是用少量的控制存储器空间来达到高度的并行。

毫微程序控制存储器的基本组成

在这里插入图片描述

10.2.8 串行微程序控制和并行微程序控制

并行与与指令二级流水相似。

在这里插入图片描述

10.2.9 微程序设计举例

(1)写出对应机器指令的微操作及节拍安排

  1. 取指阶段的微操作及节拍安排
  • 指令取至IR后,微程序控制需由操作码形成执行阶段微程序的入口地址。

  • 在取指微程序中,除第一条微指令外,其余微指令的地址均由上一条微指令的下地址字段直接给出,因此上述每一条微指令都需要增加一个将微指令下地址字段送至CMAR的微操作,记作 Ad(CMDR) -> CMAR,而这一操作只能由下一个时钟周期T的上升沿将地址打入CMAR内。

  • 至于取指微程序的最后一条微指令,其后续微指令的地址是由微地址形成部件形成的,而且也只能由下一个T的上升沿将该地址打入CMAR中,即微地址形成部件 -> CMAR。为了反映该地址与操作码有关,故记作OP(IR) -> 微地址形成部件 -> CMAR

在这里插入图片描述

T0: PC→MAR, 1→R

T1: Ad(CMDR)→CMAR

T2: M(MAR)→MDR, (PC)+1→PC

T3: Ad(CMDR)→CMAR

T4: MDR→IR, OP(IR)→微地址形成部件(编码器)

T5: OP(IR)→微地址形成部件→CMAR

所有微指令均由T的上升沿打入CMDR中。

  1. 执行阶段的微操作及节拍安排

执行阶段的微操作由操作码性质而定,同时也需要考虑后续微指令地址的形成问题。

① CLA 指令

在这里插入图片描述

② COM 指令

在这里插入图片描述

③ SHR 指令

在这里插入图片描述

④ CSL 指令

在这里插入图片描述

⑤ STP 指令

在这里插入图片描述

⑥ ADD 指令

在这里插入图片描述

⑦ STA 指令

在这里插入图片描述

⑧ LDA 指令

在这里插入图片描述

⑨ JMP 指令

在这里插入图片描述

⑩ BAN 指令

在这里插入图片描述

(2)确定微指令格式

  1. 微指令的编码方式

  2. 后续微指令地址的形成方式

  3. 微指令字长

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

(3)编写微指令码点

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/591803.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Office project 2021安装

哈喽,大家好。今天一起学习的是project 2021的安装,Microsoft Office project项目管理工具软件,凝集了许多成熟的项目管理现代理论和方法,可以帮助项目管理者实现时间、资源、成本计划、控制。有兴趣的小伙伴也可以来一起试试手。…

Spring事务与事务传播

文章目录 一、什么是事务?二、Spring事务实现编程式事务声明式事务 三、Transactional的使用参数作用Spring事务的隔离级别事务失效的场景Transactional工作原理 四、Spring事务传播机制Spring有哪些事务传播机制? 一、什么是事务? 事务:事务是一组操…

Python十类常见异常类型(附捕获以及异常处理方式)

目录 前言十类异常1.TypeError2.ValueError3.NameError4.IndexError5.KeyError6.ZeroDivisionError7.IOError8.ImportError9.AttributeError10.KeyboardInterrupt 异常捕获以及处理总结 前言 大家好,我是辣条哥!今天给大家讲讲我们刚开始写代码是都会出现…

系统学习】Java基础3之反射

Java反射 反射机制概述 Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内 部属性及方法 加载完类之后,在堆内存的方法区中就产…

美债提高上限的后果

* * * 原创:刘教链 * * * 号外:今天在小号“刘教链Pro”发表了一篇《再论以太坊的自限性》,谈了一下对比特币和以太坊自限性问题的再研讨,欢迎关注“刘教链Pro”并阅读。 * * * 隔夜比特币小幅回落至28k下方。昨日在28k上方遭遇了…

在Centos Stream 9上Docker的实操教程(四) - Docker腾讯云远程仓库和本地私有仓库

在Centos Stream 9上Docker的实操教程 - Docker腾讯云远程仓库和本地私有仓库 本地镜像发布到腾讯云注册开通腾讯云初始化个人版服务创建仓库推送拉取镜像 私有仓库结语 本地镜像发布到腾讯云 由于官方的docker hub访问由于网络原因,可能会比较慢,博主推…

0301依赖使用以及配置优先级-基础-springboot2.7.x系列

文章目录 1 依赖方式1.1 spring-boot-starter-parent依赖1.2 spring-boot-dependencies依赖1.3 对比 2 使用方式2.1 SpringbootApplication2.2 高度定制 3 springboot各种配置优先级顺序4 sprinboot配置文件解析顺序结语 1 依赖方式 这里项目以开源的renren和pig为例&#xff…

Meta发布Megabyte AI模型抗衡Transformer

🚀 Meta发布Megabyte AI模型抗衡Transformer:解决后者已知问题、速度提升4成 摘要:Meta团队开发的Megabyte AI模型可以抗衡当前在自然语言处理领域非常流行的Transformer模型, 解决了Transformer模型所面临的训练速度较慢、难以…

【Java 并发编程】深入理解 AQS - AbstractQueuedSynchronizer

深入理解 AQS - AbstractQueuedSynchronizer 1. AQS1.1 什么是 AQS1.2 AQS 具备的特性 2. AQS 原理解析2.1 AQS 原理概述2.1.1 什么是 CLH 锁2.1.2 AQS 中的队列 2.2 AQS 共享资源的方式:独占式和共享式2.2.1 Exclusive(独占式)2.2.2 Share&a…

用 GPT-4 来面试,简直开挂啊!

公众号关注 “GitHubDaily” 设为 “星标”,每天带你逛 GitHub! 众所周知,ChatGPT 凭其超强的文本生成能力,成为了 2023 年最为火爆的 AI 应用之一。 几个月前,GPT-4 发布,又将 ChatGPT 的能力提升到了一个…

redis为何这么快

文章目录 概述基于内存的操作高效的数据存储结构设计高效的数据结构string底层实现SDS字符串长度处理杜绝缓冲区溢出减少内存重新分配的次数空间预分配惰性空间释放 list底层实现压缩列表(zipList)双端链表(linkList) hsah底层实现ziplist字典 set底层实现 zset底层实现ziplist…

“大厂的人一毕业,讲师就多了起来”——但培训行业,早就卷起来了

“大厂的人一毕业,讲师就多了起来”,很多中年产品经理都把去做培训当成一个后备选项,也许,作为十几年前就淌过路的人,可以给你一些信息。 总体来说,今年有个特别的体感,就是产品经理/产品思维/产…

【分布式应用】ELFK集群部署(Filebeat+ELK)Logstash的过滤模块

一、ELFK集群部署(FilebeatELK) ELFK ES logstashfilebeatkibana 实验环境 服务器类型系统和IP地址需要安装的组件硬件方面node1节点192.168.126.21JDK、elasticsearch-6.7.2、kibana-6.7.22核4Gnode2节点192.168.126.22JDK、elasticsearch-6.7.22核4…

chatgpt赋能python:Python中的快捷键:提高编程效率的利器

Python中的快捷键:提高编程效率的利器 作为一名有10年Python编程经验的工程师,我深刻体会到快捷键的重要性。在日常编程中,快捷键可以大大提高编程效率,让我们更快地完成工作。本文将介绍Python中一些常用的快捷键,并…

【Git】常用命令

Git命令游戏教程网站&#xff1a;https://learngitbranching.js.org/?localezh_CN 日常使用 命令 git push 1.不省略的写法 适合<本地分支名>和<远程分支名>不一样的情况 将本地的dev分支上的代码推送到远程主机名为origin中test的分支上。如果远程的test分支不存…

Go开发学习 | 如何使用日志记录模块包针对日志按天数、按大小分隔文件示例...

欢迎关注「全栈工程师修炼指南」公众号 点击 &#x1f447; 下方卡片 即可关注我哟! 设为「星标⭐」每天带你 基础入门 到 进阶实践 再到 放弃学习&#xff01; “ 花开堪折直须折&#xff0c;莫待无花空折枝。 ” 作者主页&#xff1a;[ https://www.weiyigeek.top ] 博客&…

比较专业的成体系OJ题库和近期整理的比赛题目

比较专业的成体系OJ题库和近期整理的比赛题目&#xff0c;一个优秀的OJ系统是不断剔除和补充题目的完善过程 &#xff0c;不是越多越好&#xff0c;而是符合孩子们学习阶段的需求&#xff0c; 类似的题目有2-3题就好&#xff0c;方便学生举一反三&#xff0c;另外同一题 要求回…

两个offer:一个996,月薪3万;一个885,月薪2万,怎么选?

找工作时&#xff0c;钱和闲&#xff0c;你选哪个&#xff1f; 一位网友拿到了两个offer&#xff0c;一个996&#xff0c;月薪3万&#xff0c;一个885&#xff0c;月薪2万&#xff0c;怎么选&#xff1f; 一部分网友选择885&#xff0c;因为自己是打工人&#xff0c;不是打工奴…

为什么职场中35岁之后很难找到合适的工作?

(点击即可收听) 为什么职场中35岁之后很难找到合适的工作 无论是初入职场还是,职场多年的老司机,都听过一个35岁危机的一个话题 无论是企业还是一些招聘者,针对35,甚至就是30的人,充满了不是这样,就是那样的偏见的理由 每个公司都喜欢有激情,有想法,有干劲的年轻人,无论哪个公司…

大学四年,因为这8个网站,我成为同学眼中的学霸

「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 大学期间&#xff0c;几乎每一个教过我的老师都反应&#xff0c;我的学习态度不好&#x…