CPU的结构与功能


CPU的结构

CPU的功能

1.控制器的功能

  • 取指令
  • 分析指令
  • 执行指令,发出各种操作命令
  • 控制程序输入及结果输出
  • 总线管理
  • 处理异常情况和特殊请求

2.运算器的功能

实现算数运算和逻辑运算

总结:

  • 指令控制
  • 操作控制
  • 时间控制
  • 处理中断
  • 数据加工

CPU的结构框图

  • CPU与系统总线

  • 指令控制:PC和IR

  • 操作控制和时间控制:CU和时序电路

  • 数据加工:ALU寄存器

  • 处理中断:中断系统

CPU的寄存器

用户可见的寄存器

  • 通用寄存器:存放操作数,可作某种寻址方式所需的专用寄存器
  • 数据寄存器:存放操作数(满足各种数据类型);两个寄存器拼接存放双倍字长数据
  • 地址据存起:存放地址,其位数应满足最大的地址范围,用于特殊的寻址方式(段基址、栈指针)
  • 条件码寄存器:存放条件码,可用作程序分支的依据

控制和状态寄存器

1.控制寄存器

用于控制CPU的操作,如:PC —>MAR—>M—>MDR—>IR,其中MAR、MDR、IR是用户不可见的,PC是用户可见的

可见:用户在编写程序的过程中可以利用的寄存器

不可见:用户在编写程序的过程中不可以利用的寄存器

2.状态寄存器

  • 状态寄存器:存放条件码
  • PSW(程序状态字)寄存器:存放程序状态字

程序状态字:在中断和程序调用的过程中,为了让程序能够正确的返回断点,返回断点后还能接着运行先前给定的程序,在运行中断服务程序和传递子程序之前,保存的程序的运行现场和断点包括程序运行的软硬件信息,这些信息由操作系统保存在寄存器中,有些表示程序运行状态的寄存器可以通过指令进行读写操作,有一些没法通过指令进行读写(状态太多,指令集中没有那么多的指令),为了完成程序运行现场和断点的保存,将程序运行状态相关的寄存器结合成一个大的寄存器,这个寄存器就叫程序状态字。程序状态字的长度比较长。

控制单元CU和中断系统

CU

功能:产生全部指令的微操作命令序列(先后顺序)

微操作命令序列的形成方法有两种:

  • 组合逻辑设计方法,为硬连线逻辑,这种方式速度快,比如RISC精简指令集技术
  • 微程序设计方法,为存储逻辑,这种方式适合实现复杂的功能

中断系统

参见“中断系统”

指令周期

基本概念

指令周期:取出并执行一条指令所需的全部时间。完成一条指令可以分为取指令、分析指令和执行指令三个阶段,其中取指和分析阶段可以合并,称为取指周期,执行阶段称为执行周期。

注意: 将指令周期分为取指周期和执行周期,这种分法只是一个例子,并不是所有的CPU都是这么分的,不同的CPU、不同的指令集、不同的设计方法可以把完成一条指令分为不同的阶段

由于各种指令的操作功能不同,因此各种指令的指令周期也是不同的。比如:

  • NOP指令为空操作,CPU不需要做任何操作,此时指令周期就只有取指周期
  • ADD加法指令,表示操作为ACC (ADD)mem—>ACC,指令周期的取指和执行阶段各访存一次,取指周期和执行周期时间相等
  • MUL乘法指令,其执行阶段所需要的时间要远多于取指阶段

具有间接寻址的指令周期

如果指令的寻址方式为间接寻址,可以将访存取出真实地址的过程提取出来作为一个单独的阶段,这样间接寻址的指令周期就包括取指周期、间址周期和执行周期,其中间址周期位于取指周期和执行周期之间。

带有中断周期的指令周期

如果在指令的执行周期发生了中断请求,CPU要对中断进行响应,中断的响应过程也可以单独的作为一个周期—中断周期,跟在执行周期之后。

指令周期的流程

在指令周期的四个阶段内,CPU一共访存4次,但每次访存的性质不同,取指周期进行1次访存,目的是取指令,间址周期访存1次,目的是取操作数的真实地址,执行周期访存1次,目的是存取操作数或结果,中断周期访存1次,目的是存程序断点。

指令周期的数据流

取指周期的数据流:

间址周期的数据流

执行周期的数据流:不同的指令在执行周期的操作不同,故没有同意的数据流

中断中期的数据流

指令流水

提高机器速度

1.提高访存速度

  • 高速芯片
  • Cache
  • 多体并行

2.提高I/O和主机间的传送速度

  • 中断方式
  • DMA方式
  • 通道
  • I/O处理机

3.提高运算器速度

  • 高速芯片
  • 改进算法
  • ALU中快速进位链

除了采用高速器件,还可以改进系统结构,开发系统的并行性。

程序的并行性

概念

并行包含同时性和并发性两个方面。并发是指两个或多个事件在同一时间段发生,同时是指两个或多个事件在同一时间发生。

要注意同时性和并发性的区别,这也是并行和并发的区别。

并发强调的是同一时间段,实际上在一个时钟周期内还是只有一个事件在发生,而并行强调的是同一时间,即在一个时钟周期内可以同时处理多个事件,有时间上的重叠。

因此,单核CPU一定是并发的,不可能并行,多核CPU才能并行工作。

并行的等级

并行性通常可分为四个等级:

  • 作业级或程序级
  • 任务级或进程级
  • 指令之间级
  • 指令内部级

