408复习笔记——计算机组成原理(五):中央处理器(CPU)

408笔记系列(十三)(PS:本人使用的是王道四本书和王道视频)


前言

前面我们学习了计算机组成部件的存储器,以及存储在存储器中的指令集组成的指令集系统,接下来,我们将会顺着这些指令来到中央处理器CPU,CPU是如何组成的?CPU是如何工作的?指令在CPU中如何执行以及如何指导CPU实现各种功能的?


一、简介

中央处理器我们在第一章中也有介绍到,主要包含了控制器和运算器,而在运算器和控制器中又包含了各种寄存器;其实在第一章也有介绍到过这些寄存器,他们在运算器中分别为暂存寄存器、累加寄存器、通用寄存器组、程序状态字寄存器、移位器和计数器(大家应该还记得在提到Cache中替换算法LRU时的计数器,计数器的位数又与Cache中地址映射表中标志项的位数相等,一点联想);在控制器中的寄存器包括指令寄存器、程序计数器、指令译码器、MAR、MDR、时序系统(时序系统指的是用来产生各种定时信号以协调各部件工作)和微操作信号发生器;在这些寄存器中,有一部分寄存器是用户可见的,而又有一部分寄存器是用户不可见的,其中用户可见的寄存器主要有通用寄存器组、程序状态字寄存器和程序计数器等等,这个我们在第一章中也作为重点内容介绍过;

这里有一个寄存器的内容非常需要我们注意,经常会随着各种大题小题一起出现,就是我们的程序状态字寄存器(PSW),程序状态字寄存器我们在上一章中也有列出过相应的表格,大家需要高度重视这部分内容,这里对程序状态字寄存器做一些补充内容:在进位/借位标志位CF判断时,减法操作只需要判断借位标志;

关于这些寄存器的位数,其实在第一章已经做了介绍,并且结合存储字长、指令字长以及机器字长进行了分析,当时我们介绍程序计数器的位数时,提到程序计数器的位数是与计算机的存储容量有关,位数是与MAR的位数相等的,但是,我们需要注意的是,当题目要求程序计数器的位数最少时,我们需要关注指令字长且指令是否按边界对齐,如果满足条件,那么我们的最长位数应该是存储容量/指令字长,因为程序计数器中存储的都是计算机的指令地址;还有一点就是程序计数器中的地址并不都是转移指令指向的目标地址,这需要看转移指令的条件码是否满足

接下来,我们将继续学习计算机中央处理器是如何进行工作的;

二、主要内容

1.指令的执行过程

关于指令周期,这里需要我们首先了解几个关于时序系统的概念,时钟周期、机器周期、CPU周期、指令周期、存储周期和存取时间;这几个概念是非常容易混淆的,这里面有几个概念其实我们已经接触过了,像时钟周期、存储周期和存取时间;

  • 时钟周期很简单,这是我们在第一章介绍计算机的性能指标时提到的,简而言之就是主频的倒数,是CPU最小的时间单位了;
  • 存储周期和存取时间:这个是在存储器这一章中提到的,当时我们在看主存储器时,因为主要是由DRAM组成,而DRAM是由栅极电容作为存储单元组成的,因此每隔一段时间都需要进行刷新,所以存取时间后会有恢复周期,导致存储周期要大于存取周期,而存储周期往往指的是一次访存的周期;
  • 机器周期和CPU周期指的都是计算机的指令周期中的往往又一个或多个时钟周期组成,决定机器周期的主要是存储周期;
  • 指令周期指的是CPU从主存中取出并执行一条指令的时间,是由若干机器周期组成;

往往我们会将指令周期划分为取值周期、间址周期、执行周期和中断周期,当然并不是每条指令都包含这几个机器周期,这四个机器周期的访存目的各不相同,取指周期是为了取出指令,间址周期是为了取有效地址,执行周期是为了取操作数而中断周期则是为了保存程序断点;

