计算机组成原理与系统结构——微程序控制

笔记内容及图片整理自XJTUSE “计算机组成原理与系统结构” 课程ppt,仅供学习交流使用,谢谢。

基本概念

微指令

将控制单元实现为基本逻辑单元之间的互连并非易事,且设计相对呆板,难以灵活地改变,因此实现微程序控制单元是一种替代方法。实际上,它是一种编程语言,称为微程序语言,每一行描述一组同时发生的微操作,称为微指令。指令序列称为固件,即介于硬件与软件间的微程序,用固件设计比用硬件设计更容易,但代码开发工作更困难。

使用微程序实现一个控制单元具有以下步骤:

1)对于每个微操作,控制单元所做的是生成一组控制信号

2)对于任何微操作,从控制单元发出的每条控制线要么是打开要么是关闭,用二进制表示

3)每个微操作都有一个控制字,其中的每一位都代表一条控制线

微指令具有以下类型:

垂直微指令——每条微指令指定要执行的单个或少数多个微操作

水平微指令——每条微指令指定要并行执行的许多不同的微操作

在控制存储器中安排微指令具有以下步骤:

1)每个例程中的微指令要按顺序执行

2)每个例程都以一个分支或跳转指令结束,以指示下一步要去哪里

3)存在一个特殊执行周期例程,以表示接下来要执行的取决于当前操作码的机器指令例程

微程序控制单元

控制存储器包含描述控制单元行为的程序,因此只需要执行这个程序就可以实现控制单元。下图显示了控制单元的关键要素:

1)控制存储器——存储微指令集

2)控制地址寄存器——包含下一条要读取的微指令的地址

3)控制缓冲寄存器——接收一条从控制存储器中读出的微指令

4)排序逻辑单元——加载控制地址寄存器并发出读命令

细化的功能单元具有以下功能(在同一时钟脉冲周期中发生):

1)为了执行一条指令,排序逻辑单元向控制存储器发出READ命令

2)控制地址寄存器指定地址中的字被读进控制缓冲寄存器

3)控制缓冲寄存器的内容生成控制信号以及排序逻辑单元的下一个地址信息

4)排序逻辑单元根据来自控制缓冲寄存器的下一个地址信息,结合ALU标志,把新的地址加载到控制地址寄存器,具体方法将从以下三个决定中选择:

A)获取下一条指令——控制地址寄存器加1

B)跳转到基于跳转微指令的新例程——控制缓冲寄存器的地址字段加载到控制地址寄存器

C)跳转到机器指令例程——根据IR中的操作码加载控制地址寄存器

微程序的目前应用包括以下几类:

1)实现计算机——实现计算机的基本功能

2)仿真——在一台机器上使用微程序来执行最初为另一台机器编写的程序

3)操作系统支持——实现基元

4)实现专用设备——实现专用设备的专用功能

5)高级语言支持——固件中实现的功能和数据类型

6)微校验——监控、检测、隔离、修复系统错误

7)用户定制——一些机器提供可写入存储和易于使用的微指令集,允许用户编写微程序

优缺点

微程序的主要优点是简化控制单元的设计,成本更低也不易出错。硬连线控制单元必然包含复杂逻辑,以通过指令周期的多个微操作进行排序;另一方面,微程序控制单元的译码器和排序逻辑单元也是非常简单的逻辑组件。微程序的主要缺点是它的速度比硬连线单元慢。

由于易于实现,微程序在纯CISC架构中仍是实现控制单元的主要技术。RISC架构的处理器指令格式更简单,它通常使用硬连线控制单元。

微指令排序

微指令控制单元要实现如下两个基本任务:

1)微指令排序——从控制存储器获取下一条微指令

2)微指令执行——生成执行微指令所需的控制信号

设计控制单元时,两个任务必须一起考虑,因为它们都会影响微指令格式和控制单元时序。

设计注意事项

微指令排序技术涉及微指令大小和地址生成时间两个问题。第一个问题,最小化控制存储器会降低组件的成本;第二个问题,需要尽可能执行微指令。

