计算机组成原理(超详解!!) 第七节 中央处理器(下)

1.微程序控制器

微程序设计技术:利用软件方法来设计硬件的一门技术。

微程序控制器的基本思想:

仿照通常的解题程序的方法,把操作控制信号编成所谓的“微指令”,存放到一个只读存储器里。当机器运行时,一条又一条地读出这些微指令,从而产生全机所需要的各种操作控制信号,使相应部件执行所规定的操作。

基本思想:

1.若干微命令编制成一条微指令,控制实现一步操作;

2.若干微指令组成一段微程序,解释执行一条机器指令;

3.微程序事先存放在控制存储器CM(Control Memory)中,执行机器指令时再取出。

引入了程序技术,使设计规整;引入了存储逻辑,使功能易于扩展。

1.主要部件

(1)控制存储器CM

功能:存放微程序。

CM属于CPU,不属于主存储器。

(2)微指令寄存器 µIR

功能:存放现行微指令。

(3)微地址形成电路

功能:提供两类微地址。

微程序入口地址:由机器指令操作码形成。

后续微地址:由微地址字段、现行微地址、运行状态等形成。

2.工作过程

(1)取机器指令

(2)转微程序入口

(3)执行首条微指令

(4)取后续微指令

(5)执行后续微指令

同(3)

(6)返回

微程序执行完,返回CM(存放取指微指令的固定单元)。

2.微指令和微程序

微指令:在机器的一个CPU周期中,一组实现一定操作功能的微命令的组合。是CM中的一个单元的内容,即控制字。

注:微指令给出的控制信号都是节拍电位信号,它们的持续时间为一个CPU周期,有时根据实际电路需要,还要对某些微命令信号加入时间控制。

一条微指令由操作控制和顺序控制两大部分组成。

(1)操作控制部分,又称“微操作码字段”,用来发出管理和指挥全机工作的控制信号,其中每一位都表示一个微命令。

(2)顺序控制部分,又称“微地址码字段”,用来决定产生下一条微指令的地址;

微指令是控制存储器中的一个存储单元的内容,即控制字。

微程序:一条机器指令的功能是用许多条微指令组成的序列来实现的,这个微指令序列通常叫做微程序。 

微地址:微指令在控制存储器中的单元地址。 微指令在执行时同样也需要进行微指令寻址。而且在决定后继微指令地址时,需要判别测试标志位的配合。

机器指令-微程序-微指令-微命令

微程序控制器基本思想

1.若干微命令编制成一条微指令,控制实现一步操作;

2.若干微指令组成一段微程序,解释执行一条机器指令;

3.微程序事先存放在控制存储器CM(Control Memory)中,执行机器指令时再取出。

例:

根据下图所示,画出 “余3码十进制加法”指令的微程序控制流程图,并根据已知微指令格式,写出对应微指令。 余3码的十进制加法规则如下:两个一位十进制数的余3码相加,如结果无进位,则从和数中减去3(减0011):如果有进位,则和数中加上3(加0011),即得和数的余3码。 要求(1)加法机器指令的操作码为:1010。微指令中P1测试位为1时,表示下一条微指令的地址机器指令的操作码;(2)微指令中P2测试位为1时,根据Cy判断下一条微指令的地址。当Cy=0时,下一条微指令的地址为0001;当Cy=1时,下一条微指令的地址为1001。(3)当P1和P2同时为零时,本条微指令的直接地址位就给出下一条微指令的地址。(4)本题中已经直接将常数3放入R3中。(5)结果应该都放在R2中。

总结

微程序控制器的工作过程实质就是:在微程序控制器的控制下,计算机执行机器指令的过程。具体可分为:

(1)执行取指令的公操作    机器开始运行时,自动地将取指微程序的入口微地址送 入\muAR,并从\muCM中读出微指令,送往\muIR,当取指微程序执行完以后,从主存中取出的机器指令就已经存入IR中了。

