首页 > 其他分享 >软考笔记(9)--计算机组成原理3--处理器

软考笔记(9)--计算机组成原理3--处理器

时间:2023-04-06 21:24:08浏览次数:37  
标签:控制 控制器 -- 软考 指令 处理器 信号 执行 CPU

一、CPU的整体结构

CPU是由控制器和运算器两大部分组成,控制器是整个系统的指挥中心,在控制器的控制之下,运算器、存储器和输入输出设备等部件构成了一个整体。

1.1、CPU的功能

计算机的工作过程就是计算机中程序的执行过程,首先将程序和原始数据预先通过输入设备送到主存储器中存储起来,执行时计算机按顺序逐条取出指令、分析指令、执行指令并自动转入下条指令。计算机一条一条地执行指令,实现预先设计的程序控制,直到程序规定的任务完成。

1、程序控制

程序是指令的有序集合,指令的相互顺序不能任意交换,必须严格按照程序规定的顺序执行,CPU程序控制的任务就是保证程序是按一定顺序的执行程序。

2、操作控制

一条指令的功能往往由若干个操作信号的组合实现,所以CPU管理并产生每条指令的操作信号,把操作信号送往相应部件,从而控制这些部件按指令的要求进行操作。

3、时间控制

时间控制是对各种操作实施时间上进行控制,一方面是各种指令的操作信号均受到时间的严格控制,另一方面是一条指令的整个执行过程也受到时间的严格控制。

4、数据加工

数据加工是对数据进行算术运算、逻辑运算或进行数据传递处理,数据加工主要由运算器完成。

 

控制器的基本功能是负责指令的读出、识别和解释,并指挥协调各功能部件执行指令。

控制器的逻辑结构主要有三种组织方法:硬布线控制逻辑法(组合逻辑法)、可编程逻辑阵列法(PLA法)、微程序控制逻辑法

1.2、CPU的组成

1、指令部件

程序计数器(PC)

程序计数器用来指出在内存中存放指令的单元地址,标识当前指令在主存储器中的单元地址。程序执行之前将程序的首地址存入PC,当执行指令时,CPU能自动修改PC的内容。

由于程序大部是顺序执行且指令是顺序存放的,所以将PC中的内存送到主存的地址寄存器(MAR)去读取指令后,PC的内容会自动递增,为取下一条指令做好准备。

指令寄存器(IR)

指令寄存器存放当前指令的代码,在执行任何一条指令时,根据当前PC的指向,先将指令从内存中取到内存数据寄存器中,然后再传到指令寄存器。

指令译码器(ID)

指令译码器对来自指令寄存器对操作码部分OC进行译码,也叫做操作码译码器,用来产生操作性质的控制电位,并将其送到微操作控制线路上,在时序部件定时信号作用下,产生具体的控制操作信号。

程序状态寄存器(PSW)

程序状态字用来表示当前运算的状态及程序的工作方式,存放这些状态字的寄存器称为程序状态寄存器(PSW),不同机器的PSW包含的内容各不相同。

地址形成部件

地址形成部件是根据寻址方式不同,用来形成操作数有效地址的功能部件,控制器中有专门的地址形成逻辑,通过运算器来计算有效地址。

地址寄存器(AR)

地址寄存器用来保存CPU当前所访问的内存单元的地址,由于在CPU和内存之间存在操作速度的差异,所以必须使用地址寄存器来保存内存的地址信息,直到内存存取操作完成为止。

累计寄存器(AC)

累加寄存器通常简称累加器,当运算器ALU执行算术运算或逻辑运算时,它为ALU提供一个工作区,用来暂存一个操作数或运算结果,当运算器中只有一个累加器时称为单累加器结构,否则称为多累加器结构。

数据缓冲寄存器(DR)

数据缓冲寄存器主要作为CPU和主存、外设之间信息传输的中转站,用以补偿CPU和主存、外设之间操作速度上的差异,另外在单累加器结构中,缓冲寄存器也可以兼作操作数寄存器使用。

2、时序部件

