微程序控制器的设计

news2024/11/13 15:33:55

目录

 一、微程序控制器的原理

1.模仿高级语言思想到微程序: 

2.采用存储程序思想到CU内构造: 

 3.微程序执行过程:

二、微指令的设计

1.前置概念: 

相容性微命令:

互斥性微命令:

2.微指令格式 

水平型微指令

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

(2)字段直接编码方式:

(3)字段间接编码方式:

垂直型微指令

混合型微指令

 3.微指令的地址形成方式:

三、微程序控制单元的设计 

1.设计步骤:

(1).分析每个阶段的微操作序列

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

(3).确定微指令格式

(4).编写微指令码点

2.静态和动态微程序设计

3.毫微程序设计

四、硬布线与微程序的比较


 

 一、微程序控制器的原理

1.模仿高级语言思想到微程序: 

        首先我们来看高级语言转换到汇编语言,可以知道高级语言是可以被翻译成一条条的汇编指令序列的。 

        每条指令对应不同的机器周期,不同的机器周期对应着不同的微操作,CU就是发出微命令(每个微命令都对应一个微指令)来统筹CPU内部的执行工作的。 

        基于高级语言的思想,我们可以将多个微操作整合成一个微指令,而多个微指令整合成一个微程序,这个微程序就负责完成每条指令的执行。 

        其中的关系如下图示:

Tips:物理上,取指周期、执行周期看起来像是两个微程序但逻辑上应该把它们看作一个整体。因此,“一条指令对应一个微程序”的说法是正确的 

取指,间址,执行,中断四个微程序段应该看作一个微程序。

则指令系统中有N条机器指令,CM中就有N个微程序,有N+1个微程序段。 

2.采用存储程序思想到CU内构造: 

采用“存储程序”的思想,CPU出厂前将所有指令的“微程序存入“控制器存储器CM”中 

模仿CPU的取指执行的过程,在CU内部进行构造 :

微地址形成部件产生初始微地址和后继微地址,以保证微指令的连续执行。
顺序逻辑标志:根据指令地址码的寻址特征位判断是否要跳过间址周期
CLK:根据中断信号判断是否进入中断周期
CMAR别名:μPC,微地址寄存器,接收微地址形成部件送来的微地址,为在CM中读取微指令作准备。
地址译码将地址码转化为存储单元控制信号。
控制存储器CM用于存放各指令对应的微程序,控制存储器可用只读存储器ROM构成
CMDR别名:μIR,用于存放从CM中取出的微指令,它的位数同微指令字长相等。

 3.微程序执行过程:

1CPU中的IR将指令的OP(操作码)部分送入CU
2CU中的微地址形成部件接收并产生初始微地址。
3微地址形成部件将产生的初始微地址送入顺序逻辑判断,结合PSW和CLK判断是否要进行间址或中断。
4顺序逻辑判断后的地址送入CMAR
5CMAR将地址送入地址译码器
6地址译码器处理后的地址送入控制存储器CM
7控制存储器CM将微指令送入CMDR
8CMDR将微指令的操作控制部分送出CU,CU以此发送控制信号
9CMDR将微指令的顺序控制部分送微地址形成部件
10微地址形成部件产生下一条微指令的地址。
至此,循环往复就完成了微程序的执行。

二、微指令的设计

微指令的具体格式应该怎么设计?
如何根据微指令发出相应的微命令?
微命令与微操作一一对应,一个微命令对应一根输出线

有的微命令可以并行执行,因此一条微指令可以包含多个微命令

1.前置概念: 

相容性微命令:

 可以并行完成。

互斥性微命令:

 不允许并行完成

2.微指令格式 

水平型微指令

基本格式
描述一条微指令能定义多个可并行的微命令。
优点微程序短,执行速度快;
缺点微指令长,编写微程序较麻烦。
(1)直接编码(直接控制)方式:

在微指令的操作控制字段中,每一位代表一个微操作命令 

某位为“1”表示该控制信号有效

优点:简单、直观,执行速度快,操作并行性好。

缺点:微指令字长过长,n个微命令就要求微指令的操作字段有n位,造成控存容量极大。 

 

(2)字段直接编码方式:


将微指令的控制字段分成若干“段”,每段经译码后发出控制信号微命令字段分段的原则:
① 互斥性微命令分在同一段内,相容性微命令分在不同段内。

        例如:(PC)→MAR和(PC)+1→PC互斥, (PC)→MAR和1→R相容。

