计组_微程序

2024.06.26:计算机组成原理微程序学习笔记

第19节 控制器

  • 9.1 硬布线控制器(408基本不考)
  • 9.2 微程序控制器(好好学)
    • 9.2.1 微程序
      • (1) 基本概念
      • (2) 控制器的组成
      • (3) 控制器的工作过程
    • 9.2.2 微指令
      • (1) 编码方式(如何形成控制信号?)
        • 直接编码方式
        • 字段直接编码方式
        • 字段间接编码方式(知道间接体现在哪里)
      • (2) 地址形成方式
      • (3) 指令格式
        • 水平型微指令
        • 垂直型微指令


CPU是由运算器和控制器组成,运算器去执行
控制器的作用就是在指令执行的时候给它发出控制信号,控制这些CPU中的部件取协调工作,以完成指令想要执行的操作

9.1 硬布线控制器(408基本不考)

硬布线控制器其实就是组合逻辑的电路去组成的,408对于电路的考察是基本不会去涉及的。硬布线控制器也就是组合逻辑控制器,它的主要思想是通过设计这个控制器的电路,通过这些器件去发出某一个指令的控制信号

  • 由复杂的组合逻辑门电路以及触发器构成,也称组合逻辑控制器
  • 根据指令的要求、当前的时序、内外部件的状态,按时间顺序发送一系列微操作控制信号
  • 速度快,设计复杂,不易修改和扩展
  • IR中会存放即将要执行的机器指令,根据这个操作码的译码,我们会对这个指令前面的操作码进行一个译码,然后传到控制单元CU中
  • 控制单元会参考主频(时钟信号)发出的,参考时序以及标志(PSW)
  • 按照时间的顺序去发送这一系列的控制信号

在这里插入图片描述


9.2 微程序控制器(好好学)

微程序控制器是一个偏软件的控制器,它会把一条指令给你编成一个微程序,就相当于给你复制了一个CPU在控制器里面,然后对每一条机器指令,再去完成这样一个微程序


9.2.1 微程序

在这里插入图片描述
微程序控制器的执行思路就是微程序内部会有一个(控制存储器),这个存储器类比了计算机系统中的主存,它会用来存一个一个的微程序。

什么是微程序呢?对于一个机器可能执行的所有的机器指令,每一条机器指令,这个系统都会给它编写一个微程序。

也就是说我想要执行这条机器指令,它在控制器内部呢,会有一个微程序。这个微程序就是存储在控制存储器当中,它是完全类比于主存器设计的

这个微程序又是由一条一条的微指令组成的,一个微指令可以发出多个操作或者说微命令

那么整体的全局来看,IR会给控制器去提供一条机器指令,那么控制器要做的操作呢,是根据这条机器指令,发出相应的控制信号。那机器指令呢会传入到控制器中,控制器呢会在控制存储器里面去寻找这一条机器指令对应的这个微程序,然后去执行微程序里面的微指令,每一条微指令都可以发出不同的微操作信号,这样就可以把控制信号发出去了,就给到了控制器外面的这些器件,它们就会根据这些控制信号来执行自己想要做的操作。

其实不难发现,微程序控制器的设计就是完全仿照整个计算机系统,在这个控制器外部,我们就是根据我想执行一个程序,而这个程序里面有多条机器指令。对应的机器指令,我们就会把它放到控制器里面,然后让它去通过执行微程序,产生这个控制信号,然后再传出去,然后CPU中的其他硬件就可以根据这个控制信号去完成相应的操作,所以里里外外它是有照应关系的

(1) 基本概念

  • 微地址:存放微指令的控制存储器的单元地址
  • 微指令:每条微指令都存放在控制器的一个控制存储器单元中
    • 操作控制字段(微操作码):产生操作控制信号
    • 顺序控制字段(微地址码):控制产生下一条要执行的微指令地址
  • 微周期:从控制存储器中读取一条微指令并执行相应微操作所需时间
  • 控制存储器CM:存放微程序,在CPU的内部
  • 微地址寄存器CMAR:用于存放控制存储器的读写微指令的地址
  • 微指令寄存器CMDR/uIR:用于存放从控制存储器中读出的微指令
  • 微命令:微程序控制器中控制部件向执行部件发出的控制信号

(2) 控制器的组成

微程序控制器内部的组成以及我们是如何将一条机器指令的操作码解析成对应的控制信号的

在这里插入图片描述
控制器外部会有IR,存放机器指令这样一个部件。根据IR中存放的机器指令它的OP(操作码)字段,将操作码字段传入(微地址形成部件)来形成对应的微程序的地址(具体不需要知道)

