首页 > 其他分享 >控制器设计

控制器设计

时间:2023-04-06 20:11:35浏览次数:34  
标签:微指令 控制 控制器 微程序 地址 指令 信号 设计

粗略讨论硬布线和微程序控制器

引入

下图是单总线cpu的示意图:

我们从宏观到微观看,如何取出一条指令这个问题。

  • PC存放着待取指令的地址,将地址送进MAR,进行访存操作后,指令被送进MDR

    那怎么实现的上面这些操作呢?答案就是控制器在发出控制信号,如下

  • 以cpu单总线的方式来探讨

    image-20230406173640372

    将指令地址送进MAR ==> (PC)->MAR ==> PCout有效、MARin有效

    访存操作,指令被送进MDR ==> M(MAR)->MDR ==> MARout有效、MemR有效、MDRinE有效

    从上面可以看出,是通过一连串控制信号实现的取出一条指令

    同时这里可能有人会有疑惑,那其他数据通路方式呢?数据通路包括单总线cpu、多总线cpu、专用数据通路。那其实它们也都是一样的,通过一连串控制信号实现这些操作,只是信号序列不同。

    那这些控制信号由谁发出,怎么发出呢?答案就是由CU,Control Unit控制单元发出。至于怎么发出,就涉及到这次讨论的内容,硬布线和微程序两种模式了。

怎么发出控制信号


回看上面的图,我们认为控制器包括:PC、IR、CU。其中CU包括了时序系统、指令译码器ID、微操作信号发生器。

发出控制信号的宏观视角(模拟心跳过程):cpu执行是有节拍的,而这个节拍就是时序系统给出的。当送入节拍、操作码、标志后,cpu就会处理然后泵出一组控制信号。每送入一次信息就泵出一组控制信号,一条指令就这样通过不断泵出一组组控制信号而完成。

微程序设计方式

概念辨析:

  • 微命令:控制部件向执行部件发出的某个控制信号,如打开某个电位信号。

  • 微操作:微命令的执行过程,和微命令一一对应。和微命令的关系就像,妈妈让你去扫地(微命令),你拿扫帚在扫地(微操作)。

  • 微指令:cpu在一个节拍内做出的全部微操作构成一条微指令。不一定是一个节拍只做一个微操作,只要硬件不冲突,一个节拍可以同时做多个微操作。

  • 微程序:很多微指令构成一个微程序,每一个微程序对应一条指令(注意不是微指令)

    总结:我们要执行一条指令,就等于执行一个微程序,就等于执行了许多微指令,每个微指令包含了几个微操作。结合上面的宏观视角,每一条微指令就对应了一次心跳。

微操作信号发生器怎么知道指令a要对应执行哪些微操作,也就是要泵出什么控制信号呢?所以它要有一个存储器,存储指令a对应那些控制信号序列,b又对应了哪些。因此看如下的结构图:

image-20230406184904925

上面说的存储器也就是控制存储器CM,它存放不同指令对应的微指令序列。而每个指令都是由取指、间指、执行、中断四个周期组成,对于所有指令而言,取指、间指、中断这三个周期的微指令序列是一样的,因此为了节省空间,CM只存放了这三组微指令序列各一份。因此不难理解,CM中总共就存放了,取指、间指、中断这三个周期的微指令序列,以及不同指令的执行周期微指令序列,这些都是cpu出厂的时候就写好的了。而且CM不能是易失性的,因此是ROM。

image-20230406185614977

下面举一个例子演示整个过程:

  • 执行LDA
  • 操作码送入微地址形成部件,产生初始微地址(取指周期第一条微指令)和后续微地址
  • 经过顺序逻辑,送入CMAR(也叫微PC,微地址寄存器),存放接下来执行的微指令的地址
  • 将微指令地址经过地址译码转化为存储单元控制信号
  • CM取出微指令地址对应的微指令送到CMAD(也叫微IR)
  • CMAD送出控制信号,并将下地址送到顺序逻辑,结合标志(是否间指、中断等)确定下一条微指令的地址并送往CMAR
  • 循环执行直到指令结束

问题解释:

  1. CMAD怎么实现送出控制信号?分为水平型微指令和垂直型微指令。水平型的控制信号为0101101010....。每一位对应一个信号如MDRin。具体两种类型的区别之后讨论。
  2. 为什么初始微地址是取指周期第一条微指令地址?因为所有指令都从取指开始,因此第一条微指令是不需要指明的,一定是取指第一条。
  3. 顺序逻辑的作用?可以结合标志判断下一条微指令是否需要跳转。如需要寻址的话,下一条微指令就变为间指周期的第一条。否则就按照CMDR送来的下地址继续执行。

硬布线设计方式

硬布线也是同样的,我们要实现根据输入的节拍、操作码和标志泵出一组组控制信号。但是是通过电路直接实现的。

我们需要为每一位输出的控制信号设计专门的电路,以下是一个控制信号的例子:

可以通过这个电路实现,当输入的特定操作码、节拍、标志后,输出的是0或1。所以可以看到,如何设计这个电路才是实现硬布线的重点。