(2)由机器指令的操作码字段OP通过“地址转移逻辑”产生出该机器指令所对应的微程序的入口微地址,并送入\muAR。

(3)从\muCM中逐条取出相应的微指令并执行之。

(4)执行完对应于一条机器指令的一段微程序之后,又回到取指微程序的入口地址,继续第(1)步,以完成取下一条机器指令的公操作。

3.微程序时序安排

为了保证整个机器控制信号的同步,可以将一个微指令周期时间设计得恰好和CPU周期时间相等。

CPU周期与微指令周期的关系

用统一微指令周期控制各条微指令执行

4.机器指令与微指令的关系

(1)一条机器指令对应一个微程序,此微程序是由若干条微指令序列组成的。

(2)指令、程序、地址对应于内存储器;微指令、微程序、微地址对应于控制存储器。

(3)一个CPU周期对应于一个微指令指令周期。方框图就是微程序流程图。

微程序——解释一条机器指令的微指令的集合。

微操作、微命令、微指令、微程序、机器指令

机器指令与微指令的关系

2.微程序设计技术

微程序设计:设计与各条机器指令相对应的微程序的过程。

微程序的关键:如何确定微指令的结构。

如何确定微指令的结构:

(1)有利于缩短微指令字长度;

(2)有利于减小控制存储器的容量;

(3)有利于提高微程序的执行速度;

(4)有利于对微指令的修改;

(5)有利于微程序设计的灵活性;

1.微命令的编码方法

编码有三种方法:直接表示法,编码表示法,混合表示法

1.直接表示法:操作控制字段中的各位分别可以直接控制计算机,不需要进行译码。

直接表示法举例,操作控制字段的每一个独立的二进制位代表一个微命令,该位为“1”表示这个微命令有效,为“0”表示这个微命令无效。

直接表示法特点: 这种方法结构简单,并行性强,操作速度快,但是微指令字太长,若微命令的总数为N个,则微指令字的操作控制字段就要有N位。 另外,在N个微命令中,有许多是互斥的,不允许并行操作,将它们安排在一条微指令中是毫无意义的,只会使信息的利用率下降。

2.编码表示法:将操作控制字段分为若干个小段,每段内采用最短编码法,段与段之间采用直接控制法。

编码表示法特点:可以避免互斥,使指令字大大缩短,但增加了译码电路,使微程序的执行速度减慢

3.混合编码法:将前两种结合在一起,兼顾两者特点。一个字段的某些编码不能独立地定义某些微命令,而需要与其他字段的编码来联合定义。

编码注意几点:字段编码法中操作控制字段并非是任意的,必须要遵循如下的原则:

①把互斥性的微命令分在同一段内,兼容性的微命令分在不同段内。这样不仅有助于提高信息的利用率,缩短微指令字长,而且有助于充分利用硬件所具有的并行性,加快执行的速度。

②应与数据通路结构相适应。

③每个小段中包含的信息位不能太多,否则将增加译码线路的复杂性和译码时间。

④一般每个小段还要留出一个状态,表示本字段不发出任何微命令。因此当某字段的长度为三位时,最多只能表示七个互斥的微命令,通常用000表示不操作。 下面举例说明

2.微指令地址的形成

入口地址:每条机器指令对应一段微程序,当公用的取指微程序从主存中取出机器指令之后,由机器指令的操作码字段指出各段微程序的入口地址,这是一种多分支(或多路转移)的情况。

后继微地址形成方法主要有两种:计数器的方式, 多路转移的方式

1.入口地址形成:如果机器指令操作码字段的位数和位置固定,可以直接使操作码与微程序入口地址的部分位相对应。

2.后继微地址形成方法

(1)计数器的方式

方法: 微程序顺序执行时,其后继微地址就是现行微地址加上一个增量(通常为1); 当微程序遇到转移或转子程序时,由微指令的转移地址段来形成转移微地址。 在微程序控制器中也有一个微程序计数器μPC,一般情况下都是将微地址寄存器μAR作为μPC