前两级为粗粒度,又叫过程级,后两级为细粒度,又叫指令级。粗粒度一般用算法(软件)实现,细粒度一般用硬件实现。

从计算机体系上看:

  • 粗粒度并行性是在多个处理机场分别运行多个进程,由多台处理机合作完成一个程序
  • 细粒度并行性是指在处理机的操作级和指令级的并行性,其中指令的流水作业就是一项重要技术

指令流水的原理

指令的串行执行

在不使用流水技术的机器上,指令的执行是按顺序串行执行的,取指令和执行指令周而复始的重复出现。

但如果在设计计算机时,将取指令和执行指令的部件完全分开,取指令只需要取指令部件,执行指令时只需要执行指令部件,这样的话取指令时执行指令部件就是空闲的,执行指令时取指部件时空闲的,这样就可以使取下一条指令和执行当前指令的操作同时进行,这就是二级流水。

指令的二级流水

取指部件取出一条指令,将其暂存起来,如果执行部件空闲,就将保存的指令传给执行部件执行,指令部件又可以取出下一条指令暂存,称为指令预取。

当取指和执行阶段在时间上完全重叠的话,指令周期减半,速度提高1倍。

但实际上速度并不能提高一倍,原因如下:

  • 指令的执行时间一般大于取指时间,因此取指阶段要等待一段时间,指令部件缓冲区的指令无法立刻传给执行部件
  • 条件转移指令的影响:当遇到条件转移指令时,下一条指令时不可知的,只有等到上条指令执行结束,才能知道下条指令的地址,造成时间损失。可以采用分支预测的方式,比如猜测法

实际上还可以将指令的处理过程进一步细分为多个阶段,便能形成多级流水,进一步提高处理速度。

影响指令流水线性能的因素

结构冲突

不同指令争用同一功能部件产生资源冲突,比如取指令、取操作数和村结果都需要访存,但同一时间只能有一个访存,这就产生了冲突。

解决办法:

  • 停顿:冲突操作中让其中一个正常操作,另外的操作暂时停顿,往后推
  • 指令存储器和数据存储器分开
  • 使用指令预取技术,如在CPU中设置指令队列,将指令预先取到队列中排队,适用于访存周期短的情况,比如执行指令阶段,取数时间很短,执行指令阶段主存就会有空闲,此时就可以取下一条指令,放到指令队列中。

相关问题

相关问题是指程序的相近指令之间出现某种关联,是指令流水线出现停顿。比如下一条指令需要用到前一条(或几条)指令的结果时,必须等待前面的指令执行完毕才能执行。相关问题大体可分为数据相关和控制相关两类。

  • 数据相关:不同指令因重叠操作,可能改变操作数的读写访问次序,具体可分为写后读相关、读后写相关和写后写相关。可以通过后推法(暂停等待前面指令的结果)和采用旁路技术(在执行部件与指令部件之间设置直接传送数据的通路)解决此问题。
  • 控制相关:由转移指令引起

流水线的性能

1.吞吐率:单位时间内流水线完成指令或输出结果的数量

  • 最大吞吐率:流水线在理想状态下满负荷运转,没有发生资源冲突等问题
  • 实际吞吐率:一段时间内完成指令的条数除以所需要的的时间

2.加速比

采用流水线技术的指令处理速度与等功能的非流水线的速度的比值

3.效率

流水线中各功能段的利用率。

由于流水线有建立时间和排空时间,因此各功能段的设备不可能一直处于工作状态。因此,效率 = 流水线隔断处于工作时间的时空区 / 流水线中各段总的时空区。

流水线的多发技术

超标量技术

  • 每个时钟周期内并发多条独立指令,即多条指令同时进入流水线,要求配置多个功能部件

  • 不能调整指令的执行顺序,要通过编译优化技术,把可以并行执行的指令搭配起来

超流水技术

  • 在一个时钟周期内再分段,一个时钟周期内一个功能部件使用多次
  • 不能调整指令的执行顺序,靠编译程序解决优化问题

超长指令字技术

  • 由编译程序挖掘出指令间潜在的并行性,将多条能并行操作的指令组合成一条具有多个操作码字段的超长指令字(可达几百位)
  • 需要多个处理部件,每个操作码字段控制一个功能部件

相比于超标量技术,超长指令字技术有更高的并行处理能力,但对优化编译器的要求更高,对Cache的容量要求更大。

流水线结构

指令流水线结构

典型的指令执行过程可分为六个阶段,每段需要一个时钟周期,对应的流水线结构如图:

采用流水线技术,如果流水线不出现断流,1个时钟周期出现1个结果;不采用流水线技术,6个时钟周期出1个结果,理想状态下六级流水的速度是不采用流水技术的6倍。

运算流水线

完成浮点加减运算的流水线可分为对阶、位数求和和规格化三段

分段的原则:每段操作时间尽量一致


文章作者: likai
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 likai !
评论
 上一篇
中断系统 中断系统
计算机组成原理系列之十一
下一篇 
python数据结构之队列 python数据结构之队列
概念与栈相似,队列也是线性结构的一种,队列内部的数据也是有序的。与栈不同的,数据项的添加在队列的一端,称为“队尾”,数据项的删除在队列的另一端,称为“队首”。 每次添加数据在队尾,移除数据在队首,这种排序原则称为先进先出(FIFO),队列只
2020-07-25
  目录