时序部件用来产生各种部件所需的定时控制信号的部件,时序信号一般由工作周期、工作节拍及工作时标脉冲三级时序信号构成

3、微操作控制逻辑

微操作是计算机中最基本操作,微操作控制逻辑用来产生机器所需的全部微操作信号。作用是把操作码译码输出的控制电位、时序信号以及各种控制条件进行组合,按一定顺序产生并发出一系列微操作控制信号,以完成指令规定的全部操作。

4、中断控制逻辑

中断控制逻辑用来控制中断处理的硬件逻辑,响应各种部件或设备发出的错误中断请求,控制器响应中断请求并进行处理。

CPU的各个寄存器之间传输信息的通路称为数据通路,主要由操作控制器完成。操作控制器的功能就是根据指令操作码和时序信号,产生各种操作控制信号,以便正确建立数据通路,完成取指令和执行指令的控制。

二、指令的执行

计算机能够自动工作是因为CPU能从存放程序的内存中取出一条一条指令并执行,CPU是不断的取出指令、解析指令并执行指令,是一个不断循环的过程。

指令周期:CPU完成一个取出指令、解析指令并最终执行指令的过程称为一个指令周期

CPU周期:也叫机器周期,指令周期中涉及取指令、解析指令和执行指令,每一个步骤就是一个CPU周期,不过由于解析指令和执行指令很快,而从内存中读取指令比较慢,所以一个CPU周期通常就是一个从内存取指令的时长。

时钟周期:也叫做主频或节拍脉冲,是CPU处理操作的基本单位,一个时钟周期就是一个脉冲逻辑0状态与逻辑1状态来回切换一次的时间,基本上上纳秒级别。

一个指令周期至少包含两个及以上的CPU周期,一个CPU周期包含了多个时钟周期

 

CPU执行指令的过程如下:

1、读取指令

读取指令阶段是将现行指令从主存中取到指令寄存器IR的过程,步骤如下:

1.1、将PC中的内存发送到存储器的地址存储器MAR,并对存储器发出控制读命令;

1.2、利用指令尚未读出的时间,控制器将PC的内存递增,为取下一条指令做好准备;

1.3、在存储器中进行读操作,将MAR所指定的地址单元的内存读出,送到数据寄存器MDR中,并发出MFC信号通知控制器,表示存储器的读操作功能已完成;

1.4、把存放在MDR中的指令代码送到指令寄存器IR中,随后指令译码器对操作码字段OC进行译码

2、解析指令

取出指令后立即进行分析阶段,指令译码器识别和区分不同的指令类型及各种获取操作数的方法,得到指令类型和操作数

3、执行指令

根据指令类型具体实现指令的功能,需要有各种控制信号在不同时刻来执行各个最基本的控制操作,单靠一个是不可能完成指令所要求的功能,需要将多个各种控制编排成有序的序列。

三、控制器的逻辑结构

3.1、微程序控制器

微程序控制器是用程序设计的思想方法来组织操作控制逻辑。将微操作控制信号按一定规则进行信息编码,形成控制字。一条机器指令的执行过程就是对若干控制字进行程序设计,一条指令对应一道程序,此程序存放在专门存储器中,存放微程序的存储器称为控制存储器(CM),简称为控存。

微程序控制方式中,一条机器指令的执行过程就是其微程序的执行过程,类似于一般程序的执行,控制器中需要增设一个微指令计数器。

3.2、硬布线控制器

硬布线控制器是早期设计计算机的方法,把控制部件看作是产生专门固定时序控制信号的逻辑电路,此逻辑电路以使用最少元件和取得最高操作速度作为设计目的。一旦控制部件构成后,除非重新设计和物理上对它重新连线,否则想要增加新的控制功能是无法实现的。

当执行不同的机器指令后,通过激活一系列不相同的控制信号来实现对指令的解释。

3.3、门阵列(PLA)控制器

PLA控制器又称为可编程逻辑阵列,实际上是由一个与阵列和一个或阵列组成,具有与、或、非的逻辑控制都可以由PLA结构实现。PLA实现微操作信号时,把操作码、时序信号和状态条件作为PLA的输入,按一定的与、或关系编排后,其输出便是微操作控制信号。

