第九章 控制单元的功能
执行周期
- 非访存指令
- 清除累加器指令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
- JMP X
中断周期
中断隐指令自动完成保护断点、寻找中断服务入口地址以及硬件关中断的操作 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设备性能,提高系统吞吐量
- 缺:系统工作效率较低
- 分别为主存总线、I/O总线和直接内存访问(DMA)总线