那么在前四章我们已经把数据的表示和运算,存储系统和指令系统都已经给大家讲完了。那么从这一章开始,我们将要讲解中央处理器的内容。那么这一部分内容我们就进入到我们计算机组成原理的一个深水区,它是我们计算机的一个中心,它也是我们本书的一个难点,也是这门课的一个难点。那么我们这一章要干什么呢?我们要从分析我们CPU的功能和它的内部结构入手,详细地讨论我们机器完成一条指令的一个全过程。机器是如何完成一条指令的,我们之前只是讲了一个指令是如何构成的,有了指令还没用,我们还要知道计算机是如何执行这条指令的。那么还要为了进一步提高我们数据的处理能力,开发系统的并行性以及呢采取的这样一个流水的技术。那么这个流水的技术是非常难的,也是非常重要的,所以大家一定要提高警惕。那么我们学完了这一章,相信大家就可以能够对CPU有了进一步的了解,也能够对一些概念比之前了解的更深入一点。就是我们之前只是提了有这么一个概念,而我们在这一章当中将要详细地讲解我们之前只是一笔带过的那一些概念。所以大家对于这一章的学习,一定要打起精神提高警惕,这一章呢是非常难的。那么我们这一章将要讲一些什么内容呢?刚才我们只是大概地提了一下,我们来看一下这一章的主要内容。

首先我们将要讲解CPU的功能和结构。我们要知道CPU需要提供哪一些功能。那么提供这些功能,我们CPU需要哪一些结构。那么这是一些概念性的东西。但这里不仅仅是一些概念性的东西,也要大家进行一些理解。其次呢,我们将要讲解指令是如何进行执行的,指令它是怎么执行的。我们的指令周期,我们的数据流,还有如何安排我们这样的指令进行执行的,那么这是我们第二节的内容。那么有了这些指令,我们还要有数据。数据通路的基本功能和基本结构,我们这样的部件之间是如何进行连接的,数据是如何在这一些通路上面进行传输的,那么这是我们第三节的内容。那么接着呢有了指令有了数据我们还要进行一些控制,那么我们将要讲解控制器它的功能和它的工作原理。我们的控制器是如何指挥我们整个系统进行工作的,还要讲解我们的控制器是如何进行设计的。那我们之前上一节的结尾,我们在讲CISC和RISC的时候,已经带出了这样的一个概念,什么叫做微程序,什么叫做硬布线。那么这只是一个执行的过程。那么整个过程执行结束了,我们还要对它进行一些优化,那么我们就要进行流水线的讲解。那么这是对我们的这个整个执行过程的一个优化。所以呢,我们可以看到这一章的内容是比较多的,而且比较复杂也比较难。其中关于我们的数据通路的分析,关于我们整个指令执行阶段的它的这个节拍,和我们的控制系统的安排,以及我们最后那部分流水线的技术和它的性能分析,是非常容易出综合题的。那么关于一些比较小的概念,比如像各种寄存器啊它的特点,我们执行阶段的各种周期呢它的特点,还有我们控制器的一些比较零碎的概念,还有我们的流水线的一些概念也是非常容易出选择题的。所以,这一章,是最为重要的一章,大家一定要加以警惕。

那么好的我们将要来进入它详细的学习。我们这一节的内容呢是来讲一下CPU的功能和基本结构。

那么CPU是用来干什么的?我们之前呢在第一章的时候已经讲了一下。