执行微程序时,下一条要执行的微指令的地址有以下几种类别:

1)由指令寄存器决定——在获取指令后,一个周期一次

2)下一个顺序地址——在大多数设计中很常见

3)分支——分为条件分支和无条件分支,通常每3-4条微指令中有一条分支

微指令执行

微指令周期是微程序处理器的基本事件。每个周期由取指(由微指令地址生成决定)和执行(产生控制信号)两个部分组成。其中一些信号控制点位于处理器内部,其余则连接到外部控制总线或其他接口。常见的微指令分类法包括垂直/水平、压缩/非压缩、硬微/软微编程、直接/间接编码。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CUDA算子手撕与面试指南

引言 最近秋招落幕,期间一直在找高性能计算(HPC)相关岗位,整理了一些CUDA算子手撕的代码和知识点分享给大家。 项目地址:https://github.com/Tongkaio/CUDA_Kernel_Samples 如果觉得本项目对你有帮助,欢…

IIS部署程序https是访问出现403或ERR_HTTP2_PROTOCOL_ERROR

一、说明 在windows server 2016中的IIS程序池里部署一套系统,通过https访问站点,同时考虑到安全问题以及防攻击等行为,就用上了WAF云盾功能,能有效的抵挡部分攻击,加强网站的安全性和健壮性。 应用系统一直能够正常…

【EthIf-05】 Ethernet Interface main function

Ethernet Interface main function函数有以下功能和要点: 要实现支持轮询模式下帧传输确认和帧接收的以太网接口轮询机制:实现轮询功能,定期检查传入的帧。帧传输确认:包括确认帧已成功传输的机制。可配置轮询周期:允…

康耐视智能相机(Insight)通过ModbusTCP发送字符串到倍福(BECKHOFF)PLC中

文章目录 1.背景2.分析3.实现3.1.PLC的ModbusTCP_Server3.1.1.安装TF6250-Modbus-TCP3.1.2.PLC设置 3.2.智能相机的ModbusTCP_Client3.2.1.了解ModbusTCP的协议3.2.2.根据协议写代码3.2.2.1.纯函数代码3.2.2.2.脚本代码 3.2.3.非脚本处理时的代码逻辑图3.2.4.关于代码的问题及解…

ruoyi Cannot find module ‘@/views/system/user/index‘

Cannot find module /views/system/user/index 删除node_module 后打包成功

如何将你的 Ruby 应用程序从 OpenSearch 迁移到 Elasticsearch

作者:来自 Elastic Fernando Briano 将 Ruby 代码库从 OpenSearch 客户端迁移到 Elasticsearch 客户端的指南。 OpenSearch Ruby 客户端是从 7.x 版 Elasticsearch Ruby 客户端分叉而来的,因此代码库相对相似。这意味着当将 Ruby 代码库从 OpenSearch 迁…

spring cloud contract http实例