微程序控制器也需要参考(标志)(CLK)(IR)
微程序的入口地址传到CMAR里面,然后通过地址译码,将这个地址对应的那个微程序对应的地方在(控制存储器)中指出,也就找到了对应的微程序的第一条微指令

将微指令取到CMDR(微IR),然后操作码字段就可以发出对应的控制信号


(3) 控制器的工作过程

因为上述取址过程启发我们对于取指令这个操作也需要控制器去发出控制信号,驱动这些部件去完成相应的操作,控制这些数据在这些部件之间流动。

又由于所有的机器指令,它们的取指操作是一样的,那么我们就有必要给每一个机器指令都单独去写,关于取指这部分的微程序,一个取指的微程序,不管你去执行什么样的机器指令,我们都去调用这样一个微程序。

公共的取指微程序,这个微程序是放在控制存储器CM里面的
在这里插入图片描述

  • 取机器指令
    机器开始运行时,自动将取指微程序的入口地址送⼊CMAR,并从CM中读出取指微程序中的微指令送
    入CMDR,发出取机器指令的控制信号
  • 机器指令的OP字段->微地址的形成部件,产生该机器指令对应的微程序入口地址,送入CMAR
  • 从CM中逐条取出对应的微指令并执行
  • 执行完对应于一条机器指令的⼀个微程序后,又回到取指微程序的入口地址,继续第1步,以完成取下⼀条指令的公共操作

9.2.2 微指令

(1) 编码方式(如何形成控制信号?)

直接编码方式

操作码字段是由一位一位的小格子构成的,每一位都代表一个微命令,这个微命令就对应着数据通路中的一个微操作
在这里插入图片描述


字段直接编码方式
  • 将微命令字段分成若干小字段,把互斥性微命令组合在同一字段中,相容性微命令组合在不同字段中
  • 每个字段独立编码,每种编码代表一个微命令且各字段编码含义单独定义
  • 一般每段留出一个状态,表示本字段不发出任何微指令
    在这里插入图片描述

字段间接编码方式(知道间接体现在哪里)

一个字段的某些微命令需要由另一个字段中的某些微命令来解释
在这里插入图片描述


(2) 地址形成方式

在这里插入图片描述


(3) 指令格式

水平型微指令

定义并执行(n种)并行的基本操作
在这里插入图片描述


垂直型微指令

定义并执行(1种)并行的基本操作
在这里插入图片描述


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

验证服务插件:单据保存或审核时进行验证

提交审核的时候,校验 using Kingdee.BOS; using Kingdee.BOS.Core; using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.Validation; using Kingdee.BOS.Util; using System; using System.ComponentModel;…

【LeetCode:721. 账户合并 + 哈希表 + DFS】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

Linux--线程池(包含日志的解释)

线程系列: Linux–线程的认识(一) Linux–线程的分离、线程库的地址关系的理解、线程的简单封装(二) 线程的互斥:临界资源只能在同一时间被一个线程使用 生产消费模型 信号量 线程池 线程池(Thread Pool)是…

CSS实现超链接标签:鼠标光标为手形、取消下划线、当鼠标悬停时显示下划线

1、鼠标光标为手形 cursor: pointer; 2、显示/取消下划线 text-decoration: none; /* 文本取消下划线 */ text-decoration: underline; /* 文本添加下划线 */ 3、伪类选择器 伪类选择器是 CSS 中已经定义好的选择器,因此程序员不能随意命令。伪类选择器…

【BUG】已解决:ModuleNotFoundError: No module named ‘cv2’

已解决:ModuleNotFoundError: No module named ‘cv2’ 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科班出身,就职于医疗科技公司,热衷分享知识,武汉城市开…

C 语言指针进阶

1.0 指针的定义 指针是内存中一个最小单元的编号(内存单元的编号称之为地址【地址就是指针指针就是地址】)指针通常是用来存放内存地址的一个变量。本质上指针就是地址:口语上说的指针起始是指针变量,指针变量就是一个变量&#…

51单片机10(蜂鸣器介绍)

一、蜂鸣器介绍: 1、蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于电子产品中作为发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器。 (1)压电式蜂鸣器,它主要由多谐的一个增胀器…

JVM--自动内存管理--JAVA内存区域

1. 运行时数据区域 灰色的线程共享,白色的线程独享 白色的独享就是根据个体"同生共死" 程序计数器: 是唯一一个没有OOM(内存溢出)的地方 是线程独享的 作用: 是一块较小的内存空间,是当前线程所执行的字节吗的行号指示器 由于…

C#学习3-微软C#官方文档Microsoft-dotnet-csharp.pdf

