计组笔记_chapter5

计组笔记_chapter5

五月 09, 2022

处理器的功能

  1. 指令控制
  2. 操作控制
  3. 时间控制
  4. 数据加工
  5. 中断处理

CPU=控制器+运算器+一堆寄存器

控制器
组成
主要功能

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

运算器
组成:ALU,累加寄存器,数据缓冲寄存器DR,状态条件寄存器PSW
主要功能:

  • 执行所有的算数和逻辑运算
  • 并进行逻辑测试,如零值测试或两个值的比较

CPU中的主要寄存器(6种)

  • 数据缓冲寄存器DR
    用来暂时存放:
    1. 向数据cache写入一个数据时,用DR暂存
    2. ALU计算结果
      作用
    3. 作为ALU运算结果和通用寄存器之间信息传送中时间上的缓冲
    4. 补偿CPU和内存、外设之间在操作速度上的差别
  • 指令寄存器IR(控制器内部)
    用来保存当前正在执行的一条指令
    指令寄存器中操作码字段的输出就是指令译码器的输入
    操作码经过译码器译码之后,。。。
  • 程序计数器PC(控制器内部)
    也称指令计数器,来确定下一条指令的地址
    在程序开始执行之前,将程序的第一条指令所在的内存单元送入PC
    执行完之后会自加
  • 地址寄存器AR
    用来保存当前处理器所访问的数据cache
  • 通用寄存器R0~R3(一般举例子说是4个)
    在ALU执行运算时,为其提供一个暂存数据的工作区
    累加寄存器暂时存放ALU计算结果
  • 状态条件寄存器PSW(ALU内部)
    保存进位标志C,溢出标志O,是否为0Z,结果为负N等等
    就是存汇编语言中标志位的那个。

操作控制器和时序产生器

数据通路

操作控制器

功能:

根据设计方法的不同分类:

  • 时序逻辑型 硬布线控制器(RISC也是)
  • 存储逻辑性 微程序控制器(CISC也是)

时序产生器

指令周期

基本概念

  • 指令周期:取指令、分析指令、执行指令的time
    由于各种指令的操作功能不同,各种指令的指令周期长度是不同的。
    指令周期通常包含若干个CPU周期
  • CPU周期,也称机器周期
    内存中读取一个指令字的最短time
    可以分成若干个时钟周期
  • 时钟周期
    处理操作的最基本的单位,也成为节拍脉冲/T周期

时钟周期是最基本的周期单位
如图
z
↑图中,分析指令过程被包含在执行指令过程中。时钟周期是最小单位,若干时钟周期组成CPU周期,若干CPU周期组成指令周期。

程序示例
ex

Intel 汇编语言的指令与 AT&T 的指令操作数的方向上正好相反:在 Intel 语法中,第一个操作数是目的操作数,第二个操作数源操作数。而在 AT&T 中,第一个数是源操作数,第二个数是目的操作数。
这个程序示例里面是AT&T

STO为写数指令

凡是RR型指令,都是2个CPU周期,RS型指令,都是3个COU周期。
每条指令的取指令阶段都是一样的,花费一个CPU周期,具体步骤是

  1. 根据PC的之(将要执行的指令的地址)从内存中取出指令,送到IR
  2. 取完之后PC就++
  3. 分离操作码和操作数,对指令进行译码

RS型指令多一个CPU周期的原因是需要送操作数地址。
特别的,JMP指令是无条件的转移指令,相当于是把某个立即数送到寄存器PC,并没有访问memory,所以还是2周期。

最后,检查有无中断的操作也是每条指令都要进行的操作。

方框图

  • 方框:代表一个CPU周期,方框中的内容表示数据通路的操作或某种控制操作
  • 菱形:通常用来表示某种判别或测试,在时间上依附于紧接它的前面一个方框的CPU周期,不单独占用一个CPU周期
    五条典型指令的周期方框图

例子

例子1
例子2

答案
(1):
1

(2):
2

指令周期参考信号图

图

STO指令:
sto

5.3时序产生器和控制方式

基本概念