CPU中指令的执行主要是通过CPU内部的数据通路实现的,数据通路主要分为三种类型:专用数据通路、内部总线数据通路和内部三总线数据通路;其中内部总线指的是CPU内部连接各寄存器之间的总线,而系统总线则指的是同一台计算机系统的各个部件之间互相连接的总线;这里值得注意的是,针对CPU内部单总线结构,我们会给运算器ALU添加暂存器,防止发生数据的冲突

CPU指令的执行往往是通过指令流水线的方式,为了让指令流水线发挥的效能最大,我们会将每个指令划分为取指令(IF)——指令译码(ID)——取操作数(OF)——执行(EX)——写回(WB)这样的五级流水,如下图所示:

在这里插入图片描述
流水线的每个功能段部件后面都有一个缓冲寄存器,或称之为锁存寄存器,其作用是保存本流水段的执行结果;有的时候我们需要注意治理可能会有对于锁存器的资源冲突;除了资源冲突,流水线中还包括以下两种冲突:数据冲突、控制冲突;

  1. 资源冲突:指的是多条指令争用同一硬件资源,比如我们刚刚提到的锁存器,当一条指令执行完取值(IF)和指令译码(ID)陷入了阻塞,那么他的下一条指令在执行完取值(IF)后无法立即进入指令译码(ID),因为指令译码(ID)至取操作数(OF)间的锁存器被上一条指令占用,便发生了资源冲突;解决方案也很直接,就是要么其他指令暂停一下,操作系统我们称之为阻塞,要么你就多增加点硬件资源;
  2. 数据冲突:当多条指令重叠处理时就会发生冲突,数据冲突可以划分为三类:1)写后读(RAW);2)读后写(WAR);3)写后写;按序流动的流水线只可能出现RAW相关;解决数据冲突时,可以通过硬件阻塞和软件插入NOP的方式让后续指令暂停一至几个时钟周期,或者在硬件上利用数据旁路技术设置相关的专用通路;
  3. 控制冲突:控制冲突往往是发生在有转移指令即会改变PC值的情况下,而造成断流现象,引起控制冲突;解决控制冲突可以对转移指令进行分支预测,也可以预取处转移成功和转移不成功两个指令,或者提前生成条件码(这里在我们的五级流水段中一般转移指令都会将PC值的改变从最后的写回提前至执行阶段或者访存阶段)

为了得到更高效的流水线,我们在原先介绍的普通流水线基础上进行了优化和升级为超标量流水线技术、超流水线技术和超长指令字技术;**这几种超流水线技术在考试中非常常见,需要我们高度重视;**如下图所示:
在这里插入图片描述

  1. 超标量流水线技术:超标量流水线指的是在一个周期内同时并发多条独立指令,以并行的操作方式将两条或两条以上的指令编译并执行;为了实现超标量流水线技术,我们需要更多的功能部件和指令译码电路,而编译程序决定哪几条相邻指令可并行执行;
  2. 超流水线技术:将一些流水线寄存器插入到流水线段中也就是将原先的时钟周期再进行分段,更像是一种套娃行为,靠编译程序解决优化问题;
  3. 超长指令字:将多条能够并行操作的指令组合成一条具有多个操作码字段的超长指令,与之后微程序控制方式中的水平型微指令相似;这使得指令变长,与此同时对于硬件的要求也提高了,指令寄存器、Cache等都需要进行扩容;

那么我们一般是如何对指令流水线进行评价呢?指令流水线又有那些性能指标呢?为了能够体现出指令流水线相比较于普通的顺序指令执行方式的优势所在,我们一般会用流水线的吞吐率、加速比以及流水线效率对指令流水线进行性能指标的评价;

其中吞吐率指的是单位时间内流水线完成的任务数量;加速比指的是不使用流水线所用的时间和使用流水线后所用时间的比值;流水线的效率指的是完成n个任务占用的时空区有效面积与n个任务所用时间及k个流水段所围成的时空区总面积之比;一般我们会用时空图对此进行计算;

