当前位置: 首页 > news >正文

微程序控制器

废话

CPU执行一条机器指令(比如 ADD R1, R2)是一个非常复杂的过程,包含多个小步骤(微操作)。硬布线控制器像是现场即兴发挥,靠一堆复杂的电路逻辑来实时决定下一步干嘛;而微程序控制器则是严格按照剧本拍戏,这个剧本就是微程序

基本概念(假的)

机器指令一场戏比如“打斗戏”、“文戏”。这就是我们写的程序(如 ADDMOV)。
微操作一个具体的武打动作比如“出拳”、“踢腿”。这是CPU最基本的操作,如“打开PC到MAR的门”、“内存读信号”。
微命令动作指令导演喊“出拳!”,这个口令就是微命令,它导致演员做出“出拳”的微操作。一一对应,可以理解为同一个事物的两种表述(信号 vs 动作)
微指令一个分镜头剧本一个分镜头里可能同时要求好几个动作,比如“演员A出拳,演员B后仰”。一条微指令包含多个可以同时执行的微命令(并行)
微程序整场戏的完整剧本由一连串的分镜头剧本(微指令)组成。一条机器指令(一场戏)对应一个微程序(一个完整剧本)
控制存储器(CM)剧本库一个存放所有戏(所有机器指令)的完整剧本(微程序)的仓库。CPU出厂前就写好了(ROM)。
微地址寄存器(CMAR)当前镜头编号指示现在要拍的是剧本库里的第几个分镜头。
微指令寄存器(CMDR)当前正在拍的分镜头剧本从剧本库(CM)里根据编号(CMAR)取出来的具体内容。
顺序逻辑/地址形成导演和场记负责决定下一个要拍哪个分镜头。根据当前镜头的结果、演员状态(标志位)等来决定。

注:指令 > 微程序 > 微指令 > 微命令(微操作)

基本结构(真的):

工作流程(真的假的)

  1. 执行取指令的公共操作(机器运行时自动将CM中的取指微程序入口地址送到CMAR,并从CM中读出下相应微指令送入CMDR,CMDR的控制字段产生有关微命令执行取指公共操作。取指微程序执行完后,主存中取出的机器指令已存入IR。)
    1. 导演行动:开机!所有戏的开头都一样。导演大喊:"场记,准备拍通用开场镜头!" 于是,CMAR(当前镜头编号)被设置为 0(通用开场剧本的起始位置)。
    2. 场记行动:场记跑到剧本库(CM)的0号位置,取出第一个分镜头剧本(微指令),递给演员们(放入CMDR)。
    3. 演员表演:所有演员按照这个分镜头剧本里的指示,并行地执行一系列基础动作(微命令)
  2. 机器指令的OP字段经微地址形成部件,产生该机器指令地址对应的入口地址并送入CMAR。
    1. 导演研判:主演(IR)拿到了剧本《ADD R1, R2》。导演一看剧本封面上的类型码(操作码OP),发现是"武打戏(ADD指令)"。
    2. 查找剧本:导演(微地址形成部件)翻看总目录,迅速找到"武打戏专用完整剧本(ADD指令的微程序)"存放在剧本库(CM)里的起始地址,比如50号位置。
    3. 下达指令:导演对场记说:"开场拍完了,现在转场,去拍50号位置的武打戏!" 于是,CMAR(当前镜头编号)被更新为 50。
  3. 根据地址从控制存储器中逐条取出微指令并执行,每条微指令都可以产生下一条微指令地址。
    1. 正式开拍:场记根据新的镜头编号(CMAR=50),从剧本库(CM)中取出"武打戏"的第一个分镜头剧本(微指令),交给演员(放入CMDR)。
    2. 精彩表演:演员们执行这个分镜头里的所有武打动作(微命令)。
    3. 决定下一镜:每个分镜头剧本的最后,都会写明下一个镜头怎么拍(下地址形成方式)
  4. 一条机器指令对应的微程序执行完成后,下一条微指令又回到取值微程序地址入口,重复第一步。
    1. 杀青转场:这条"武打戏"(ADD指令)的最后一个分镜头拍完。在这个镜头的剧本里写着:"本戏杀青,所有人员回到0号场地,准备下一场戏的通用开场。"
    2. 循环开始:CMAR(镜头编号)被重置为 0。
    3. 流程重启:控制器立刻回到步骤①,开始为执行下一条机器指令(下一场戏)拍摄"通用开场镜头"。

