计算机组成原理
概论
计算机分类
-
电子模拟计算机
- 数值由连续量表示,运算过程连续
-
电子数字计算机
-
专用计算机
-
通用计算机
- 超级计算机
- 大型机
- 服务器
- PC机
- 单片机
- 多核机
-
计算机发展
-
五代变化
-
数据处理机
- 电子管
-
工业控制机
- 晶体管
-
小型计算机
- 中小规模集成电路
-
微型计算机
- 大规模和超大规模集成电路
-
单片计算机
- 巨大规模集成电路
-
-
性能指标
-
吞吐量
- 在某一时间间隔内处理的信息量
-
响应时间
- 从输入有效到系统产生响应的时间度量
-
利用率
- 在给定事件间隔内系统被实际使用的时间所占的比重
-
处理机字长
-
总线宽度
-
存储器容量
-
存储器带宽
-
主频 f /时钟周期 T
- f = 1/T
-
CPU执行时间
- tcpu=CPU执行周期数×CPU时钟周期
-
CPI
- 执行一条指令所需的平均时钟周期数
- 执行某个程序所需的时钟周期数÷该程序指令总数
-
MIPS
- 平均每秒执行多少百万条定点指令数
- = 指令数 ÷ (CPU执行时间 × 10^6)
-
PLOPS
- 每秒执行浮点操作的次数
-
计算机硬件
-
冯诺依曼结构
-
组成
- 运算器
- 存储器
- 控制器
- 输入设备
- 输出设备
-
核心
- 存储程序
-
计算机软件
-
系统程序
-
服务性程序
- 诊断
- 排错
- 练习
-
语言程序
- 汇编
- 编程
- 解释
-
操作系统
-
数据库管理系统
-
-
应用程序
多级层次结构
- 微程序级
- 一般机器级
- 操作系统级
- 汇编语言级
- 高级系统级
运算器
数据概要
-
数据格式
-
数值格式
-
类型
- 小数
- 整数
- 实数
- 复数
-
表示
-
定点
-
组成
- 符号位
- 数值域
-
分类
- 纯整数
- 纯小数
-
-
浮点
-
组成
- 符号位 S
- 指数 E
- 尾数 M
-
IEEE754标准
-
组成
- 符号位 S
- 指数 E = e+固定偏移值
- 尾数 M
-
-
-
-
-
非数值格式
-
汉字格式
-
输入码
- 数字码
- 拼音码
- 字形码
-
处理
- 内码
-
输出码
- 字模码
-
-
字符格式
- ASCII码
-
-
-
真值
-
机器码
-
原码
-
反码
-
补码
-
移码
- 比较指数大小以及对阶
-
-
校验码
运算原理
-
定点
- 加法
- 减法
- 乘法
- 除法
-
浮点
-
加法/减法
-
运算流程
-
0操作数检查
-
比较解码大小并完成对阶
-
尾数求和
-
结果规格化
-
舍入处理
- 就近
- 朝0
- 朝正无穷
- 朝负无穷
-
溢出处理
-
阶码
- 上溢
- 下溢
-
尾数
- 上溢
- 下溢
-
-
-
-
乘法/除法
-
运算流程
-
0操作数检查
-
比较解码大小并完成对阶
-
尾数求和
-
结果规格化
-
舍入处理
- 就近
- 朝0
- 朝正无穷
- 朝负无穷
-
溢出处理
-
阶码
- 上溢
- 下溢
-
尾数
- 上溢
- 下溢
-
-
-
-
硬件层次
-
定点运算器
-
基本组成
- 算术/逻辑运算单元 ALU
- 数据缓冲存储器
- 通用寄存器
- 数据总线
-
逻辑运算
- 逻辑非
- 逻辑加
- 逻辑乘
- 逻辑异
-
分类
- 单总线结构
- 双总线结构
-
-
浮点运算器
-
浮点运算流水线
- 流水线原理
- 流水线浮点加法器
-
-
并行技术
- 先行进位
- 阵列乘除法
- 流水线
指令系统
指令概述
-
微指令
- 硬件
-
机器指令
- 简称指令
- 符号表示---->汇编指令
-
宏指令
- 软件
指令系统
-
指令系统分类
-
复杂指令系统计算机CSIC
-
精简指令系统计算机RSIC
- 选取使用频率最高的一些简单指令,指令条数少
- 指令长度固定,指令种类少,寻址方式种类少
- 只有取数存数指令访问存储器,其他都在寄存器中进行
-
-
性能要求
-
完备性
- 功能齐全
-
有效性
- 效率高
-
规整性
- 指令格式与数据格式一致性
-
兼容性
- 向上兼容
-
-
指令格式
-
指令字
-
指令字长度
-
一个指令字中包含二进制代码的位数,其长度应该与计算机的数据字长相匹配,以简化指令访存的操作,一般指令字长为计算机字长的整数倍。
-
分类
-
单字长指令
- 指令字长等于机器字长
-
双字长指令
- 指令字长等于两个机器字长指令
- 目的:提供足够的地址位来解决访问内存任何单元的寻址问题
- 缺点:是必须两次或多次访问内存以取出一整条指令,降低了CPU的运算速度,又占用了更多的存储空间。
-
-
-
机器字长
- 计算机能直接处理的二进制数据的位数,他决定了计算机的运算精度。
-
-
结构
-
操作码OP
-
分类
-
固定长度
- 优点:编码方法简单,便于指令的译码
- 缺点:不方便指令系统中增加新的指令(扩展不方便)
-
可变长度
- 减小操作码的平均长度,提高指令编码的效率,指令的扩展方便
-
计算指令操作码的平均长度
-
-
设计
-
与地址码的设计相匹配
- 如指令长度固定的情况下,地址码数量较多的指令可以安排较短的操作码,地址码数量较少的指令中可以安排较长的操作码
-
编码
- 哈夫曼编码
-
扩展
-
-
-
地址码A
-
零地址指令
- 空操作 停止等
-
一地址指令
-
AC<-(AC)op(A)
- 指令编码中只有一个地址码,指出了参加操作的一个操作数的存储位置A
- 如果还有另一个操作数则隐含在累加器AC中
-
-
二地址指令
-
A1<-(A1)op(A2)
- eg: MOV AL ,BL
-
-
ADD AL,30
- 按操作数所在位置分类 - 寄存器-寄存器(RR)型指令 - 寄存器-存储器(RS)型指令 - 存储器-存储器(SS)型指令 - 三地址指令 - A3<-(A1)op(A2)
-
-
特点
- 指令字长
- 地址格式
-
-
寻址方式
-
指令寻址
-
目的
- 确定下一条预执行指令的指令地址
-
寻址方式
-
顺序寻址
- (PC)+1->PC 程序计数器自动加1
-
跳跃寻址
- 由转移指令JMP指出
-
-
-
数据寻址
-
目的
- 把操作数的形式地址A,变换为操作数的有效地址EA
-
寻址方式
-
隐含寻址
- 例如:单地址的指令格式,没有在地址字段指明第二操作数地址,而是规定累加寄存器AC作为第二操作数地址,AC对单地址指令格式来说是隐含地址
-
立即寻址
- 形式地址A就是操作数本身
-
直接寻址
-
EA=A
- 直接根据读内存找到操作数,形式地址不需要经过任何处理
-
-
间接寻址
-
EA=(A)
- 有效地址由形式地址间接提供,形式地址是操作数的地址的地址
-
-
寄存器寻址
-
EA=R
- 形式地址是寄存器的编号,直接去寄存器中寻址操作数
-
-
寄存器间接寻址
-
EA=(R)
- 操作数里存放的是寄存器的编号,寄存器中存的不是操作数而是操作数的有效地址。所以操作数在存储器里。
-
-
偏移寻址
-
EA=A+(R)
- 形式地址需要和另一个寄存器中的地址相加,
形式地址A是显示的,另一个地址字段隐含在某个专用的寄存器R中
- 形式地址需要和另一个寄存器中的地址相加,
-
根据寄存器的不同类型来分类
-
相对寻址
- EX=A+(PC) ----PC程序计数器 PC存储当前正在执行指令的地址
-
基址寻址
- EA=A+(BR) BR为基地址寄存器
-
变址寻址
- EA=A+(IX) IX为变址寄存器(专用) 通用寄存器也可以作为变址寄存器
- 在程序执行的过程中IX内容可变,形式地址A不变,便于处理数组问题
-
-
-
堆栈寻址
-
-
-
-
指令分类
-
数据处理
- 算数运算型指令
- 逻辑运算型指令
-
数据存储
-
数据传送
- 输入输出类指令
- 数据传送类指令
- 指令传送类指令
- 标志传送指令
-
程序控制
- 系统控制类指令
-
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
-