那么CPU它包括运算器和控制器这两大部分。那关于运算器啊,我们之前在第二章的时候已经讲完了,那么我们在这一章进行一个简单的回顾。那么我们这一章的主要内容呢,啊重点地来讲解我们的控制器的一些功能。我们知道啊,我们冯诺依曼结构的计算机,一旦程序进入存储器之后,我们就可以由我们的计算机自动完成取指令和执行指令的这样的任务。那么控制器就是为了完成这样的自动完成取指令和执行指令这样任务而存在的。它呢就是负责协调并控制我们计算机各个部件进行执行程序的一个指令序列,那么它的基本功能就是取指令、分析指令和执行指令。所以,我们CPU的具体功能就有指令控制。那么就是完成取指令、分析指令和执行指令这样的操作,也就是我们程序的一个顺序控制。那么有了指令的控制,我们还要对操作进行控制。那么第二个它的功能就是操作进行控制,那么一个指令的功能啊它往往是由若干个操作信号的一个组合来实现的。所以呢我们的CPU用来管理并且产生这样的一个操作信号,并且把这样的操作信号送到我们的完成这样的工作的这样的部件里面,从而呢去控制这些部件,按照我们的指令进行一些工作。那么CPU就是指令控制,操作控制,还有一个是时间控制。因为我们,为了执行这样的指令,我们需要再对各个操作进行一个时间上的一个控制,所以呢时间控制就是为我们每一条指令按照我们的时间顺序提供它应该有的这样的控制信号。那么还有就是数据加工和我们的中断处理。因为我们数据加工这是显然的,我们这计算机的功能就是计算嘛,所以呢就要对我们的数据进行一个算术和逻辑运算。那么还有的整个一个过程它可能会出现一些错误,出现一些异常情况。那么就要对我们计算机在运行过程当中出现的这些异常情况和我们的输出情况进行处理。那么这就是中断处理它的这样的一个工作。所以呢,这就是我们CPU的五大基本功能,我们再来回顾一下。首先要控制指令,然后呢还要控制操作,最后还要控制时间。这是我们最基本的三个控制,指令控制、操作控制和时间控制。计算机它最基本的功能肯定是计算嘛,所以还有数据加工的功能,最后还要对我们出现的异常情况和错误进行一个处理。那么这就是中断处理它的内容。

那么刚才我们讲了CPU的最基本的五大功能,那么CPU是由运算器和控制器这两大部分构成的,所以我们来看一下运算器和控制器它们分别的一些功能。运算器听它的名字就知道,运算嘛,所以就是对数据进行加工,所以这部分内容呢,对数据进行加工这部分内容是由运算器而完成的。那么如何进行加工呢?我们这里就不需要再说了,因为我们整个第二章就是在讲数据是如何进行处理的。所以呢,这部分内容大家已经学过了。那么关键的内容是哪儿呢?是控制器。控制器,听它的名字,控制嘛,所以它是协调并且控制我们计算机各个部件执行程序的一个指令序列,所以呢就是取指令、分析指令、执行指令,所以这就是我们控制器的它的功能。那么什么叫做取指令?取指令就是说我们控制器啊必须能够自动地从我们的存储器当中取出我们指令,所以这个取指令的功能就是说它要求能够自动地形成我们指令的地址,并且呢自动地发出我们取指令的命令。所以这就是我们控制器的第一个内容,就是取指令。那么接下来它要进行的是分析指令。分析指令它包括两部分的内容。第一部分是要分析我们这个指令要完成什么样的操作,所以呢就要进行操作码译码。其次呢,要能够分析参与这次操作的操作数的地址,所以呢就要能够产生我们操作数的有效地址。一个是操作,一个是操作数。最后呢就是取完指令了也分析完指令了,将要进行的呢就是执行指令。执行指令就是说我们根据分析指令所产生的这样的操作命令和操作数的地址的要求,形成一个操作控制信号序列,然后呢通过对我们的运算器啊存储器啊以及I/O设备的操作来执行我们每一条指令。那么这就是我们控制器的基本功能,取指令、分析指令和执行指令。此外呢,除了有这一些东西呢,还要能够对我们的异常进行一个处理,所以呢就是中断处理。还要能够控制我们程序的输入和运算结果的输出,也就是控制主机和I/O设备进行一个交换信息这样的一个功能。还有,要对我们的总线进行管理,以及对我们的异常情况以及特殊请求呢进行一个处理。所以呢我们整个的CPU它就是由运算器和控制器进行构成的,那么运算器就是进行一个数据加工,而控制器呢就是取指令、分析指令、执行指令以及中断处理。所以呢CPU就有指令控制、操作控制、时间控制、数据加工和中断处理这样的基本功能。那么好的,这就是我们CPU的基本功能的介绍。

那么在上一讲当中我们已经讲解了CPU的基本的功能,那么也已经说过了CPU是由运算器和控制器构成的。那么我们在这一讲当中将要详细地讲解运算器它的基本结构。运算器的功能大家都已经清楚了,它是用来处理数据的。那么它是由什么来构成的呢,我们来看一下。

