zoukankan      html  css  js  c++  java
  • 【知识强化】第五章 中央处理器 5.4 控制器的功能和工作原理

    下面我们进入第五章的第四节,控制器的功能和工作原理。

    那么首先,我们来看一下本章的一些内容。我们再来对我们之前讲过的内容进行一下梳理。我们本章,第五章,中央处理器,也就是CPU,我们要学五节的内容。第一节我们讲解了CPU的功能和基本结构,我们讲解了运算器的功能和结构,以及控制器的功能和结构。接下来我们讲解了指令的一个执行过程,我们讲解了指令周期的概念,以及这一个数据流,其中数据流我花了大量的篇幅给大家做了讲解。然后我们简单地提了一下指令的执行方案。那么上一节呢,是比较重要的这一节,就是数据通路的功能和基本结构,我们讲了两个,一个是单总线,一个呢是专用数据通路。我们是如何设置部件之间的这样的连接路径这两种方法,以及在这样的一个执行过程当中,信号和数据是如何传输的,大家应该有一个基本的了解了。那么我们知道了它是如何进行传输的之后,我们想到了一个问题,是谁来控制它们的?那么这就是我们这一节当中的控制器它的一个功能和这样一个工作原理。我们要讲解呢控制器是如何指挥整个系统的工作的,然后我们要讲解两大种控制器的设计方案。一个呢是硬布线的方案,一个呢是微程序的方案。值得注意的是,硬布线它呢主要用到的是这样的一个组合逻辑,这样的一个电路的设计。所以呢,硬布线这一节不做重点,大家只要把视频当中讲的内容做一个简单的梳理,做一个简单的记忆即可,主要内容呢还是在微程序这一段,所以大家要分清主次。好,那我们这一节先来看一下我们控制器它的这样的功能和结构是怎样的。我们之前在第一节已经给大家讲过了,控制器是干嘛的呢?控制器用一句简单的话来说,控制器就是控制整个系统的工作的。它的这样的一个作用就是来控制整个系统,指挥整个系统的。它是整个系统的一个控制中枢和指挥中枢。所以在我们的控制器的控制之下,我们的运算器、存储器、输入输出设备,构成了一个有机的整体,它能够按照我们指令的要求来指挥我们整个的全机协调工作。所以呢,它的基本功能就是执行指令,然后每一个指令的执行都是控制器发出的一组微操作进行实现的。

    所以控制器的它的功能就是来控制整个系统的工作的。我们可以看到这个图当中给出了我们的CPU,上面是CPU,是控制器和运算器。下面呢是其他的功能部件,输入输出设备和我们的主存然后是我们的总线进行一个连接。那么用虚线框出来的那部分呢就是我们这一节要讲的这个控制器。那么总线呢我们将要在下一章,也就是第六章进行学习。然后我们的输入输出设备我们将要在我们的最后一章也就是第七章进行学习,所以这一部分只要做一个了解即可,详细的内容呢在下两章进行,大家进行详细的学习。那么我们首先要看的呢是这个地址总线。

    地址总线是用来干嘛的呢?地址总线就是说,我们的内存,我们的输入设备和输出设备,都是从我们的地址总线来接收我们的地址信息的。它是和CPU进行一个连接的。我们CPU要访问哪一个,我们就要通过这样的地址总线进行一个地址的交互,所以地址总线就是让我们的内存,我们的输入输出设备,从它上面来接收地址信息的。那么,我们的这样的一个地址都是一串二进制码,那么我们怎么能够分清它要访问的呢是内存单元,还是要访问我们的输入输出设备呢?那么这样的内容呢,我们将要在下两章进行一个讲解。所以大家这时候只要了解一下,我们这时候地址总线它的范围已经扩大了,我们在之前讲地址总线的时候都是说它是用来访问主存的,但是这时候我们也可以看到地址总线也是可以用来访问输入和输出设备的。所以这时候我们的地址总线它的作用的范围已经进行了一个拓广,所以大家要了解一下地址总线它的作用是什么。

    有了地址总线还要有控制总线,控制总线是用来干什么的呢?我们的内存,和我们的输入输出设备都是从控制总线上面来得到我们CPU对它的一个控制信号的。所以控制总线是用来传输控制信号的。

    那么还有一个呢就是我们的数据总线。数据总线呢就是通过我们的数据总线,让我们的内存和我们的输入输出设备然后进行一个交换数据。我们可以看到,我们的这一个地址总线和控制总线都是一个单向的箭头,有没有看到,都是单向的,都是指向我们的内存和输入输出设备的。而我们的数据总线,它是一个双向的箭头。它既可以从我们的CPU里面读,也可以呢由CPU向它里面写,都是可以的,这是数据总线。因为它要通过数据总线进行一个数据的交互嘛,所以必须是既可以读也可以写的。而我们的地址总线和控制总线就不一样了,它只是用来接收的。内存和输入输出设备都是通过它们两个进行接收信号的。所以呢大家要看一下这个箭头,做一下理解。好,这是我们的三大总线它的一个作用,大家进行一个简单的了解就可以了。

    那我们可以看到,由于我们的这个内存里面的这个数据,和我们的输入输出设备这样的数据,它的格式是不一样的,所以我们要有,输入输出设备要有一个接口来和我们的数据总线进行一个连接。那么这个接口,就是用来进行一个数据的格式的转换的。所以呢,输入输出设备,是通过接口电路和我们的总线进行相连的。那么这个接口就是用来,基本功能就是这个。那么详细的内容呢,我们将要在第七章进行讲解。那么在这一张图当中,你要掌握的内容就是我们图中所给的内容,你只要知道概念就可以了。

    那么我们之前说过了,这个数据总线啊它既可以读也可以写,所以呢我们的运算器是可以通过我们的数据总线进行连接的。所以,运算器是通过数据总线和我们的内存和我们的输入输出设备进行一个数据的传送的。同样的,我们这个数据总线也可以送到我们的指令寄存器当中。那么数据是送到运算器当中,指令是送到指令寄存器当中,这个大家应该非常了解了。那么我们就来看一下,这个控制器是用来干什么的?

    上一节课我们已经把控制器的功能和它的一个基本的结构给大家讲清楚了,那么下面我们就来学习控制器的两种的不同的设计方案——硬布线和微程序。那么这一节我们来讲解硬布线控制器的它的设计方案。注意,之前我们已经说过,由于硬布线控制器这一部分内容特别的繁杂而且用到的电路知识比较多,所以这一部分内容呢不做重点要求。大家只要把今天视频上的这点内容做一个简单的了解即可,把它的一个过程捋清楚了就可以了,不需要深究。

    好的,那么我们来看一下。之前我们已经讲过了,控制单元它的这个输入和输出。那么我们可以看到,它的输入有四部分,一部分呢是指令寄存器IR,它的这个操作码的部分。还有呢就是我们的时序系统产生的机器周期信号和节拍信号,还有呢就是来自执行单元的这样的一个标志,以及来自系统总线的这样的控制信号。

    那么我们可以把这个标志和这个来自系统总线的控制信号

    把它合起来,统称为标志,也就是来自于执行单元的这样的一个反馈信息。

    所以呢执行单元是根据CPU当前所处的状态,或者呢根据系统总线这样的一个反馈信息我们把它统称为标志,然后把它输入进来。由于这个标志啊是要么0要么1,所以这时候来设计是比较方便的。但是呢指令寄存器它给的这个操作码部分,它是一个n位的一个二进制的序列。所以我们根据之前我们讲过的这样的一个译码器,之前我们讲地址的时候就已经讲过,如何把n位的一个二进制的序列转化为2^n种不同的状态,我们用到的呢是一个译码器。所以同样的这时候,我们如何把这样的操作码也翻译成这样的一个状态。那么我们用到的呢也是一个译码器叫做操作码译码器。

    它呢就把n位的操作码

    变成了这样的2^n种不同的选择。那么这样呢就和标志一样,这样的0和1,同样的就可以进行我们的操作了。

    那么时钟信号又是如何输入到我们的控制单元里面的呢?它呢是通过一个叫做节拍发生器的这样的东西,把它输入到控制单元里面的。所以呢这时候我们的输入,已经有了。

    那么这样的时钟信号呢,我们用CLK来表示。它又叫做机器主频,所以呢它是这样的一个循环往复的这样的时钟信号。它是为了使我们的控制单元按照一定的先后顺序,一定的节奏,发出各个的控制信号。所以呢这个控制单元就必须受到我们时钟的控制。也就是说,一个时钟脉冲使我们的控制单元发送一个操作命令,或者呢发送一组需要同时执行的这样的操作命令。

    这样的时钟信号就是有多个先后顺序的这样的一个节拍信号。

    我们可以看到是这个样子。那么我们上面的这个在我们第一节讲解机器周期的时候就已经讲过了。那么最上面的这个是我们的时钟信号,每一个高电平呢

    下面我们进入微程序控制器的学习。

    我们来回顾一下之前已经讲过的内容,那么在控制器的功能和工作原理这一小节当中,在之前的课中,我们已经讲解了控制器是如何指挥整个系统工作的,并且给出了第一种控制器的设计方案,也就是硬布线的设计方案。那么硬布线设计方案呢是组合逻辑设计这样的电路的知识来设计的。它是采用组合逻辑设计的方法来设计这个控制单元的。它的思路是比较清晰,然后简单明了。那么这一小节我们将要讲解第二个控制器的设计方案,也就是微程序这样的控制器的设计方案。值得注意的是,我们上一节那部分,也就是电路设计那部分,大家只要了解一下即可,重点在于前面,也就是微指令那部分内容。

    下面我们来看一下,这是我们上一节最后给出的这样的一个组合逻辑的这样的电路。我们可以看出,它的每一个微操作命令都对应了一个逻辑电路。我们这个逻辑电路,不是整个控制器的逻辑电路,它是一个微操作的控制信号的逻辑电路。这个微操作对应的控制信号就是图中最右边给出的控制信号。那MAR它所对应的地址,对应的主存单元的内容,送到我们MDR当中。所以它就是说,每一个微操作的控制信号,都要去设计这样的电路。所以这样的一旦设计完了我们就会发现,这样的控制单元的逻辑结构是非常麻烦的,是非常复杂的。因为它每一个控制信号都对应着一个这样的控制电路。所以为了克服这样的缺点,我们就采用我们这节课要讲的微程序的设计方案。并且我们可以看到这样的组合逻辑电路的特点是什么?就是说我们给出,要给出这样的控制信号,我们必须给出这样的输入。也就是说我们图中最左边的FE、T1、IND、EX这几个输入给出了,我们才能给出这样的控制信号。

    也就是说我们的组合逻辑电路,它呢是要根据当前的这样一个信号,当前的指令码、状态、TE以及时序,我们即时产生的这样的微操作的控制信号。

    那么我们来看一下,微程序控制单元它的核心部件,也就是我们的CM控制存储器它的一个构造。

    那么这个右边的图就是我们的微程序控制单元,它的核心部件呢就是我们的控制存储器CM。

    它里面存放的是什么呢?存放的就是这样的东西,是一条一条的微指令。那么微指令呢我们都给它编了地址,也就是M,M+1,M+2,然后上面都是P,P+1,P+2。那么我们之前已经说过了,我们的一条机器指令是对应着一个微程序的。然后呢,由于它们的取指周期都是完全相同的,所以我们就把取指周期的微程序单独列出来做成一个公共的部分。所以我们最上面那个部分,M到M+2这个部分,就是我们的取指周期的一个微程序。同样的,有的时候呢我们的间址周期和中断周期也把它做成一个公共的部分,所以呢间址周期和中断周期它呢也对应着微程序。那么下面就是我们每一条机器指令所对应的单独的自己的微程序,也就是某一个操作,某一个机器指令对应的操作,这样的一个微程序。所以呢,我们的某一个微程序,它呢就对应着一条一条的微指令。而我们之前也说过,微指令可以把它分为微操作码和微地址码。微操作码是什么东西呢?微操作码呢,就是我们的操作控制的字段。而微地址码呢,就是我们的顺序控制的字段。

    M这条指令,它的这个微地址码字段就是M+1。而M+1它的这条微指令,微地址码部分就是M+2。而到了最后,也就是取指阶段的最后,到底要跳到哪儿,这个呢,是由我们的顺序逻辑它来完成的,所以我们就空着不写,是根据顺序逻辑它的这样的控制来完成的。那么取指周期它的微指令,就是这个样子的。同样的,我们的每一条机器指令,它对应的微指令,它的地址码部分也和它是类似的。P这一条微指令,它的地址码部分就是P+1。同样的P+1就是P+2。注意到最后在我们这一张图当中,Load操作的最后这一条微指令,它呢就对应着我们的取指周期的第一条微指令,也就是M。所以这个大家一定要记清楚,机器指令所对应的微程序它里面的微指令的最后一条指令,它的地址码字段,微地址码字段,对应的就是我们取指周期的第一条微指令。

    同样的,Store它也是这样的。K+1、K+2,然后是M。

    那么我们的间址周期呢,它完成了之后应该到我们的执行周期,对吧。所以间址周期的最后,它转到我们的执行周期的微程序。

    中断周期,它完成了之后应该是什么?应该是取址周期对吧。所以中断周期,它的微程序的最后,应该转到我们取指周期的微程序。所以这一个,这样的填空大家一定要搞清楚,它的概念是什么。一般来说,每一个微程序里面它都是顺序执行的。那么,最后它要跳转的时候,要跳转到哪儿,大家一定要清楚。取指阶段完成要跳转呢,它是不固定的,它是根据我们的顺序逻辑来决定的。而间址周期完了应该是执行周期,所以间址周期的最后应该是执行周期的微程序。而中断周期之后,应该是转到取指周期的微程序。所以中断周期之后,应该是转到我们取指周期的微程序。而每一个操作结束,应该转到我们的取指周期。所以每一个操作的微程序的最后,它的地址码部分,微地址码部分,就是我们的取指周期的第一条。

  • 相关阅读:
    《JS高级程序设计》之七
    《JS高级程序设计》之六
    《JS》之原型链
    《JS高级程序设计》之五
    《JS高级程序设计》之四
    Spring Cloud Config自动刷新配置
    Rancher自动构建部署服务
    OpenStack实例noVNC URL获取
    Jenkins配置构建Maven项目并打包Docker镜像推送至私仓
    服务注册中心,Eureka与Zookeeper比较
  • 原文地址:https://www.cnblogs.com/ZHONGZHENHUA/p/11511232.html
Copyright © 2011-2022 走看看