②每个小段中包含的信息位不能太多,否则将增加译码线路的复杂性和译码时间。
③ 一般每个小段还要留出一个状态,表示本字段不发出任何微命令。因此,当某字段的长度为3位时,最多只能表示7个互斥的微命令,通常用000表示不操作。

优点:可以缩短指令字长。

缺点:要通过译码电路再发出微命令,因此比直接编码方式慢。

例题: 

某计算机的控制器采用微程序控制方式,微指令中的操作控制字段采用字段直接编码法,共有33个微命令,构成5个互斥类,分别包含7、3、12、5和6个微命令,则操作控制字段至少有多少位?

第1个互斥类有7个微命令,要留出1个状态表示不操作,所以需要表示8种不同的状态,故需要3个二进制位。

以此类推,后面4个瓦斥类各需要表示4、13、6、7种不同的状态,分别对应2、4、3、3个二进制位。

故操作控制字段的总位数为3+2+4+3+3=15位。 

(3)字段间接编码方式:

一个字段的某些微命令需由另一个字段中的某些微命令来解释由于不是靠字段直接译码发出的微命令,故称为字段间接编码,又称隐式编码。、

优点:可进一步缩短微指令字长。

缺点:削弱了微指令的并行控制能力,故通常作为字段直接编码方式的一种辅助手段。 

垂直型微指令

基本格式
描述一条微指令只能定义一个微命令,由微操作码字段规定具体功能
优点:微指令短、简单、规整,便于编写微程序!
缺点:微程序长,执行速度慢,工作效率低

混合型微指令

描述在垂直型的基础上增加一些不太复杂的并行操作。
微指令较短,仍便于编写;微程序也不长,执行速度加快。

 3.微指令的地址形成方式:

微指令的下地址字段指出微指令格式中设置一个下地址字段,由微指令的下地址字段直接指出后继微指令的地址,这种方式又称为断定方式
根据机器指令的 操作码形成当机器指令取至指令寄存器后,微指令的地址由操作码经微地址形成部件形成。
增量计数器(CMAR)+1→CMAR
分支转移 

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

通过测试网络

内部电路网络给出:

由硬件产生微程序入口地址第一条微指令地址由专门硬件产生(用专门的硬件记录取指周期微程序首地址)
中断周期硬件产生中断周期微程序首地址(用专门的硬件记录)

 例题:

三、微程序控制单元的设计 

1.设计步骤:


(1).分析每个阶段的微操作序列

和硬布线一样:(取指、间址、执行、中断四个阶段) 

 确定哪些指令在什么阶段、在什么条件下会使用到的微操作

取指:

PC→MAR
1→R
M(MAR)→MDR
MDR →IR
OP(IR)→ID
(PC)+1→PC

间址:

 Ad(IR)→MAR
1→R
M(MAR)→MDR
MDR → Ad(IR)

执行:

CLA0→ACclear ACC指令
ACC清零
LDA X Ad (IR)→ MAR取数指令,把X所指内容,取到ACC
1→R
M(MAR)→MDR
MDR→AC
JMP X Ad (IR)→PC无条件转移
BAN XA0·Ad (IR )+A0·(PC)→PCBranch ACC Negative
条件转移,当AC为负时转移

 中断:

步骤微指令描述
1. 保存当前程序计数器(PC)内容MAR ← PC将当前的程序计数器(PC)内容传送到存储地址寄存器(MAR)。
M[SP] ← MAR将MAR中的内容(即PC值)存储到堆栈指针(SP)指向的内存地址。
SP ← SP - 1将堆栈指针减1,指向下一个空闲堆栈位置。
2. 保存CPU状态(例如标志寄存器)MAR ← FLAGS将当前标志寄存器(FLAGS)内容传送到MAR。
M[SP] ← MAR将FLAGS中的内容存储到堆栈中。
SP ← SP - 1堆栈指针减1,指向下一个空闲堆栈位置。
3. 加载中断向量地址PC ← Interrupt_Vector_Address将中断向量地址加载到程序计数器(PC)中,这样CPU将跳转到对应的中断服务程序。
4. 转到中断服务程序的入口地址MAR ← PC将新的PC内容传送到MAR,以便从内存中读取中断服务程序的第一条指令。
IR ← M[MAR]将中断服务程序的第一条指令从内存读取到指令寄存器(IR)。
PC ← PC + 1程序计数器递增,准备执行下一条指令。
5. 执行中断服务程序-CPU现在开始按照从中断向量表中得到的地址来执行中断服务程序。
6. 恢复原来的程序状态SP ← SP + 1增加堆栈指针以指向之前存储的标志寄存器的内容。
FLAGS ← M[SP]将标志寄存器的值恢复到FLAGS寄存器中。
SP ← SP + 1增加堆栈指针以指向之前存储的PC内容。
PC ← M[SP]恢复程序计数器的值,使得中断返回后继续执行中断前的程序。

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