那么运算器的核心就是这样的一个ALU,想必大家已经对它很熟悉了,那么它的这个符号就是像这样倒过来的一个这样的东西。它呢就是用来进行我们的数据的加工和处理的这样的一个东西,那么它就是算术逻辑单元,主要功能就是进行数据的逻辑的运算和算术的运算。所以运算器的第一个东西就是算术逻辑单元,主要功能就是进行算术和逻辑运算。除了有可以进行运算的这样的部件,你还要有数对吧,所以用来保存数的这样的东西呢,就是我们的通用寄存器组,就是这样的一个东西。它是用来存放操作数的,因为我们知道,光能够进行工作,光能够进行运算还不够,你要有东西进行运算嘛。所以呢这样的通用寄存器组是用来存放操作数的。那么它不仅仅是用来存放操作数的,它还能够由我们的程序设计者来指定它的许多的功能。比如说,还可以用来满足某种寻址方式所需要的寄存器。我们在上一章当中讲那个寻址的时候,我们可以用来用这个通用寄存器啊来作为满足某种寻址方式这样的一个寄存器。比如我们的基址寄存器啊变址寄存器还有我们的这个堆栈寻址所需要的这样一个栈指针它都是可以由通用寄存器来代替,我们在之前都已经讲过了。同时呢我们的寄存器还可以用来存放我们的有效地址的地址,比如像这个寄存器间接寻址的时候,它也可以用来存放我们的操作数它的这个有效地址它的地址。所以呢,第二个部分就是我们的通用寄存器组。那么这是我们给它标的名字叫R0、R1、R2、R3,其实呢它有它们自己的名字,AX、BX、CX、DX还有SP,SP这个我们应该知道,这是我们的栈指针,用来指示我们的栈顶这样的地址的。那么AX、BX、CX、DX,是什么东西呢?它就是用来存放操作数的,或者呢存放我们的这个中间结果的。或者呢,我们的这样一个地址信息的,反正只是名字不同而已,但它的功能都是一样的,都是通用寄存器组。那么它还能分为它们的高位部分和低位部分,AH和AL。H就是High,然后L就是Low嘛。就是高位部分和低位部分,那么这一部分内容大家了解一下就行了,不需要做详细的纠结。我们在这个汇编语言的时候可能大家应该用过,这个什么AX、AH、AR这样的东西,只不过是它的名字而已,反正你知道这是通用寄存器组就可以了。

那我们知道,这个通用寄存器组啊,想要和我们的这个ALU进行交换数据,那么最简单的一种方法就是把它们直接连到我们的这个ALU当中,就是这样连。其实呢它们的这个线是有很多的,我们这里只是做一个概念上的说明,所以只是用一条线就行了。我们的R1呢可以跟它进行连接,R2呢也可以跟它进行连接,R3呢也可以跟它进行连接。所以这种方式呢,进行连接的方式叫做什么?叫做专用数据通路。也就是说我们的指令进行,我们的数据和地址按照它的这样一个流动方向我们可以安排它的流动线路。也就是说我们每个寄存器,都分别和我们的ALU进行连接,那么这种方式呢,叫做专用数据通路,这样的连接方式。但是显然我们可以看到,如果每一个和它进行连接的话,是可能发生问题的。我不知道我现在读的是哪一个对吧,或者我们同时进行传输的时候,同时进行数据传输的时候,我不知道是哪一个,或者说有可能进行一个混淆,进行一个干扰。

那怎么办呢?也就是说我们如果直接用我们的导线进行连接的话,也就是相当于多个寄存器同时并且一直向我们的ALU传输数据,这显然是不行的。

那为了解决这样的问题,我们将要加一些部件。那么第一种方法,我们就使用我们的多路选择器,就是这样的东西。MUX,多路选择,根据控制信号选择一路进行输出,这样就很好地解决了我们的问题。你要哪一个我就选哪一个不就行了吗?那比如我现在接收一个信号,它们分别是00和01。那么我就说,第一个接受的呢是R0它的输入,另一端呢我们接收的是R1它的输入。这样就很好地解决了我们同时传输并且一直选择的问题,这是非常好的,叫做多路选择器,也是很容易理解的。这是你要哪一个我就选择哪一个就可以了。

那么第二种方式呢,叫做三态门,

就是这样子。加一个小三角的这样的东西。它是用来控制我们每一路是否输出的。如果它接收一个信号叫做R0out,那么R0out为1的时候说明我们