时序 Timing

计算机以时序信号为基准完成协调动作

控制器分类:

  • 硬布线控制器
    时序信号一般采用主状态周期-节拍电位-节拍脉冲三级体制。节拍电位的时间=CPU周期的时间
  • 微程序控制器
    时序信号比较简单。一般采用节拍电位-节拍脉冲二级体制

微程序控制器中时序信号产生器的组成:

  • 时钟源
  • 环形脉冲发生器
  • 节拍脉冲和读/写时序的译码
  • 启停控制逻辑

框图:
kt

时钟源
环形脉冲发生器
  • 产生一组有序的间隔相等或不等的脉冲序列,以便通过译码电路来产生最后所需的节拍脉冲
  • 为了在节拍脉冲上不带干扰毛刺,环形脉冲发生器通常采用循环移位寄存器形式
节拍脉冲和读写时序的译码

译码逻辑:
一种环形脉冲发生器:
图

关于D触发器:左边的SD端是清零端,右边的RD端是预置端(置1)()二者都是低电平有效。
分析得,上图的电路状态是一个循环。
C1,C2,C3–>000->100->110->111->000

t1-t4

节拍电位与节拍脉冲时序关系图
y

启停控制逻辑

启停控制逻辑
u机器一旦接通电源,就会自动产生原始的节拍脉冲信号T1°-T4°。但只有发出启动信号后,才允许时序产生器发出CPU工作所需的完整节拍脉冲

启动信号保证产生完整的CPU周期信号

启停控制逻辑

电路图
当触发器Cr的Q端为“1”时,原始节拍脉冲和读写信号通过门电路发送出去,变成CPU真正需要的节拍脉冲信号和读写时序,反之,就关闭时序产生器.
T4信号取反做时钟信号的原因:
保证时序信号以T1,T2,T3,T4的顺序输出。

控制方式

同步控制方式

Def:在任何情况下,各指令在执行时所需的机器周期数和时钟周期数是固定的

实现方案:

  1. 采用完全统一的机器周期执行不同的指令。简单指令会导致时间浪费
  2. 采用不定长机器周期,复杂指令采取延长机器周期的方法
  3. 中央控制与局部控制结合,上面俩结合
异步控制方式
  1. 每条指令,操作按需占用时间
  2. 不采用统一的时序信号,而是根据指令或者部件的具体情况而定。“应答”方式,没有时间上的浪费,但控制比较复杂.
联合控制方式

同步和异步相结合

  1. 大部分操作序列安排在固定的机器周期中,对某些时间难以确定的操作则采用“应答”信号作为本次操作的结束
  2. 机器周期的节拍脉冲数是固定的,但是各条指令的机器周期数不固定

微程序控制器

微程序设计技术是利用软件方法设计硬件的一门技术
微程序控制器与硬布线控制器相比较,具有规整性、灵活性、可维护性等一系列优点

基本思想

  • 用多条微指令(即:一个微程序)解释每条指令的执行过程。全部的微程序有机地组合在一起,存储在控制存储器(只读存储器)中。
  • 当机器运行时,一条一条地读出这些微指令,从而产生全机所需要的各种操作控制信号,使相应的部件执行特定的操作

微命令和微操作

计算机的构成

  • 控制部件–控制器
  • 执行部件–运算器、存储器、外围设备