特点: 优点是简单、易于掌握,编制微程序容易 缺点是这种方式不能实现两路以上的并行微程序转移,因而不利于提高微程序的执行速度。

(2)多路转移的方式

根据条件转移如图

条件:状态条件/测试/微指令中微地址/操作码

3.微指令格式

微指令格式分为两类:水平型微指令和垂直型微指令

(1)水平型微指令

水平型微指令是指一次能定义并能并行执行多个微命令的微指令。

格式如下

水平型微指令特点:

优点: 微指令字较长,速度越快。 微指令中的微操作有高度的并行性。 微指令译码简单。 控制存储器的纵向容量小,灵活性强。

缺点: 微指令字比较长,明显地增加了控制存储器的横向容量。 水平微指令与机器指令差别很大,一般要熟悉机器结构、数据通路、时序系统以及指令执行过程的人才能进行微程序设计,这对用户来说是很困难的。

(2)垂直型微指令

采用编码方式。 微指令中设置微操作码字段,采用微操作码编译法,由微操作码规定微指令的功能,称为垂直型微指令。  

垂直型微指令的结构类似于机器指令的结构。它有操作码,在一条微指令中只有l-2个微操作命令,每条微指令的功能简单,因此,实现一条机器指令的微程序要比水平型微指令编写的微程序长得多 。它是采用较长的微程序结构去换取较短的微指令结构

下面举4条垂直型微指令的微指令格式加以说明。 设微指令字长为16位,做操作码3位。    

1)寄存器-寄存器传送型微指令

其功能是把源寄存器数据送目标寄存器 .13—15位为微操作码(下同),源寄存器和目标寄存器编址各 5位,可指定31个寄存器.

(2)运算控制型微指令

其功能是选择ALU的左、右两输入源信息,按ALU字段所指定的运算功能(8种操作)进行处理,并将结果送入暂存器中。左、右输入源编址可指定31种信息源之一。

(3)访问主存微指令

其功能是将主存中一个单元的信息送入寄存器或者将寄存器的数据送往主存。存储器编址是指按规定的寻址方式进行编址。第1,2位指定读操作或写操作(取其之一)。

(4)条件转移微指令  

其功能是根据测试对象的状态决定是转移到D所指定的微地址单元,还是顺序执行下一条微指令。9位D字段不足以表示一个完整的微地址,但可以用来替代现行μPC的低位地址。 测试条件字段有4位,可规定16种测试条件。

垂直型微指令的特点:

微指令字短,一般为10~20位左右。

微指令的并行微操作能力有限,一条微指令一般只包含一个微操作命令。

微指令译码比较复杂。全部微命令用一个微操作控制字段进行编码,微指令执行时需行完全译码。

设计用户只需注意微指令的功能,而对微命令及其选择、数据通路的结构则不用过多地考虑,因此,便于用户编制微程序。而且,编制的微程序规整、直观,便于实现设计的自动化。

垂直微指令字较短,使控制存储器的横向容量少。

用垂直微指令编制微程序要使用较多的微指令,微程序较长;要求控制存储器的纵向容量大。

垂直微指令产生微命令要经过译码,微程序执行速度慢。

不能充分利用数据通路具有多种并行操作能力

水平型微指令和垂直型微指令的比较:

(1)水平型微指令并行操作能力强,效率高,灵活性强,垂直型微指令则较差。

(2)水平型微指令执行一条指令的时间短,垂直型微指令执行时间长。

(3)由水平型微指令解释指令的微程序,有微指令字较长而微程序短的特点。垂直型微指令则相反。

(4)水平型微指令用户难以掌握,而垂直型微指令与指令比较相似,相对来说,比较容易掌握。

4.动态微程序设计

微程序设计分类:

(1)静态微程序设计:对应于一台计算机的指令系统只有一套微程序,该微程序设计好之后,一般无须改变而且也不便于改变。