文章目录 1.内插表达式的字段宽度和对齐方式 1.内插表达式的字段宽度和对齐方式 static void Main(string[] args) {var titles new Dictionary<string, string>() {["Doyle ,Arthur"] "Hound of the Basker,The",["Lodon ,Jack"] &quo…

vue router 切换路由的时候,页面的动画效果,使页面切换好看,以及控制有的页面使用切换路由特效,有的页面不用

一、使用切换效果 在router文件中 useTransition: true代表需要动画 meta: { title: “新开卡预填表单”, keepAlive: true, useTransition: true }, [{path: "/",name: "Home",meta: {title: "首页",keepAlive: true,useTransition: false},c…

Python 给存入 Redis 的键值对设置过期时间

Redis 是一种内存中的数据存储系统&#xff0c;与许多传统数据库相比&#xff0c;它具有一些优势&#xff0c;其中之一就是可以设置数据的过期时间。通过 Redis 的过期时间设置&#xff0c;可以为存储在 Redis 中的数据设置一个特定的生存时间。一旦数据到达过期时间&#xff0…

alike-cpp 编译

1. 源码链接&#xff1a; https://github.com/Shiaoming/ALIKE-cpp 2.已经安装好显卡驱动&#xff0c;cuda&#xff0c;cudnn,没安装的参考&#xff1a; 切记装cuda-11.x的版本&#xff0c;最好cuda11.3的版本 ubuntu重装系统后&#xff0c;安装cuda,cudnn-CSDN博客 3.安装…

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(十三)-更换无人机控制器

引言 本文是3GPP TR 22.829 V17.1.0技术报告&#xff0c;专注于无人机&#xff08;UAV&#xff09;在3GPP系统中的增强支持。文章提出了多个无人机应用场景&#xff0c;分析了相应的能力要求&#xff0c;并建议了新的服务级别要求和关键性能指标&#xff08;KPIs&#xff09;。…

vitest 单元测试应用与配置

vitest 应用与配置 一、简介 Vitest 旨在将自己定位为 Vite 项目的首选测试框架&#xff0c;即使对于不使用 Vite 的项目也是一个可靠的替代方案。它本身也兼容一些Jest的API用法。 二、安装vitest // npm npm install -D vitest // yarn yarn add -D vitest // pnpm pnpm …

应用实践之基于MindNLP+MusicGen生成自己的个性化音乐

前言 MusicGen是基于单个语言模型&#xff08;LM&#xff09;的音乐生成模型&#xff0c;使用文本描述或音频提示生成高质量的音乐样本。它基于Transformer结构&#xff0c;包括文本编码器模型和音频压缩模型&#xff0c;以及一个解码器来预测离散的隐形状态音频token。与传统…

《mysql篇》--JDBC编程

JDBC是什么 JDBC就是Java DataBase Connectivity的缩写&#xff0c;翻译过来就很好理解了&#xff0c;就是java连接数据库。所以顾名思义&#xff0c;JDBC就是一种用于执行SQL语句的JavaApl&#xff0c;是Java中的数据库连接规范。为了可以方便的用Java连接各种数据库&#xff…

WSL2 的安装与运行 Linux 系统

前言 适用于 Linux 的 Windows 子系统 (WSL) 是 Windows 的一项功能&#xff0c;允许开发人员在 Windows 系统上直接安装并使用 Linux 发行版。不用进行任何修改&#xff0c;也无需承担传统虚拟机或双启动设置的开销。 可以将 WSL 看作也是一个虚拟机&#xff0c;但是它更为便…

Contact Form联系表单自动发送邮件(超级简单)

前几天发现了aoksend推出的这个联系表单的组件&#xff0c;非常好用&#xff0c;只有一个php文件&#xff0c;把php文件放到网站主目录里面。然后去aoksend注册和配置好域名和发信邮箱&#xff0c;可以得到发送密钥&#xff1a;app_key&#xff0c;然后配置好邮件模板&#xff…

线程安全(二)synchronized 的底层实现原理、锁升级、对象的内存结构

目录 一、基础使用1.1 不加锁的代码实现1.2 加锁的代码实现二、实现原理2.1 synchronized 简介2.2 对象监控器(Monitor)2.3 加锁过程第一步:判断 Owner 指向第二步:进入 EntryList 阻塞第三步:主动进入 WaitSet 等待三、锁升级3.1 对象的内存结构3.2 Mark Word 对象头3.3 …

全方位指南,电子期刊制作入门到精通

在这个数字化时代&#xff0c;电子期刊作为一种新兴的媒体形式&#xff0c;以其方便快捷、互动性强、传播范围广等特点&#xff0c;受到越来越多人的青睐。那么&#xff0c;如何制作出一本既专业又有吸引力的电子期刊呢&#xff1f; 一、选择合适的制作软件 首先&#xff0c;选…