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

写在前面的话:此系列文章为笔者学习计算机组成原理时的个人笔记,分享出来与大家学习交流。使用教材为唐朔飞第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://xiahunao.cn/news/256375.html

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

相关文章

反反爬技术,破解猫眼网加密数字

From:https://blog.csdn.net/qq_31032181/article/details/79153578 From:http://www.freebuf.com/news/140965.html 利用自定义web-font实现数据防采集:http://blog.csdn.net/fdipzone/article/details/68166388 利用前端字体文件(.ttf)混…

《这是全网最硬核redis总结,谁赞成,谁反对?》六万字大合集

我摊牌了,这篇文章,值得99%的人收藏 此文后续会改为粉丝可见,所以喜欢的请提前关注和收藏,不迷路。 最近有五本我喜欢的redis实体新书,想要的去评论,我写个随机数抽奖包邮送给你。 那么,准备好…

如何实现第一个单片机裸机程序(附汇编指令)

一、(8-2) 一个芯片上面有片内SRAM内存(4K),NOR Flash(2M) , Nand控制器(256M),GPIO控制器 启动过程:(大多数ARM芯片从0地址启动) 1、NOR 启动, NOR Flash基址为0 CPU读取NOR上第一个指令(前4字节)执行,CPU继续读取其…

程序是怎样跑起来的

1. 对程序来说CPU是什么 问题: 程序是什么? 指示计算机每一步动作的一组指令程序是由什么组成的? 指令和数据什么是机器语言? CPU可以直接识别并使用的语言正在运行的程序存储在什么位置? 内存什么是内存地址&#x…

深入理解《hello world》是如何实现的

函数栈桢的创建和销毁 前言C语言是由函数构成的栈帧概念寄存器hello world是如何实现我们转到汇编代码🌳 main函数栈帧的创建(开始调用main函数)🌳 main函数栈帧的初始化🌳函数栈帧的销毁printf函数栈帧的销毁main函数的栈帧销毁 总结 ❤️ &…

【供应链架构day8】履约系统的架构长什么样子:从需求开始讲起

很多公司,除了自营商城以外,还有其它渠道(如天猫、京东等),多个渠道的订单该如何集中履约?订单履约全流程是怎样的?接着小Q的故事,为您揭晓多平台订单履约系统的系统设计思路。 由于…

金融反欺诈-交易基础介绍

一、简介 如今,互联网金融比较火热,金融欺诈也变得非常普遍,金融反欺诈也应运而生。本文将主要介绍下金融交易中的一些基本内容,并简单介绍下历史悠久的并且还未淘汰的磁条卡的风险,这些也是了解金融欺诈需要的基本知识…

详解反调试技术

反调试技术,恶意代码用它识别是否被调试,或者让调试器失效。恶意代码编写者意识到分析人员经常使用调试器来观察恶意代码的操作,因此他们使用反调试技术尽可能地延长恶意代码的分析时间。为了阻止调试器的分析,当恶意代码意识到自…

stl文件的解析和在线3d打印

什么是stl文件 STL(Stereolithography)文件,由3D Systems于1987年创建,并且已被广泛用作全行业3D打印机模型的标准文件。它有一些别的首字母缩写词如“标准三角语言(Standard Triangle Language)”,“标准曲面细分语言(Standard Tessellatio…

\r \r\n \t的区别,是什么意思

分享一下我老师大神的人工智能教程吧。零基础,通俗易懂!风趣幽默!http://www.captainbed.net/ 也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴! \n 软回车: 在Windo…

著名的 P=NP 问题到底是什么?

△点击上方“Python猫”关注 ,回复“1”领取电子书 大家好,我是猫哥。我最近在追一部热播的电视剧《天才基本法》,它反复提到了“PNP”问题。这可是一个天大的难题,在 2000 年克雷数学研究所公布的千禧年七大数学难题中&#xff0…

PCIe 是什么 ? -- 基本知识

1. 概述 1)PCIe(Peripheral Component Interconnect Express)是继ISA和PCI总线之后的第三代I/O总线。一般翻译为周边设备高速连接标准。 2)PCIe协议是一种端对端的互连协议,提供了高速传输带宽的解决方案。目前PCIe已经发展到第四代PCIe4.0, …

反欺诈概念库-信用卡反欺诈管理

原文:http://www.cnki.com.cn/Article/CJFDTotal-XYKZ200508004.htm 2005年6月,美国爆出4000万张信用卡资料外泄的特大新闻。消息传来,舆论哗然。尽管我国只有数千个信用卡账户数据资料受波及,但一石激起千层浪,国内金…

打印DPI如何与计算机DPI一致,打印效果失真 你了解DPI与照片关系么?

今天我们来聊一下关于分辨率的问题,分辨率这个词看似遥远,但是却和你的照片息息相关,文章开始之前我先向大家抛出一个问题,“我们要打印A4尺寸的照片,照片的像素至少要多大?”如果您能轻松的回答上来这个问题,那么这篇文章对于您的意义就不大了。 其实关于打印照片尺寸的…

常说的监听某个端口,是什么意思?怎么理解?

▲ 点击上方“分布式实验室”关注公众号 回复“1”抽取纸质技术书 今天这篇文章,想用一个故事和你讲讲端口监听是怎么回事。耐心往下看。 在学生会大楼的角落里,有一家咖啡店,在咖啡店的角落里有两个学生。利兹敲打着她哥哥在她搬到大学时给她…

RWKV – transformer 与 RNN 的强强联合

在 NLP (Natural Language Processing, 自然语言处理) 领域,ChatGPT 和其他的聊天机器人应用引起了极大的关注。每个社区为构建自己的应用,也都在持续地寻求强大、可靠的开源模型。自 Vaswani 等人于 2017 年首次提出 Attention Is All You Need 之后&am…

chatgpt赋能python:Python中的或运算:学习这个重要概念

Python中的或运算:学习这个重要概念 或运算是Python编程语言中一个重要的概念。了解如何使用或运算可以帮助程序员编写更有效和有意义的代码。在此文章中,我们将介绍Python中或运算的基础知识以及如何使用它来编写各种类型的代码。 什么是或运算&#…

智慧工厂主题 Meetup 线下报名+福利开启!IoTDB X EMQ 构建数据平台赋能智能制造...

随着全球制造业的竞争日益激烈,智慧工厂成为当今制造业的重要趋势之一。智慧工厂采用了先进的物联网、大数据等科技手段,以期通过智能化、数字化管理和生产,实现高度自动化和高效生产。因此,如何通过计算分析挖掘生产数据价值&…

《计算机组成原理》唐朔飞 第8章 CPU的结构和功能 - 学习笔记

写在前面的话:此系列文章为笔者学习计算机组成原理时的个人笔记,分享出来与大家学习交流。使用教材为唐朔飞第3版,笔记目录大体与教材相同。 网课 计算机组成原理(哈工大刘宏伟)135讲(全)高清_…

常用方法——7.JS 给数组排序 es6

let arrObj[{"name": "银行转账","value": 2}, {"name": "支付宝支付","value": 1}, {"name": "微信支付","value": 0} ] arrObj.sort((a,b)>{ return a.value-b.value})//升序…