(1)写出每个周期所需要的微操作(参照硬布线)

例如取指周期:

(2)补充微程序控制器特有的微操作:

还需考虑如何读出这3条微指令以及如何转入下一个机器周期:

Ad(CMDR)→CMAR用当前微指令的下地址表示找到下一条微指令
OP(IR)→微地址形成部件→CMAR转入下一个机器周期

因此需要进行补充:
        a.取指周期:

                Ad(CMDR)→CMAR(指明下一条微指令地址)

                OP(IR)→CMAR(转入下一个周期)

        b.执行周期:

                Ad(CMDR)→CMAR(用于执行下一个微指令)

 


(3).确定微指令格式

        根据微操作个数决定采用何种编码方式,以确定微指令的操作控制字段的位数。根据CM中存储的微指令总数,确定微指令的顺序控制字段的位数。最后按操作控制字段位数和顺序控制字段位数就可确定微指令字长


(4).编写微指令码点

        根据操作控制字段每一位代表的微操作命令,编写每一条微指令的码点。

        也就是每个状态对应一个控制线。

2.静态和动态微程序设计

 静态微程序无需改变,采用ROM
 动态通过改变微指令和微程序 改变机器指令 有利于仿真,采用EPROM


3.毫微程序设计


        毫微程序设计的基本概念
        微程序设计用微程序解释机器指令
        毫微程序设计 用 亳微程序解释微程序
        毫微指令与微指令的关系好比 微指令与机器指令 的关系

四、硬布线与微程序的比较

微程序控制器硬布线控制器
工作原理微操作控制信号以微程序的形式存放在控制存储器中,执行指令时读出即可微操作控制信号由组合逻辑电路根据当前的指令码、状态和时序,即时产生
执行速度
规整性较规整烦琐、不规整
应用场合CISC CPURISC CPU
易扩充性易扩充修改困难

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

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

相关文章

作者推荐 |【Redis技术进阶之路】「技术提升系列」夯实基础分析探究ziplist压缩列表的点点滴滴

揭秘高效存储模型与数据结构底层实现 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 压缩列表(ziplist)压缩列表使用目的压缩列表结构组成压缩列表的各个组成部分三个…

flv格式分析与解复用

介绍 FLV(Flash Video)是Adobe公司推出的⼀种流媒体格式,由于其封装后的⾳视频⽂件体积⼩、 封装简单等特点,⾮常适合于互联⽹上使⽤。⽬前主流的视频⽹站基本都⽀持FLV。采⽤FLV 格式封装的⽂件后缀为.flv。 FLV封装格式是由⼀个⽂件头(file header)和 …

0基础深度学习项目13:基于TensorFolw实现天气识别

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 目录 一、创建环境二、前期准备2.1 设置GPU2.2 导入数据2.3 数据预处理2.3.1 加载数据2.3.2 查看图像的标签 2.4 数据可视化 三、构建简单的CNN网络&#xff0…

NVDLA专题12:具体模块介绍——RUBIK

概述 RUBIK类似于BDMA,它无需任何数据计算对数据映射格式进行转换。RUBIK有3种工作模式,分别是: 合并(Contract)数据立方体将特征数据立方体分割为多平面(multi-planar)格式将多平面(multi-planar)格式合并到数据立方体 由于该…

第三十八篇-TeslaP40-SenseVoice部署,速速杠杠的

环境 系统:CentOS-7 CPU: 14C28T 内存:32G 显卡:Tesla P40 24G 驱动: 535 CUDA: 12.2创建环境 conda create -n sv python3.11 -y conda activate sv克隆 git clone https://github.com/FunAudioLLM/SenseVoice.git cd SenseVoice配置镜像…

React antd Table表格动态合并单元格