【知识强化】第五章 中央处理器 5.1 CPU的功能和基本结构的更多相关文章

  1. 【知识强化】第二章 数据的表示和运算 2.4 算术逻辑单元ALU

    从本节开始我们就进入到本章的最后一节内容了,也就是我们算术逻辑单元的它的实现.这部分呢是数字电路的一些知识,所以呢,如果你没有学过数字电路的话,也不要慌张,我会从基础开始给大家补起.那么在计算机当中, ...

  2. Android初级教程理论知识(第五章页面跳转和数据传递)

    总体概述: Android四大组件 Activity BroadCastReceiver Service ContentProvider 创建第二个activity 新创建的activity,必须在清 ...

  3. Java基础知识笔记第五章:子类与继承

    子类与父类 子类 class 子类名 extends 父类名{ ....... } 类的树形结构 子类的继承性 子类和父类在同一包中的继承性 子类继承了父类不是private的成员属性和成员方法   ...

  4. Java基础知识强化之IO流笔记09:File类功能

    详见如下: Android(java)学习笔记87:File类使用

  5. Java基础知识强化42:StringBuffer类之StringBuffer的截取功能

    1. StringBuffer的截取功能: public String subString(int Start): public String subString(int Start, int end ...

  6. Java基础知识强化41:StringBuffer类之StringBuffer的反转功能

    1. StringBuffer 的反转功能: public StringBuffer reverse(): 2. 案例演示: package cn.itcast_05; /* * StringBuff ...

  7. Java基础知识强化40:StringBuffer类之StringBuffer的替换功能

    1. StringBuffer的替换功能: public  StringBuffer   replace(int  start,  int  end, String  str): 2. 案例演示: p ...

  8. Java基础知识强化39:StringBuffer类之StringBuffer的删除功能

    1. StringBuffer的删除功能: public StringBuffer  deleteCharAt(int index):删除指定位置的字符,并返回字符串缓冲区本身. public Str ...

  9. Java基础知识强化38:StringBuffer类之StringBuffer的添加功能

    1. StringBuffer的添加功能: public  StringBuffer append(String str):可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身. publ ...

随机推荐

  1. 理解Promise (1)

    new Promise 需要传递一个执行器 (函数) 函数有两个参数 resolve reject promise 承诺 默认的状态是pengding 调用 resolve 表示成功 reject 表 ...

  2. java程序员必知的 8大排序

    Java常用的八种排序算法与代码实现 排序问题一直是程序员工作与面试的重点,今天特意整理研究下与大家共勉!这里列出8种常见的经典排序,基本涵盖了所有的排序算法. 1.直接插入排序 我们经常会到这样一类 ...

  3. hdu 6152 : Friend-Graph (2017 CCPC网络赛 1003)

    题目链接 裸的结论题.百度 Ramsey定理.刚学过之后以为在哪也不会用到23333333333,没想到今天网络赛居然出了.顺利在题面更改前A掉~~~(我觉得要不是我开机慢+编译慢+中间暂时死机,我还 ...

  4. nyoj 119: 士兵杀敌(三) 【RMQ模板】

    题目链接 贴个板子.. #include<bits/stdc++.h> using namespace std; int n,q; ],d1[][],d2[][]; void RMQ_in ...

  5. HashMap接口测试

    package com.iotek.map; import java.util.Collection;import java.util.HashMap;import java.util.Map;imp ...

  6. linux运维、架构之路-Nginx提高

    一.虚拟主机搭建 1.基于域名的虚拟主机 [root@web01 html]# cat nginx.conf worker_processes ; events { worker_connection ...

  7. Python3解leetcode N-ary Tree Level Order Traversal

    问题描述: Given an n-ary tree, return the level order traversal of its nodes' values. (ie, from left to ...

  8. H700关闭Direct PD Mapping

    Attached Enclosure doesn't support in controller's Direct mapping modePlease contact your system sup ...

  9. 写一个简单易用可扩展vue表单验证插件(vue-validate-easy)

    写一个vue表单验证插件(vue-validate-easy) 需求 目标:简单易用可扩展 如何简单 开发者要做的 写了一个表单,指定一个name,指定其验证规则. 调用提交表单方法,可以获取验证成功 ...

  10. Charles抓取https

    步骤一:将Charles的根证书(Charles Root Certificates)安装到Mac上. Help -> SSL Proxying -> Install Charles Ro ...