最后我们需要注意的是:指令流水线技术属于一种时间并行技术,即资源重复,多个功能部件共同执行同一任务的不同部分;而空间并行技术指的是时间重叠,多个功能部件在时间上相互错开,轮流重叠执行不同任务的相同部分;

2. 控制器的结构和功能

上面我们介绍了指令的整个执行过程,这整个执行过程主要便是由控制器来实现,控制器作为计算机系统的指挥中心,控制器主要的功能是:

  1. 从主存中取出一条指令,并指出下一条指令在主存中位置;
  2. 对指令进行译码或测试,产生相应的操作控制信号,以便启动规定的动作;
  3. 指挥并控制CPU、主存、输入和输出设备之间的数据流动方向;

其实和上面我们提及的指令执行过程是十分一致的,那么你是否会比较困惑,一行指令是如何做到的呢?这些0101的数字组合在一起真的这么强大吗?其实这主要归功于我们的控制器;

控制器的设计分为两种,硬布线控制器和微程序控制器,因为硬布线式在考试中并不是是非常常见,因此我们主要了解一下内容即可:首先硬布线式是纯硬件实现的,所以他的功耗很低,而且执行速度很快,但是时序系统更为复杂,设计起来也十分复杂,一般会使用于RISC指令集;

微程序控制器属于考试考察的重点知识了,首先让我们理清楚一句话:程序由一系列机器指令组成,机器指令又是由微程序描述,微程序中包含着微指令,而一条微指令中往往包含着一个或数个微命令;这句话很绕,但是非常重要,是我们微程序设计思想中的重要组成;

程序由一系列机器指令组成,这个在第一章我们介绍解释程序和编译程序时候就知道了,而且我们知道计算机只能执行机器指令;那么下一句机器指令是由微程序描述,有没有看到?微程序!!!这就需要提到微程序控制器了,微程序控制器其实就是对冯诺依曼体系在控制器内部的套娃,如下图所示。便是微程序控制器的内部结构,微程序控制器把信号代码化,使每条机器指令转化为一段微程序并存入控制存储器中,微操作控制信号由微指令产生;所以我们呢说机器指令是由微程序描述,而不是说机器指令是由微指令描述,因为正如程序和机器指令的关系一般,微程序和微指令也是这样的关系,而微程序是控制器将一条机器指令固定为一段微程序提前存放在了控制存储器中;
在这里插入图片描述
最后微指令中往往包含一个或多个微命令,这其实是与微指令的格式决定的,微指令的格式分为水平型微指令和垂直型微指令以及混合型微指令,而我们常用到的便是水平型微指令,比较相似的便是指令系统中的定长扩展码了,一条指令中可以有好几个操作码;如图所示,水平型微指令分别由操作控制,判断测试字段和后继地址字段组成,而操作控制的位数决定该微指令中包含了多少微命令;在这里插入图片描述
但是在编码时是需要注意微命令是否相容或者是否互斥的,据此我们将微命令分为相容性微命令和互斥性微命令;相容性微命令指的是那么可以同时产生、同时完成某些微操作的微命令,互斥性微命令指的是机器中不允许同时出现的微命令;直接编码方式要求微指令操作字段有多少位便有多少个微命令;字段直接编码指的是通过译码电路后再发出微命令,从而缩短微指令,来减少控制存储器的容量,微命令分段需要遵守以下几个原则:

  1. 互斥微命令分在同一段,相容性微命令分在不同段内;
  2. 每个小段中包含的信息位不能太多,否则将增加译码线路的复杂性和译码时间
  3. 每一个小段都需要留出一个状态,表示本字段未发出命令;

因为不论任何指令的第一步都是取值译码,因此控制存储器中会默认已经包含了这一段微程序,当提及指令系统中具有n种机器指令时,控制存储器中微程序至少为n+1

这里放上一张微程序控制器和硬布线控制器的对比图:
在这里插入图片描述
至此便将中央处理器的考点整体过了一遍;


三、常见题型和易错题

指令系统答案:B、D、C、C、C、A、B、D
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
答案见下一章!!!(PS:每一章都很多,没法全面,只能挑重点的写了)

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值