注意: ① 采用的是React antDsign 4.x版本 ② 需重新处理data数据 实现效果 代码实现 import React from react; import { Table } from antd;const data [{key: 0,name: 张三,age: 22,sex: 男,},{key: 1,name: 李四,age: 42,sex: 男,},{key: 2,name: 小丽,age: …

CAN的协议层介绍

一,CAN帧种类介绍 1. 数据帧(Data Frame):数据帧是CAN总线上用于传输用户数据的帧,包括必要的帧头、标识符、控制位、数据长度代码、数据域、CRC校验码和应答域等部分,是CAN通信中最基本和最重要的帧类型。…

Android Room DataBase

Room数据库是在Sqlite的基础上,进行了封装和优化。这让我们可以摆脱,繁琐的数据库操作 在module的gradle里面,加入: dependencies {annotationProcessor "androidx.room:room-compiler:2.3.0"implementation androidx.room:room-…

Selenium自动化测试 常见API的使用

本篇文章内容是关于 Selenium 自动化测试工具的常见 API 的使用 Selenium版本:4.23.1 编程语言:Java JDK22 编译器:IDEA 2024.2.0.2 浏览器版本:谷歌浏览器128.0.6613.36(正式版本) (64 位&…

【Hexo】hexo-butterfly主题添加装备展示页面

本文首发于 ❄️慕雪的寒舍 在翻开往的时候看到了一位老哥的博客里面正好有这个教程,整了一下发现效果还不错! Hexo的Butterfly魔改教程:我的装备,分享你在用的设备 | 张洪HeoHexo博客添加自定义css和js文件 | Leonus 注&#x…

Python个人收入影响因素模型构建:回归、决策树、梯度提升、岭回归|数据分享...

全文链接:https://tecdat.cn/?p37423 分析师:Greata Xie “你的命运早在出生那一刻起便被决定了。”这样无力的话语,无数次在年轻人的脑海中回响,尤其是在那些因地域差异而面临教育资源匮乏的年轻人中更为普遍。在中国&#xff0…

NRC-SIM:基于Node-RED的多级多核缓存模拟器

整理自: 《NRC-SIM: A NODE-RED Based Multi-Level, Many-Core Cache Simulator》,由 Ezequiel Trevio 撰写,作为他在德克萨斯大学里奥格兰德河谷分校攻读电气工程硕士学位的部分成果。以下是论文的详细主要内容: 摘要(Abstract…

全网最适合入门的面向对象编程教程:37 Python常用复合数据类型-列表和列表推导式

全网最适合入门的面向对象编程教程:37 Python 常用复合数据类型-列表和列表推导式 摘要: 在 Python 中,列表是一个非常灵活且常用的复合数据类型。它允许存储多个项,这些项可以是任意的数据类型,包括其他列表。列表推…

大话MoE混合专家模型

MoE(Mixture of Experts),专家混合,就像是人工智能界的超级团队。想象一下,每个专家都有自己的拿手好戏,比如医疗问题找医生,汽车故障找机械师,做饭找大厨。MoE也是这样,…

【前端面试】操作系统

进程与线程 进程线程定义是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位是进程中的一个实体,是CPU调度和分派的基本单位,共享进程的资源资源分配拥有独立的内存空间和系统资源共享进程的内存和资源开销…

【Harmony OS 4.0】像素单位 - px、vp、fp

1. px 物理像素,以像素个数来定义图像尺寸。弊端是,在不同像素密度的屏幕上,相同的像素个数对应的物理尺寸是不同的。就会导致我们的应用在不同设备上显示的尺寸可能不同。如下图: 2. vp(Virtual Pixel) 虚拟像素是一种可根据屏幕…

L-Eval:一个60k左右长文评测数据集

前言 L-Eval是复旦大学邱锡鹏老师团队在 2023 年 7 月左右发布的一个标准化的长文本语言模型(LCLMs)评估数据集,包含20个子任务、411篇长文档、平均长度为7217个单词,超过2000个人工标记的QA对。它分为封闭型任务和开放型任务&am…

Niushop商城第三方插件cps联盟_同城配送_上门预约上手教程配置方法适合单商户和多商户以及V6哈

Niushop商城第三方插件cps联盟_同城配送_上门预约上手教程配置方法 序言:Niushop里面插件比较多可以说有上百种, 不过大多数都是官方自研默认自带50余种剩余的是收费的价格在80-299不等,另外的插件就是和第三方合作,简单的说就是…

25届应届网安面试,默认页面信息泄露

吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247485367&idx1&sn837891059c360ad60db7e9ac980a3321&chksmc0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330#rd 《网安面试指南》http://mp.weixin.qq.com/s?…

linux系统使用yum安装mysql5.6版本的流程

1.下载安装包及依赖包 MySQL :: Download MySQL Community Server (Archived Versions) [rootlocalhost localrepo]# ls MySQL-client-5.6.47-1.el7.x86_64.rpm MySQL-server-5.6.47-1.el7.x86_64.rpm MySQL-test-5.6.47-1.el7.x86_64.rpm MySQL-devel-5.6.47-1.…