csapp第九章-控制单元的功能

Posted by serrini on March 29, 2021

第九章 控制单元的功能

执行周期

  • 非访存指令
    • 清除累加器指令CLA
    • 累加器取反指令COM
    • 算术右移一位指令SHR
      • L(ACC)->R(ACC), ACC0->ACC0
    • 循环左移一位指令
      • R(ACC)->L(ACC)
    • 停机指令STP
      • 0->G 停机,G=1是机器运行

非访存指令

  • 访存指令
    • ADD X 加法
    • STA X 存数指令
    • LDA X 取数指令

p377 Attention!

  • 转移类指令
    • JMP X
      • 无条件转移指令
      • 执行阶段完成将指令的地址码部分X送到PC的操作
      • Ad(IR)->PC
    • BAN X
      • 条件转移(负则转)指令
      • 根据上一条指令结果决定下一条指令的地址,若负(累加器最高位为1,A0=1)则指令的地址码送到PC
      • 取指阶段完成了(PC)+1->PC,A0=0时,就按取指阶段形成的PC执行
      • A0*Ad(IR) + A0取反*(PC) -> PC

中断周期

中断隐指令自动完成保护断点、寻找中断服务入口地址以及硬件关中断的操作 step6 1、向特定地址0送到存储器地址寄存器,0->MAR 2、向主存发写命令,1->W 3、将PC内容(程序断点)送到MDR,PC->MDR 4、将MDR内容(程序断点)通过数据总线写入MAR所指示的主存单元(0地址单元)中,MDR->M(MAR) 反过来是取指数据流:M(MAR) -> MDR,把MAR所指主存中内容经数据总线进入MDR 5、向量地址->PC,为下一条指令周期作准备 6、关中断,将允许中断触发器清0,0->EINT 注: 如果程序断点存入堆栈,只需第一步改成SP->MAR

9.2 控制信号

1、不采用CPU内部总线的方式

2、采用CPU内部总线的方式

ADD @X为例

取指周期

操作 备注
PC->MAR PC经过内部总线送到MAR
1->R 通过控制总线向主存发出读命令
M(MAR)->MDR 存储器通过数据总线把MAR所指示的内容送到MDR
MDR->IR 指令送到IR,其操作码字段开始控制CU
OP(IR)->CU 指令的操作码送到CU译码
PC+1->PC PC加一

间址周期

MDR->MAR 指令的形式地址经过内部总线送到MAR 1->R 通过控制总线向主存发出读命令 M(MAR)->MDR 存储器通过数据总线将MAR所指示的内容(操作数)送到MDR MDR->Ad(IR) 将MDR中有效地址送到IR的地址码字段

操作 备注
Ad(IR)->MAR 将IR中地址码送到MAR
1->R 让存储器读
M(MAR)->MDR 将有效地址读出到MDR

执行周期

MDRo->MARi MDR o和MAR i有效,将有效地址经内部总线送至MAR 1->R 通过控制总线向主存发出读命令 M(MAR)->MDR 存储器通过数据总线把MAR所指示的内容(操作数)送到MDR MDR->Y MDR o和Y i有效,将操作数送到Y (AC)+(Y)->Z AC o和ALU i有效,同时CU向ALU发ADD加控制信号,使AC内容与Y内容相加,送到寄存器Z Z->AC Z o和AC i有效,把运算结果存到AC

9.2.3 多级时序系统

机器周期

访存时间作为基准时间,即机器周期 在存储字长等于指令字长的前提下,取指周期也可以看做机器周期

时钟周期(节拍、状态)

多级时序系统

9.2.4 控制方式

同步控制

采用完全统一的机器周期和节拍 对微操作序列较短的指令,会造成时间上的浪费 采用不同节拍的机器周期 每个机器周期内的节拍数(时钟周期)可以不等 可以解决微操作执行时间不统一的问题,复杂的操作可以延长机器周期或者增加节拍 采用中央控制和局部控制相结合的方法 大部分指令在统一的、较短的机器周期内完成,中央控制 少数操作复杂的,局部控制(乘除法和浮点运算) 中央控制节拍T0T1T2T3T0T1T2,局部控制节拍T* T*宽度和T0123一样 局部控制作为中央控制的延续,穿插 T*的个数不能事先确定

异步控制

时序由专门的应答线路控制,结构比同步复杂

联合控制

同步和异步结合 大部分相同指令用同步,时间难以确定的微操作如IO,则异步

人工控制

reset 连续或单条执行转换开关 符合停机开关

控制器的功能与工作原理

异常和中断机制

CPU内部-异常,CPU外部-中断

分类

  • 异常的分类
    • 故障fault
    • 自陷trap
      • 故障fault和自陷trap属于程序性异常
    • 终止abort
      • 终止异常和外中断属于硬件中断
  • 中断的分类
    • 可屏蔽中断
    • 不可屏蔽中断

多处理器

SISD、SIMD、MISD、MIMD

  • SISD
    • 传统的串行体系,仅包含一个处理器和一个存储器
  • SIMD
    • 一个指令流同时对多个数据流进行处理,数据级并行技术,包含一个指令控制部件、多个处理单元。
    • 处理for循环最有效,case和switch时效率最低,因为每个执行单元必须根据不同的数据执行不同的操作
  • MISD
    • 同时执行多条指令,处理同一个数据,实际不存在
  • MIMD
    • 同时执行多条指令,分别处理多个不同的数据
      • 多计算机系统
        • 每个计算机结点有独立的私有存储器、主存空间,不能通过取址指令访问不同结点的私有存储器,需要通过消息传递。消息传递MIMD
      • 多处理器系统
        • 共享存储多处理器SMP,共享的单一地址空间,通过存取指令来访问系统中的所有存储器,共享存储MIMD
  • 向量处理器是SIMD的变体,实现了直接操作一维数组(向量)指令集的CPU,而SIMD只能处理单一数据集
  • SIMD和MIMD,SIMD是数据级并行模式,MIMD的并行程度更高,线程级并行或线程级以上并行计算模式

###硬件多线程 每个线程有通用寄存器组,程序计数器,省略与存储器数据交换环节

  • 细粒度多线程
    • 多线程之间轮流交叉执行指令,乱序并行
  • 粗粒度多线程
  • 仅在一个线程阻塞时才切换线程,如cache缺失
    • 阻塞时必须清除被阻塞的流水线,新指令开始前需要重载流水线
  • 同时多线程SMT
    • 实现指令级并行的同时实现线程级并行
    • 同一个时钟周期中,发射多个不同线程中的多条指令执行
    • intel中的超线程就是SMT,一个单处理器或单核中设置了两套线程状态部件…

总线

分类

  • 片内总线
  • 系统总线
  • I/O总线
  • 通信总线

系统总线的结构

  • 单总线结构
    • CPU、主存、I/O设备都在一组总线上,也可细分为地址总线、数据总线和控制总线
    • 优:结构简单、成本低、易于接入
    • 缺:带宽低、负载重、争用、不支持并发
  • 双总线结构
    • 一条是主存总线(CPU、主存和通道之间),另一条是I/O总线
    • 优:低速I/O分离,实现存储器总线和I/O总线分离
    • 缺:需要增加通道等硬件设备
  • 三总线结构
    • 分别为主存总线、I/O总线和直接内存访问(DMA)总线
      • 主存总线用于CPU和内存
      • I/O总线用于CPU和外设
      • DMA总线用于在内存和高速外设之间
    • 优:提高了I/O设备性能,提高系统吞吐量
    • 缺:系统工作效率较低

常见的总线标准

总线的性能指标