PLA控制器也是一种组合逻辑控制器,但是与常规的硬线组合控制器不同的是它是可编程的,不需要把一系列门电路和触发器状态靠硬连线来实现。

标签:控制,控制器,--,软考,指令,处理器,信号,执行,CPU
From: https://www.cnblogs.com/jackion5/p/17294222.html

相关文章

  • myBatis-分页
    1.前言MyBatis,作为目前流行的ORM框架,大大方便了日常开发。而对于分页查询,虽然可以通过SQL的limit语句实现,但是比较繁琐。1.1.Limit方式以前的分页查询,拼接sql语句:BookMapper.java接口://根据limit语句拼接,进行相应的分页List<Book>selectBySQL(@Param("start")intst......
  • 题目 1028: [编程入门]自定义函数求一元二次方程
    题目描述求方程的根,用三个函数分别求当b^2-4ac大于0、等于0、和小于0时的根,并输出结果。从主函数输入a、b、c的值。输入格式abc输出格式x1=?x2=?样例输入复制411样例输出复制x1=-0.125+0.484ix2=-0.125-0.484i解题思路:一元二次方程只含有......
  • T4 运行时模板引擎
    之前的文章都介绍的是通过保存的方式来使用T4,或者是通过VS下的TextTransform.exe文件来编译T4(还需要考虑传参长度等各种问题)T4模板引擎参数调用;这些方法都比较繁琐,可以适用在不同的使用场景下,本文介绍一下运行时的T4模板运行时T4只需要在创建时候选择为运行时模板即可,和之前......
  • day04-SpringCloud Eureka-服务注册与发现01
    SpringCloudEureka-服务注册与发现011.Eureka介绍1.1学习Eureka前的说明目前主流的服务注册&发现的组件是Nacos,但是Eureka作为老牌经典的服务注册&发现技术还是有必要学习一下,原因:(1)一些早期的分布式微服务项目使用的是Eureka,在工作中完全有可能遇到这种情况。(2)后期的服......
  • dolphinscheduler-3.1.5部署踩坑
    sudoyum-yinstallpsmisc##部署用户设置echo'user_nameALL=(ALL)NOPASSWD:NOPASSWD:ALL'>>/etc/sudoerssed-i's/Defaultsrequirett/#Defaultsrequirett/g'/etc/sudoers##免密登录配置ssh-keygen-trsa-P''-f~/.......
  • P8712 [蓝桥杯 2020 省 B1] 整数拼接
    P8712[蓝桥杯2020省B1]整数拼接https://www.luogu.com.cn/problem/P8712这题想多了一步。。不需要求逆元,因为最多9位数,所以直接\(O(10n)\)记录乘积的模值注意不能用map#include<bits/stdc++.h>#definelllonglongusingnamespacestd;constintN=1e5+5;ll......
  • 题目 1025: [编程入门]数组插入处理
    题目描述已有一个已正序排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中。输入格式第一行,原始数列。第二行,需要插入的数字。输出格式排序后的数列样例输入178172324596210150样例输出178172324505962101......
  • Linux diff 命令
    Linuxdiff命令Linuxdiff命令用于比较文件的差异。diff以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录。语法diff[-abBcdefHilnNpPqrstTuvwy][-<行数>][-C<行数>][-D<巨集名称>][-I<字符或字符串>]......
  • Linux diffstat命令
    Linuxdiffstat命令Linuxdiffstat命令根据diff的比较结果,显示统计数字。diffstat读取diff的输出结果,然后统计各文件的插入,删除,修改等差异计量。语法diff[-wV][-n<文件名长度>][-p<文件名长度>]参数:-n<文件名长度>指定文件名长度,指定的长度必须大于或等于所有文件中......
  • Spring Cache使用方式——不用默认,使用redis进行缓存
    在SpringBoot项目中使用SpringCache的操作步骤(使用redis缓存技术)1、导入Maven坐标spring-boot-starter-data-redis、sping-boot-starter-cache2、配置application.ymlspring:cache:redis:time-to-live:1800000#设置缓存......