(2)动态微程序设计:采用EPROM作为CM,可以通过改变微指令和微程序来改变机器的指令系统,因此可以在一台机器上实现不同类型的指令系统。   由于动态微程序设计技术要求对计算机结构和组成非常熟悉,所以这类微程序方案的改变一般只能由计算机设计人员完成。

3.流水 CPU

1.并行处理技术

并行性的两种含义:

1)同时性:两个以上事件在同一时刻发生;

2)并发性:两个以上事件在同一时间间隔内发生。

时间并行:时间重叠,让多个处理过程在时间上相互错开,轮流重叠地使用同一套硬件设备的各个部分,以加快硬件周转而赢得速度。

空间并行:资源重复,以“数量取胜”来提高计算机的处理速度。当前的空间并行主要体现在多CPU和多计算机系统,在单处理机系统中也得到广泛的应用。

时间+空间并行:时间重叠和资源重复的综合应用。

2.流水CPU的结构

1.流水计算机的系统组成

组成:指令部件、指令队列、执行部件。

程序和数据存放在主存中:主存采用多体交叉存储器,CPU与主存之间添加一个高速cache来弥补两者速度差异。

1)指令部件本身构成一个流水线:取指令、指令译码、计算操作数地址、取操作数等几个过程段组成;  

2)指令队列:一个FIFO的寄存器队列,用来存放经过译码的指令和取来的数据,也是一条流水线;

3)执行部件:具有多个算术逻辑运算部件,这些部件本身又用流水线方式构成,一般采用的实现方法:    

①将执行部件分为定点执行部件和浮点执行部件两个可并行执行部分,分别处理定点运算指令和浮点运算指令;    

②在浮点执行部件中,又有浮点加法部件和浮点乘/除部件,它们可同时执行不同的指令;    

③浮点运算部件都以流水线方式工作。

2.流水CPU的时空图

为了实现流水,首先把输入的任务分割为一系列子任务,并使各子任务在流水线的各个阶段并发地执行,当任务连续不断地输入流水线时,在流水线的输出端便连续不断地吐出执行结果,从而实现子任务级的并行性。

3.流水线的性能指标

1.吞吐率

吞吐率:在单位时间内流水线所完成的任务数量或输出结果的数量。

n:任务数

Tk:处理完成n个任务所用的时间

各段时间均相等的流水线各段时间均相等的流水线时空图

流水线完成n个连续任务所需要的总时间为: (假设一条k段线性流水线)

流水线的实际吞吐率

2.流水线的加速比

加速比:完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比。假设:不使用流水线(即顺序执行)所用的时间为Ts,使用流水线后所用的时间为Tk,则该流水线的加速比为:

流水线各段时间相等(都是△t)

一条k段流水线完成n个连续任务所需要的时间为:Tk = (k+n-1)Δt

顺序执行n个任务所需要的时间: Ts= nk△t    

流水线的实际加速比为:

例题:

指令流水线有取指(IF)、译码(ID)、执行(EX)、访存(MEM)、写会寄存器堆(WB)5个过程段,共有20条指令连续输入此流水线。 (1)画出流水线处理的时空图,假设时钟周期为100ns。 (2)求流水线的实际吞吐率(单位时间里执行完毕的指令数)。 (3)求流水线的加速比。

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-14 11:30:13       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-14 11:30:13       101 阅读
  3. 在Django里面运行非项目文件

    2024-05-14 11:30:13       82 阅读
  4. Python语言-面向对象

    2024-05-14 11:30:13       91 阅读

热门阅读

  1. Python3 笔记:分支结构

    2024-05-14 11:30:13       37 阅读
  2. spring基于XML的声明式事务控制

    2024-05-14 11:30:13       35 阅读
  3. catti三笔真题解读-英译汉(2012上)①

    2024-05-14 11:30:13       33 阅读
  4. 使用Django构建高效的Web应用

    2024-05-14 11:30:13       28 阅读
  5. C++算法——函数对象\谓词\内置仿函数

    2024-05-14 11:30:13       35 阅读
  6. chatGPT 凌晨发布会内容总结

    2024-05-14 11:30:13       29 阅读