微命令-控制部件通过控制线向执行部件发出各种控制命令(即:控制信号
微操作-执行部件接受微命令后所进行的特定操作

反馈信息
通常执行部件使用反馈线向控制部件报告操作情况,控制部件则根据执行部件的“状态”发出新的微命令。

分类:

  • 相容性操作:同时或在同一个CPU周期内可以并行执行的微操作
  • 相斥性操作:不能同时或不能在同一个CPU周期内并行执行的微操作

微指令

  • 在机器的一个CPU周期中,一组实现一定操作功能的微命令的组合,构成一条微指令
    或者说
  • 用一条微指令对应一条机器指令的一个执行步骤
  • 微指令需要具备的2个功能
    • 供一条机器指令的一个执行步骤所需要的控制信号,以实现该执行步骤的操作功能
    • 提供读出下一条待用微指令的地址,以便自动有序地读出每一条微指令,解决机器指令执行步骤之间的正确的接续关系
微指令基本格式

tu

微程序控制器

  • 控制存储器
  • 微指令寄存器
    • 微地址寄存器
    • 微命令寄存器
  • 地址转移逻辑

原理框图:
tu

微程序的特点

  • 一条机器指令是若干条微指令组成的序列来实现的

  • 一条机器指令对应着一段微程序,而微程序的总和便可实现整个的指令系统

  • 微程序设计可以很容易地在不同的微体系结构上实现相同的

  • 以十进制加法指令操作码为地址,去查微地址映射部件得到微程序在控制存储器中的地址,就可以调出所需要的微程序(如上图中微程序地址为1010)

  • 微地址映射部件是用ROM实现的,地址输入为指令寄存器IR的操作码,输出为该指令对应的微程序段的入口地址

微程序举例

微程序举例,十进制BCD码加法

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

微指令周期 = 读出微指令的时间 + 执行该条微指令的时间

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

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

机器指令与微指令的关系

关系

5.4微程序设计技术

微命令编码

微指令操作控制字段的微命令表示方法可分为3类

  • 直接表示法:操作控制字段中的每一位代表一个微命令
  • 直接编码表示法:
    把一组相斥性的微命令信号组成一个小组(即一个字段) ,然后通过小组(字段)译码器对每一个微命令信号进行译码 ,译码输出作为操作控制信号

    编码表示法使微指令字的长度大大缩短。但由于增加译码电路,微程序的执行速度稍稍减慢编码表示法使用较

  • 混合表示法:见图
    ru

在微指令中还可附设一个常数字段

  • 可作为操作数送入ALU运算
  • 也可作为计数器初值用来控制微程序循环次数

微地址的形成方法

产生后继微地址的方法

  • 计数器方式(类似PC)
  • 多路转移方式(跳转)
    • 当微程序不产生分支时,后继微地址直接由微指令的顺序控制字段给出
    • 当微程序出现分支时,有若干“候选”微地址可供选择:即按顺序控制字段P的“判别测试”和“状态条件”标志来选择其中一个微地址
    • “状态条件”有n位标志,可实现微程序2n路转移,且涉及微地址寄存器的n位
  • 由指令的操作码转换得到,典型方式为查表方式

例子

微指令格式

  • 水平型微指令
  • 竖直型微指令

简单说,水平行比较长,上面那三种译码方式都是针对水平指令的,一次能定义并执行多个并行操作微命令。效率高,灵活性强,但基本别想凭肉眼看懂,因为每一位代表一个操作,然后每条指令就是微操作的组合(位的组合),然后最后写出来的微程序比较短,整体是个躺着的长方形(不恰当的比喻)。

竖直型指令就有点像经常见的指令了,有操作码,有源地址和目的地址。
每条指令完成的功能比较简单,所以最后写出来的微程序比较长,整体看就是个竖着的长方形。特别的,竖直型指令虽然完成的功能简单,这玩意儿执行时间还长。

5.5硬连线控制器

基本概念:
j

硬连线控制器原理框图:
图

写出以下控制信号的逻辑表达式:
例子:
例子

另一个举例:
这里需要注意的是T信号的划分:
一般一个微操作分配一个时钟周期,读写内存分配两个时钟周期
例子

5.6流水CPU

流水方式CPU:指令部件、指令队列、执行部件

  • 指令部件
  • 指令队列:FIFO寄存器栈
  • 执行部件:可以有多个采用流水线方式构成的算术逻辑部件构成,可以将定点运算部件和浮点运算部件分开

几个缩写的含义:

  • IF(Instruction Fetch取指)
  • ID(Instruction Decode指令译码)
  • EX(Execution执行)
  • WB(Write Back写回

4级指令流水线
4

几个概念:

线性流水线的时钟周期

$$
\tau=\max {\tau_i}+\tau_1=\tau+m+\tau_1;
$$