微服务很多时,服务之前相互调用,接口参数的一致性要变得很难维护。 spring cloud contract 提供了测试接口一致性的方法。 一 项目配置 plugins {id "groovy"id "org.springframework.cloud.contract" version "4.0.5"i…

帆软的无数据展示方案

文章目录 需求描述第一步、设置控件第二步、设置数据集优化改进 在日常工作中,使用到帆软报表工具,以下记录日常使用的过程, 需求描述 用帆软报表展示销量的信息,选择不同的订单状态,展示其订单数和总金额。 第一步、…

【操作系统】实验九:设备驱动程序

实验9 设备驱动程序 在钻研Linux内核的人当中,大多数人都是在写设备驱动程序。尽管由于设备的特殊性,使得每个驱动程序都不一样。但是编写设备驱动程序的许多原则和基本技巧都是一样的,甚至Windows下的设备驱动程序从原理上讲也与之相通。在…

文件上传—阿里云OSS对象存储

目录 一、OSS简介 二、OSS基本使用 1. 注册账号 2. 基本配置 (1) 开通OSS (2) 创建存储空间 (3) 修改权限 (4) 配置完成,上传一张图片,检验是否成功。 (5) 创建AccessKey 三、Java项目集成OSS 1. 导入依赖 2. Result.java代码: …

极米投影仪-看电视

文章目录 前言操作步骤1.进入GitHub下载软件2.修改后缀3.粘贴到U盘 前言 使用网络提供的电视接口免费看电视。 操作步骤 1.进入GitHub下载软件 地址:https://github.com/andandroidor/ourtv 也可以直接下载我已保存的apk,地址:https://d…

重生之我在异世界学编程之C语言:深入文件操作篇(下)

大家好,这里是小编的博客频道 小编的博客:就爱学编程 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!! 函数递归与迭代 引言正文一、文件的基本操作&#…

Rust HTTP请求库

GITHUB 地址 LTPP-GIT 地址 接口文档 说明 http-request 是一个轻量级、高效的库,用于在 Rust 应用程序中构建、发送和处理 HTTP/HTTPS 请求。它提供了一个简单直观的 API,使开发人员可以轻松地与使用 “HTTP” 或 “HTTPS” 协议的 Web 服务进行交互…

ERC论文阅读(03)--instructERC论文阅读笔记(2024-12-14)

instructERC论文阅读笔记 2024-12-14 论文题目:InstructERC: Reforming Emotion Recognition in Conversation with Multi-task Retrieval-Augmented Large Language Models 说明:以下内容纯属本人看论文及复现代码的记录,如想了解论文细节&…

uniapp - 微信小程序

一、background-image 大图不显示的问题 解决方法: 1、使用网络地址;2、使用 base64 urlTobase64(filePath) {// #ifdef MP-WEIXINlet img ${filePath},imgBase64 wx.getFileSystemManager().readFileSync(img, "base64"),base64Url data:…

MongoDB-ObjectID 生成器

前言 MongoDB中一个非常关键的概念就是 ObjectID,它是 MongoDB 中每个文档的默认唯一标识符。了解 ObjectID 的生成机制不仅有助于开发人员优化数据库性能,还能帮助更好地理解 MongoDB 的设计理念。 什么是 MongoDB ObjectID? 在 MongoDB …

[笔记]Qt下使用SendMessage、PostMessage和接收window消息

1.头文件和库引用 首先必须要包含windows.h这个头文件&#xff0c;如果使用一些扩展函数&#xff0c;还需要包含windowsx.h。网上说使用FindWindow要添加头文件winuser.h&#xff0c;不过应该windows.h是自动包含这个依赖的&#xff08;我没有添加&#xff09; #include <…

SSM 架构下的垃圾分类系统,开启绿色生活

第1章 概述 1.1 研究背景 随着现代网络技术发展&#xff0c;对于垃圾分类系统现在正处于网络发展的阶段&#xff0c;所以对它的要求也是比较严格的&#xff0c;要从这个系统的功能和用户实际需求来进行对系统制定开发的发展方式&#xff0c;依靠网络技术的的快速发展和现代通讯…

【大语言模型】LangChain 核心模块介绍(Agents)

【大语言模型】LangChain 核心模块介绍&#xff08;Agents&#xff09; 一、简介二、Agents 的核心概念三、实战案例3.1、需求说明3.2、实现思路3.3、完整源码 一、简介 我们都知道四肢的绝大部分动作都是由大脑决定的&#xff0c;大脑通过中枢神经下发自己的操作指令&#xf…

某名校考研自命题C++程序设计——近10年真题汇总(上)

本帖更新一些某校的编程真题&#xff0c;总体来说不难&#xff0c;考察的都是基本功&#xff0c;92高校大一期末的难度&#xff0c;不过有些细节颇为繁琐&#xff0c;各位还是需要一定程度上注意的~ 目录 一.分数求和 二.大小写字母转换 三.判断当年天序 四.交替合并字符串…