文章目录
CPU的功能
CPU包括运算器和控制器,控制器的功能包括:取指令、分析指令、执行指令,运算器的功能为对数据进行处理。CPU的功能包括:指令控制(取指令、分析指令、执行指令)、操作控制(一条指令包含若干操作信号的组合,使用)、时间控制(控制指令按顺序执行)、数据加工(运算器的功能)、中断处理(对异常和特殊情况进行处理)
CPU的结构
运算器
包括ALU、寄存器(输入暂存、结果累加、通用寄存器、程序状态字)、移位器、多步乘除法的计数器
控制器
包括指令译码器、寄存器(PC、IR、MAR、MDR)、时钟分频、微操作信号发生器
指令执行周期
指令周期
定长指令周期:取指令(n个周期)、取有效地址(n个周期)、执行指令(n个周期)、(中断周期)
不定长指令周期:取指令(n个周期)、执行指令(m个周期)、(中断周期)
指令周期的数据流
取指令的周期:
间址周期:(一次间接寻址)
执行周期:无固定流向
中断周期:
指令执行方案
- 单指令周期:指令都在相同时间完成,(每条指令在一个时钟周期内完成)
- 多指令周期:指令可以在不同周期数中完成
- 流水线技术:指令可以并行,分别处于不同阶段
数据通路
数据通路是数据传送的路径
基本结构:单总线、多总线、专用电路
寄存器之间的数据传送: ( R 1 ) → R 2 \mathrm{(R1)\to{R2}} (R1)→R2:数据从 R 1 R1 R1送到 R 2 R2 R2
主存和CPU之间数据传送: ( R 1 ) → M A R , M E M ( M A R ) → M D R , ( M D R ) → R 2 \mathrm{(R1)\to{MAR},MEM(MAR)\to{MDR},(MDR)\to{R2}} (R1)→MAR,MEM(MAR)→MDR,(MDR)→R2:读取 [ R 1 ] [R1] [R1]到 R 2 R2 R2
算术逻辑运算: R 1 → 暂存器 , R 2 → A C C , A C C → R 3 \mathrm{R1\to{暂存器},R2\to{ACC},ACC\to{R3}} R1→暂存器,R2→ACC,ACC→R3
控制器
- 取指令、指出下一条指令的地址
- 指令译码
- 控制CPU、主存、I/O之间的数据通路
控制器可分为硬布线控制器(主要是RISC)和微程序控制器(主要是CISC)
硬布线控制器
CU的输出是操作码译码结果、节拍发生器和其他标志的运算结果
取指令操作的微操作:
(PC)->MAR
1->R
M(MAR)->MDR
(MDR)->IR
Op(IR)->CU
(PC)+1->PC
取操作数的操作:
Add(IR)->MAR
1->R
M(MAR)->MDR
执行的操作(例:存数):
Add(IR)->MAR
1->W
(ACC)->MDR
转移指令:
Add(IR)->PC
(转移之后PC一般还会自增)
控制方式:
- 同步控制方式:统一时钟
- 异步控制方式:不存在基准时钟,通过应答方式进行联络
- 联合控制方式:介于同步和异步之间
设计步骤:
- 列出微操作命令时间表
- 进行微操作信号综合(考虑机器周期、操作码、机器条件状态)
- 画出微操作命令的逻辑图
微程序控制器
一条机器指令可以被分解为一个微操作序列,微命令是微操作的控制信号
微指令是微命令的组合,在一个微周期内执行
控制存储器是存放微指令的地方
微程序是一段微指令的程序,一条指令由一段微操作指令实现
微地址寄存器:CMAR:控制存储器的MAR
微指令寄存器:CMDR=μIR:存放指令,控制寄存器的MDR
微程序控制器的组成:
- 控制存储器
- 微指令寄存器
- 微地址形成部件
- 微地址寄存器
工作过程:
控制存储器有一个取指令的微程序,是所有微指令的公共操作
微程序和机器指令:
通常一条微程序对应一个微程序,但是取指令是所有指令的公共操作,所以只需要一个微程序;也有间址、中断的微程序
微指令编码:
- 直接编码:一个位一个微命令
- 字段直接编码方式:非互斥分段、互斥译码(注意留出一个空位表示无操作)
- 字段间接编码方式:一个字段的微命令需要另外一个字段的微命令解释
微指令地址形成方式:
- 直接由微指令的下地址字段指出
- 根据指令的操作码形成
一般有以下几种具体的微地址形成方式:增量计数器、标志控制转移、测试网络、硬件产生微程序入口地址
微指令的格式:
水平型微指令:操作控制字段|判断测试字段|后继地址字段(以上三种微指令编码方式都是此类微指令的)
垂直型微指令:微操作码|目的地址|源地址
混合型微指令:在垂直型基础上增加不太复杂的操作
对比:
水平型微指令 | 垂直型微指令 | |
---|---|---|
并行操作能力 | 强 | 弱 |
效率 | 高 | 低 |
灵活性 | 强 | 弱 |
指令执行时间 | 短 | 长 |
微指令字 | 长 | 短 |
微指令程序控制单元设计步骤:
- 写出微操作命令和节拍安排
- 确定微指令格式
- 编写微指令编码
动态微程序设计:可以由用户动态改变微程序
毫微程序设计:微程序的下一级微程序
硬布线和微程序控制器的对比
微程序控制器 | 硬布线控制器 | |
---|---|---|
速度 | 慢 | 快 |
规整性 | 规整 | 不规整 |
应用 | CISC | RISC |
易扩充性 | 易扩充 | 不易扩充 |
异常和中断
分类:故障、自陷、终止
中断的分类:可屏蔽中断、不可屏蔽中断
异常响应流程:
- 关中断
- 保存断点和程序状态
- 识别异常,转到相应的处理程序
流水线技术
将一条指令的执行过程分为几个阶段,不同阶段的指令可以同时执行
指令长度应该一致、指令格式应该规整、采用Load/Store指令、数据和指令对齐存放
流水线可以用时空图来表示
流水线的实现:各个阶段的结果存储在寄存器中
对于包含Instruction Fetch、Instruction Decode、EXcute、MEMory access、Write Back的流水线:
控制信号:
信号 | FROM | TO |
---|---|---|
Branch | EX | IF |
RegDst | ID | ID |
RegWrite | WB | ID |
AluSrc | EX | EX |
AluOp | EX | EX |
MemWrite | MEM | MEM |
MemToReg | WB | WB |
流水线冒险
结构冒险
多条指令使用同一个资源。解决方法:暂停时钟周期、分开指令和数据缓存
数据冒险
写后读、读后写、写后写。解决方法:暂停、数据旁路、编译器调整指令
控制冒险
跳转指令造成断流。解决方法:分支预测、同时预取、提前生成条件码
流水线的性能指标
吞吐率
单位时间完成任务数量
加速比
不使用流水线和使用流水线时间之比。 S = k n k + n − 1 S=\frac{kn}{k+n-1} S=k+n−1kn
高级流水线技术
超标量流水线技术
多条不相关指令同时执行。也叫动态多发射技术
超长指令字技术
将可并行执行的操作写在一个超长指令中。也叫静态多发射技术
超流水线技术
只提升流水线段数,充满后 C P I = 1 CPI=1 CPI=1
多处理器
SISD、SIMD、MIMD
S:单/M:多、I:指令、D:数据流
向量处理器:SIMD
多核处理器:MIMD
一个控制部件:SI
硬件多线程实现方式
细粒度多线程
多个线程之间交叉执行指令
粗粒度多线程
当一个线程出现较大开销时执行指令
同时多线程
一个指令周期中,发射多个不同线程指令执行
多核处理器
多个处理单元可以放在一个CPU中,每个处理单元称为一个核
向量处理器:对多个数据进行同一种操作
共享内存多处理器
具有单一物理地址空间的多处理器。通常对共享变量加锁
统一存储访问:处理器访问内存速度大致相同,不分割主存