下地址形成方式

1. 断定方式(下地址字段直接指出)

在当前微指令中,专门设置一个 下地址 字段,这个字段的值直接就是下一条要执行的微指令的地址。

2. 增量计数器法(CMAR + 1 -> CMAR)

默认情况下,微指令在控制存储器(CM)中是顺序存放的。执行完一条微指令后,让微地址寄存器(CMAR)自动加1,指向下一条相邻的微指令。

3. 分支转移(条件转移)

根据某个条件(如运算结果是否为0、是否有溢出等)来决定下一条微指令的地址。

4. 由机器指令的操作码形成

取指周期结束后,机器指令的操作码(OP)被送入一个叫做 “微地址形成部件” 的电路。这个电路实际上是一个译码器,它将操作码翻译成对应指令的微程序在CM中的起始地址(入口地址)

5. 由硬件产生微程序入口地址

在CPU启动或响应外部紧急事件时,由专门的硬件电路直接产生一个固定的微程序入口地址。

微指令的格式

1. 水平型微指令


一条微指令能定义多个可【并行】的微命令(一对多

  • 优点:微程序短,执行速度快
  • 缺点:微指令长,编写微程序较麻烦

1.1. 直接编码(直接控制)方式

无须进行译码,微指令的操作控制字段中每一位都代表一个微命令。(不用附加1位空操作,全0时即为空操作)

  • 优点:简单、直观,执行速度快,操作并行性好(无需译码,效率最高
  • 缺点:微指令字长过长,n个微命令就要求微指令的操作字段有n位,造成控存容量极大

1.2. 字段直接编码方式

将微指令的控制字段分成若干 “段”,每段经译码后发出控制信号。

分段原则

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

1.3. 字段间接编码方式

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

  • 优点:可进一步缩短微指令字长
  • 缺点:削弱了微指令的并行控制能力,故通常作为字段直接编码方式的一种辅助手段

2. 垂直型微指令

一条微指令只能定义【一个】微命令,由微操作码字段规定具体功能(一对一

  • 优点:微指令短、简单、规整,便于编写微程序
  • 缺点:微程序长,执行速度慢,工作效率低

3. 混合型微指令

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

http://www.dtcms.com/a/418848.html

相关文章:

  • 零基础学AI大模型之Prompt提示词工程
  • mysql基础【基础概念与数据模型】
  • Windows系统Web UI自动化测试学习系列4--开源系统平台测试项目环境部署搭建
  • 深入理解 C++ 中的 `std::bind`:功能、用法与实践
  • 具有营销型网站有哪些长沙市建设局网站
  • 对于网站建设的提问海陵区建设局网站
  • QML学习笔记(十七)QML的属性变更信号
  • JavaWeb 课堂笔记 —— 23 事务管理
  • 一阶微分方程求解方法详解:构建系统学习笔记
  • display ip routing-table protocol ospf 概念及题目
  • 河北邯郸建网站大学网站建设的目标与思路
  • Python学习历程——基础语法(print打印、变量、运算)
  • 【从零开始学习RabbitMQ】
  • Kafka08-优化-尚硅谷
  • 小杰深度学习(two)——全连接与链式求导
  • vue警告:Extraneous non-props attributes (class) were passed to component
  • 记录第一次搭建ELK+filebeat环境
  • 【复习】计网每日一题--多播
  • 狮山网站开发wordpress轩小程序
  • Ubuntu22.04——配置固定IP
  • 记Bugku CTF平台解题过程
  • OceanBase主备库日志传输服务
  • React-props的children属性
  • 济宁做网站的公司邯郸公司网站建设
  • 特别分享:关于Pipeline
  • 速通ACM省铜第十七天 赋源码(Racing)
  • ARM(IMX6ULL)——通信(IIC/I2C)
  • 零基础学AI大模型之LangChain-PromptTemplate
  • FFT去除规律条纹
  • JAVA中的权限修饰符