5.4.3微程序控制器

微程序控制器采用存储逻辑实现,也就是把微操作信号代码化,使每条机器指令转化成为一段微程序并存入一个专门的存储器(控制存储器)中。微操作控制信号由微指令产生。

1.微程序控制的基本概念

微程序设计思想就是将每一条机器指令编写成一个微程序,每一个微程序包含若干条微指令,每一条微指令对应一个或几个微操作命令。这些微程序可以存到一个控制存储器中,用寻址用户程序机器指令的办法寻址每个微程序中的微指令。

(1)微命令与微操作

一条机器指令可以分解成一个微操作序列,这些微操作是计算机中最基本的、不可再分解的操作。在微程序控制的计算机中,将控制部件向执行部件发出的各种控制命令称为微命令,它是构成控制序列的最小单位。例如打开或关闭某个控制门的电位信号、某个寄存器的打入脉冲等。微命令和微操作是一一对应的。微命令是微操作的控制信号,微操作是微命令的执行过程。

微命令和微操作有相容性和互斥性之分。相容性微命令是指那些可以同时产生、共同完成某一些微操作的微命令;而互斥性微命令是指在机器中不允许同时出现的微命令。相容和互斥都是相对的,一个微命令和一些微命令相容,和另一些微命令互斥。

注意:在组合逻辑控制器中也存在微命令与微操作这两个概念,它们并非只是微程序控制器的专用概念。

(2)微指令与微周期

微指令是若干个微命令的集合。存放微指令的控制存储器的单元地址称为微地址。一条微指令通常包含两大部分信息: ①操作控制字段,又称微操作码字段,用于产生某一步操作所需的各种操作控制信号。

②顺序控制字段,又称微地址字段,用于控制下一条要执行的微指令地址。

微周期通常指从控制存储器中读取一条微指令并执行相应的微操作所需要的时间。

(3)主存储器和控制存储器

主存储器用于存放程序和数据,在CPU外部,用RAM实现;

控制存储器(CM)用于存放微程序,在CPU内部,用ROM实现。

(4)程序与微程序

程序是指令的有序集合,用于完成特定的功能。

微程序是微指令的有序集合,一条指令的功能由一段微程序来实现。

微程序和程序是两个不同的概念。

微程序是由微指令组成,用于描述机器指令。微程序实际上是机器指令的实时解释器,是由计算机设计者事先编好并存放在控制存储器中的,一般不提供给用户的。对于程序员来说,计算机系统中微程序的结构和功能是透明的,无须知道。

而程序最终由机器指令组成,由软件设计人员实现编制好并存放在主存或辅存中的。

①地址寄存器(MAR):用于存放主存的读、写地址。

②微地址寄存器(CMAR):用于存放控存的读、写微指令的地址。

③指令寄存器(IR):用于存放从主存中读出的指令。

④微指令寄存器(CMDR或uIR):用于存放从控存(CM)中读出的微指令。

2.微程序控制器组成和工作过程

(1)微程序控制器的基本组成

①微地址形成部件:用于产生初始微地址和后继微地址,以保证微指令的连续指令。

②微地址寄存器:接受微地址形成部件送来的微地址,为在CM中读取微指令做准备。

③控制存储器:它是为微程序控制器的核心部件,用于存放各指令对应的微程序,控制存储器可以用只读存储器ROM构成。

④微指令寄存器:用于存放从CM中取出的微指令,它的位数同微指令字长相等。

(2)微程序控制器的工作过程

微程序控制器的工作过程实际上是在程序控制器的控制下计算机执行机器指令的过程,这个过程可以描述如下: ①执行取微指令公共操作。具体的执行是:在机器开始运行时,自动将取指微程序的入口地址送入CMAR,并从CM中读出相应的微指令送入CMDR。取指微程序的入口地址一般为CM的0号单元,当取指微程序执行完后,从主存中取出的机器指令就已存入指令寄存器中了。

②由机器指令的操作码字段通过微地址形成部件产生该机器指令所对应的微程序的入口地址,并送入CMAR。

③从CM中逐条取出对应的微指令并执行。

④执行完对应于一条机器指令的一条微程序后又回到取指微程序的入口地址,继续执行第一步,以完成取下一条机器指令的公共操作。

以上是一条机器指令的执行过程,如此周而复始,直到整个程序执行完毕为止。

(3)微程序和机器指令

通常,一条机器指令对应一个微程序。由于任何一条机器指令的取指令操作都是相同的,因此,可将取指令操作的微命令统一变成一个微程序,这个微程序只负责将指令从主存单元中取出送至指令寄存器中。

此外,也可以编出对应间址周期的微程序和中断周期的微程序。这样,控制存储器中的微程序个数应为机器指令数再加上对应取指、间址和中断中期等共用的的微程序数。

