计算机组成原理
CPU
基本功能
- 自动完成取出指令和执行指令的任务
结构图
- 虚线框为CPU
基本部件
-
运算器
-
算术逻辑运算单元ALU
- 执行运算 两个数一个来自缓存寄存器DR 一个来自累加器AC 运算结果暂时存放到累加器中
-
状态条件寄存器PSW
- 0标志位 溢出标志位 等
-
数据缓冲寄存器DR
- 信息进出CPU都有在这蹲点,不论是指令还是数据进CPU都要先进缓存寄存器
-
通用寄存器R
-
-
控制器
-
程序计数器PC
- 下一条将要执行指令的地址
-
指令寄存器IR
- 当前正在执行的指令,这里的指令中包含操作码和地址码
-
指令译码器ID
- 指令译码器把翻译结果告诉操作控制器和时序产生器,他们再按照时间顺序向计算机的执行部件发出执行命令
-
操作控制器
-
功能
- 建立数据通路
-
分类
- 硬布线控制器
- 微程序控制器
-
-
时序产生器
-
-
cache
-
地址寄存器AR
- 存放CPU正在访问的内存的地址,一般和地址总线直接相连
-
指令周期
-
基本概念
-
指令周期
- 取指令并执行指令的周期
-
CPU周期/机器周期
- 从主存中读一条指令的最短周期
-
时钟周期/节拍脉冲
- 完成一次微操作
-
-
流程
-
取指令
- PC中的指令地址被放到指令地址总线上
- 从指存中根据地址读取指令
- 指令通过指令总线装入IR中
- 从IR中取指令
- PC+1
- 对指令译码
-
执行指令
- 具体分析
-
-
指令控制同步
-
定长指令周期
-
CPU周期固定,节拍数固定,按CPU周期同步
-
单周期
- 在一个CPU周期中完成取指令和执行指令操作
-
-
变长指令周期
- CPU周期可变,节拍数可变,按时钟周期数同步
- 多周期
-
-
典型指令的指令周期
-
MOV R0,R1
- 传送指令:(R0)->R1
-
LAD R1,6
- 取数指令:从数存6号单元取数到R1中
-
ADD R1,R2
- 加法指令:(R1)+(R2)->(R2)
-
STO R2,(R3)
- 存数指令:将R2中的值写入R3中地址的位置
-
JMP 101
- 转移指令:改变程序执行顺序到101号单元
-
AND R1,R3
- 逻辑乘:(R1)*(R3)->R3
-
-
方框语言表示指令周期
时序信号
-
硬布线控制器
- 主状态周期
- 节拍电位
- 节拍脉冲
-
微程序控制器
- 节拍电位
- 节拍脉冲
微程序控制器
-
概述
- 把操作控制信号编写成微指令,放到只读存储器中(控制存储器),当机器运行时 一条一条取出这些微指令,从而产生各种操作控制信号,使相应的部件执行所规定的操作。
-
概念
-
微命令
- 控制部件通过控制线向执行部件发出的各种控制命令
-
微操作
-
执行部件接受微命令后所进行的操作
-
分类
-
相容性微操作
- 同时或在同一个CPU周期内可以并行执行的微操作
-
互斥性微操作
-
-
-
控制部件
-
执行部件
-
微指令
- 在机器的一个CPU周期中,一组实现一点操作功能的微命令的组合
-
微程序
- 实现一条机器指令功能的许多条微指令组成的序列
- 1条机器指令=1个微程序
-
-
控制原理
-
微程序设计
-
目标
-
缩短微指令字长度
- 减小控制存储器的容量
-
提高微程序执行速度
-
便于修改微指令
- 提高设计灵活性
-
-
微命令编码
-
直接表示
- 微指令字较长
-
编码表示法
-
分段二次译码
- 速度稍稍减慢
- 较为普遍
-
-
混合表示法
- 把直接表示法和字段编码法混合使用,以便能综合考虑指令字长、灵活性、执行微程序素的等方面的要求
-
-
微地址形成方法
- 计数器
- 多路转移
-
微指令
-
字段
-
操作字段
-
顺序字段
- 决定、产生下一条指令地址
-
-
格式
-
水平型微指令
- 一次能定义并执行多个并行操作微命令的微指令
- 控制字段|判别测试字段|下地址字段
-
垂直型微指令
- 微指令中设置微操作码字段,采用微操作码编译法,由微操作码规定微指令的功能
-
-
-
流水CPU
-
过程
-
时间
-
影响因素
-
资源相关
-
两条指令同时争用一个功能部件发生冲突
-
解决
- 前一指令访存时,后一指令暂停一个时钟周期
- 增设存储器
-
-
数据相关
-
前一条指令执行完毕以后才能执行下一条指令
-
解决
- 在流水CPU的运算器中设置若干运算结果缓冲寄存器,暂时保留运算结果,以便于后继指令直接使用,这称为向前或定向传送技术。
- 将遇到数据相关的指令及其后续指令都暂停一个至几个时钟周期,直到数据相关问题消失
- 通过编译器对数据相关的指令编译优化,调整指令顺序。
-
-
控制相关
-
跳转指令
-
解决
- 延迟转移
- 转移预测
-
-
-
性能指标
-
吞吐率
- 单位时间内流水线所完成的任务数量TP=n/Tk n是任务数 Tk是处理完成n个任务所用的时间
-
加速比
- 不使用流水线和使用流水线所用时间之比S=T0/Tk T0不使用流水线的执行时间 Tk使用流水线的执行时间 S最大可取到k (流水线的段数)
-
效率
- E=n个任务占用k时空区有效面积/n个任务所用的时间 与k个流水段所围成的时空区总面积 最高为1
-