可以与微程序对比一下,微程序是以指令为目标进行设计,硬布线是以控制信号为目标进行设计。硬布线设计需要考虑所有指令在哪个节拍需要当前控制信号有效,从而进行电路设计,因此每一位控制信号的输出都涉及所有指令,不难理解,每增加一条指令会导致所有的控制信号的实现电路需要改动。

总结

本文只是简单讨论了硬布线和微程序这两种控制器设计思路,对于许多深入的问题还没有说明,像如何设计硬布线的电路,如何设计指令对于的微指令序列等等。

标签:微指令,控制,控制器,微程序,地址,指令,信号,设计
From: https://www.cnblogs.com/nanguahh/p/17293981.html

相关文章

  • 分库分表索引设计:二级索引、全局索引的最佳设计实践(建议收藏)
    大家好,我是飘渺。分布式数据库架构下,索引的设计也需要做调整,否则无法充分发挥分布式架构线性可扩展的优势。今天我们就来聊聊“在分布式数据库架构下,如何正确的设计索引?”主键选择对主键来说,要保证在所有分片中都唯一,它本质上就是一个全局唯一的索引。如果用大部分同学喜欢的自增......
  • 面试突击MySQL:高并发情况下,数据库该如何设计?
    转载:http://blog.itpub.net/70000181/viewspace-2776766/面试题剖析为什么要分库分表?(设计高并发系统的时候,数据库层面该如何设计?)说白了,分库分表是两回事儿,大家可别搞混了,可能是光分库不分表,也可能是光分表不分库,都有可能。我先给大家抛出来一个场景:假如我们现在是一个小创业公......
  • 互联网项目实战——Athena-OSS分布式文件存储服务设计
    摘要在系统中需要有统一的存储系统,用于较大型的文件和图片进行存储,Athena系统中利用开源的FastDFS来构建Athena分布式文件存储系统OSS服务。用于整个系统的存储服务。博文将详细的介绍分布式存储系统的背景和意义以及相关的技术选型与原理,供大家学习参考。一、分布式文件存储系统背......
  • 自动化测试当中的三大设计技巧:PO设计思想,数据驱动及关键字驱动
    大家好,我是洋子。当我们以离线脚本的形式编写了大量的自动化测试代码后,很容易发现以下常见问题:(1)对于UI自动化,当UI层的元素发生改变,需要修改所有相关的case,工作量巨大(2)代码难以扩展,每次想新增一个自动化case就要写新的逻辑,补充新的代码(3)代码可读性差,代码冗余,存在大量重复代码或者......
  • 【过滤器设计模式详解】C/Java/JS/Go/Python/TS不同语言实现
    简介过滤器模式(FilterPattern)或标准模式(CriteriaPattern),是一种结构型模式。这种模式允许使用不同的标准条件来过滤一组对象,并通过逻辑运算的方式把各条件连接起来,它结合多个标准来获得单一标准。例子将创建一个Person对象、Criteria接口和实现了该接口的实体类,来过滤Perso......
  • HMI人机界面相关介绍及人机界面设计
    在工业自动化领域,HMI是人机界面的缩写。在工业中使用HMI来控制和监控机器。如果没有HMI,就很难在工业中拥有良好的自动化流程。人机界面的定义人机界面(HMI)是一种用户界面,允许人类操作员与机器或过程进行交互。HMI通常用于工业环境,允许操作员监视和控制过程,例如工厂或发电厂中......
  • 微前端架构:将应用拆分为多个小型模块,实现模块化设计
    随着技术的不断发展和应用场景的不断变化,微前端架构也将不断演化和完善,成为更加成熟和稳定的前端架构模式,为开发者和企业带来更多的价值和机会。互联网应用的不断发展和迭代,传统的单体应用架构已经逐渐无法满足现代应用的需求。为了更好地适应快速变化的市场和业务需求,微服务和微......
  • Android设计模式之单例模式
    之前的一篇文章「Android开发如何进阶?」提到设计模式可谓是进阶必备,对设计模式的理解与运用对你之后的代码书写与架构设计有很多的帮助作用,那么从今天开始我就抽时间不定期来给大家分享下设计模式系列。什么是设计模式?其实简单的理解就是前人留下来的一些经验总结而已,然后把这些经......
  • 前端设计模式——MVC模式
    MVC模式(Model-View-Controller):是一种前端和后端都广泛应用的设计模式。它将应用程序的业务逻辑、数据表示和用户界面分离,使得开发人员可以独立地修改各部分而不影响其他部分。MVC设计模式有助于提高代码的可读性、可维护性和可重用性。MVC是Model-View-Controller的缩写,它将一个......
  • 设计模式之————依赖注入(Dependency Injection)与控制反转(Inversion of Controll
     参考链接:依赖注入(DI)or控制反转(IoC)laravel学习笔记——神奇的服务容器PHP依赖注入,从此不再考虑加载顺序名词解释IoC(Inversion of Controller) 控制反转(概念)DI(Dependency Inject) 依赖注入(IoC概念中的一种类型实现)通过依赖声明自动实例化依赖的类(通常通过反......