注意:若指令系统中的具有n种机器指令,则控制存储器中的微程序数至少是n+1个(1个为公共的取指微程序)。

3.微指令的编码方式

微指令的编码方式又称为微指令的控制方式,它是指如何对微指令的控制字段进行编码,以形成控制信号。编码的目标是在保证速度的情况下,尽量缩短微指令字长。

(1)直接编码(直接控制)方式(类似于一级页表)

直接编码无须进行译码,微指令的微命令字段中每一位都代表一个微命令。设计微指令时,选用或不选用某个微命令,只要将表示该微命令的对应位设置成1或0即可。每一个微命令对应控制数据通路中的一个微操作。

这种编码的优点是简单、直观,执行速度快,操作并行性好。其缺点是微指令字长过长,n个微命令就要求微指令的操作字段有n位,造成控存容量极大。

(2)字段直接(译码)编码方式(类似于二级页表)

将微指令的微命令字段分成若干小字段,把互斥性微命令组合在同一字段中,把相容性微命令组合在不同的字段中,每个字段独立编码,每种编码代表一个微命令且各字段编码含义单独定义,与其他字段无关,这就是字段直接编码方式。

这种方式可以缩短微指令字长,但因为要通过译码电路后再发出微命令,因此比直接编码方式慢。

微命令字段分段的原则: ①互斥性微命令组合在同一字段中,把相容性微命令组合在不同的字段中

②每个小段中包含的信息位不能太多,否则将增加译码线路的复杂性和译码时间

③一般每个小段还要留出一个状态,表示本字段不能发出任何微命令。因此,当某字段的长度为3位时,最多只能表示7个互斥的微命令,通常用000表示不操作。

(3)字段间接(译码)编码方式(类似于多级页表)

一个字段的某些微命令需另一个字段中的某些微命令来解释,由于不是要字段直接译码发出的微命令,故称为字段间接编码,又称隐式编码。这种方式可进一步缩短微指令字长,但因削弱了微指令的并行控制能力,因此,通常作为字段直接编码方式的一种辅助手段。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏涤生的博客

天池中间件大赛Golang版Service Mesh思路分享

这次天池中间件性能大赛初赛和复赛的成绩都正好是第五名,出乎意料的是作为Golang是这次比赛的“稀缺物种”,这次在前十名中我也是侥幸存活在C大佬和Java大佬的...

22940
来自专栏吴伟祥

Linux 格式化和挂载数据盘 转

本文描述如何用一个新的数据盘创建一个单分区数据盘并挂载文件系统。本文仅适用于使用 fdisk 命令对一个不大于 2 TB 的数据盘执行分区操作。如果需要分区的数...

83220
来自专栏MongoDB中文社区

MongoDB CEO做客CNBC : MongoBD之道

近日, MongoDB CEO Dev Ittycheria做客CNBC最当红的节目Mad Money,与主持人Jim Cramer(著名华尔街资金管理人)一起...

11630
来自专栏吴伟祥

xss攻防浅谈 转

XSS (Cross-Site Script) 攻击又叫跨站脚本攻击, 本质是一种注入攻击. 其原理, 简单的说就是利用各种手段把恶意代码添加到网页中, 并让受...

9710
来自专栏华章科技

互联网人群画像和你所不知道的真相

作为新时代互联网营销的关键部分,人群画像引起了诸多兴趣,近年颇为风靡。几乎所有的互联网广告供应商都不约而同的强调,他们有足够精确的人群画像数据,确保能够找到广告...

32920
来自专栏吴伟祥

ActiveMQ 中的消息持久化 原

为了避免意外宕机以后丢失信息,需要做到重启后可以恢复消息队列,消息系统一般都会采用持久化机制。

12730
来自专栏涤生的博客

天池中间件大赛——单机百万消息队列存储设计与实现

这次天池中间件性能大赛初赛和复赛的成绩都正好是第五名,本次整理了复赛《单机百万消息队列的存储设计》的思路方案分享给大家,实现方案上也是决赛队伍中相对比较特别的。

27410
来自专栏华章科技

吴甘沙:大数据的六大人工智能变现方式

大数据技术与移动互联技术和云计算技术一样,都属于颠覆性的信息技术。但是,大数据并非是高纯度的石油而是含金量非常低的矿石,数据量大、种类繁杂、价值密度低、以及时时...

9720
来自专栏华章科技

大数据的理想与现实之间

我们就按照论文里通常的套路开始吧。首先“什么是数据?”通俗的理解就是:如果把企业比作一个“生产线”,数据就是在这个“生产线”上各项活动所产生的,以各种形式存放在...

10010
来自专栏MongoDB中文社区

MongoDB Compass聚合管道构建器新特性介绍

分析数据的最有效方式就是在它已经存储的位置再进行分析。 这就是为什么MongoDB内置的聚合框架的原因。

15930

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励