计算机组成原理学习笔记(五)
指令系统
**机器指令
- 指令的一般格式**
• 操作码:反映机器做什么操作
长度固定:用于指令字长较长的情况,RISC
长度可变:操作码分散在指令字的不同字段中
• 扩展操作码技术:操作码的位数随地址数的减少而增加
- 地址码
• 四地址
• 三地址
• 二地址
• 一地址
• 零地址 - 指令字长
包括操作码长度、操作码地址长度、操作数地址个数
操作数类型和操作类型
- 操作数类型
• 地址
• 数字:定点数、浮点数、十进制数
• 字符:ASCII
• 逻辑数:逻辑运算 - 数据在存储器中存放方式
• 大端方式
• 小端方式 - 字节编址
• 从任意位置开始存储
优点:不浪费存储资源
缺点:除了访问一个字节之外,访问其它任何类型的数据,都可能花费两个存储周期的时间。读写控制比较复杂。
• 从一个存储字的起始位置开始访问
优点:无论访问何种类型的数据,在一个周期内 均可完成,读写控制简单。
缺点:浪费了宝贵的存储资源
• 边界对准方式——从地址的整数倍位置开始访问
寻址方式
- 指令寻址
• 顺序:( PC ) + 1 PC
• 跳跃:由转移指令指出 - 数据寻址
形式地址A:指令字中的地址
有效地址EA:操作数的真实地址
•
• 立即寻址
(EA) = A
形式地址A就是操作数
指令执行阶段不访存
A 的位数限制了立即数的范围
• 直接寻址
EA = A
有效地址有形式地址A直接给出
执行阶段访问一次存储器
A 的位数决定了该指令操作数的寻址范围
操作数的地址不易修改(必须修改A)
• 隐含寻址
操作数地址隐含在操作码中
• 间接寻址
EA = (A)
有效地址由形式地址间接提供
执行指令阶段 2 次访存
可扩大寻址范围
便于编制程序
• 寄存器寻址
有效地址即为寄存器编号
执行阶段不访存,只访问寄存器,执行速度快
寄存器个数有限,可缩短指令字长
• 寄存器间接寻址
EA = ( R )
有效地址在寄存器中, 操作数在存储器中,执行阶段访存
便于编制循环程序
• 基址寻址
EA = ( R ) + A
采用专用/通用寄存器作基址寄存器
由操作系统用户指定哪个通用寄存器作为基址寄存器
可扩大寻址范围
有利于多道程序
在程序的执行过程中 R0 内容不变,形式地址 A 可变
• 变址寻址
EA = ( IX ) + A
可扩大寻址范围
便于处理数组问题
IX 的内容由用户给定
通用寄存器也可以作为变址寄存器
在程序的执行过程中 IX 内容可变,形式地址 A 不变
• 相对寻址
EA = ( PC ) + A
• 堆栈寻址
指令格式举例
- 设计指令格式时应考虑的各种因素
• 指令系统的 兼容性
• 其他因素
因素 | |
---|---|
操作类型 | 包括指令个数及操作的难易程度 |
数据类型 | 确定哪些数据类型可参与操作 |
指令格式 | 指令字长是否固定 操作码位数、是否采用扩展操作码技术 地址码位数、地址个数、寻址方式类型 |
寻址方式 | 指令寻址、操作数寻址 |
寄存器个数 | 寄存器的多少直接影响指令的执行时间 |
RISC 技术
-
RISC 的主要特征
• 选用使用频度较高的一些简单指令, 复杂指令的功能由简单指令来组合
• 指令长度固定、指令格式种类少、寻址方式少
• 只有LOAD / STORE 指令访存
• CPU 中有多个 通用 寄存器
• 采用流水技术一个时钟周期内完成一条指令
• 采用组合逻辑实现控制器 -
CISC 的主要特征
• 系统指令复杂庞大,各种指令使用频度相差大
• 指令长度不固定、指令格式种类多、寻址方式多
• 访存指令不受限制
• CPU中设有专用寄存器
• 大多数指令需要多个时钟周期 执行完毕
• 采用微程序控制器 -
RISC和CISC比较
• RISC更能充分利用 VLSI 芯片的面积
• RISC更能提高计算机运算速度:指令数、指令格式、寻址方式少,通用寄存器多,采用组合逻辑,便于实现指令流水
• RISC 便于设计,可 降低成本,提高 可靠性
• RISC 不易 实现 指令系统兼容
CPU的结构和功能
CPU 的结构
- CPU与系统总线
功能 | |
---|---|
PC,IR | 指令控制 |
CU时序电路 | 操作控制 时间控制 |
ALU运算器 | 数据加工 |
中断系统 | 处理中断 |
- CPU结构框图
- 控制器的功能
• 取指令
• 分析指令
• 执行指令,发出各种操作命令
• 控制程序输入及结果的输出
• 总线管理
• 处理异常情况和特殊请求 - 运算器的功能
• 实现算术运算和逻辑运算 - CPU的寄存器
• 用户可见寄存器
(1)通用寄存器
存放操作数,可作某种寻址方式所需的专用寄存器
(2) 数据寄存器
存放操作数(满足各种数据类型),两个寄存器拼接存放双倍字长数据
(3) 地址寄存器
存放地址,其位数应满足最大的地址范围。用于特殊的寻址方式 段基值 栈指针
(4) 条件码寄存器
存放条件码,可作程序分支的依据,如 正、负、零、溢出、进位等
• 控制和状态寄存器
(1) 控制寄存器
控制 CPU 操作,如MAR,MDR,IR,PC(用户可见)
(2) 状态寄存器
状态寄存器:存放条件码
PSW寄存器:存放程序状态字
指令周期
- 指令周期基本概念
取出并执行一条指令所需的全部时间
完成一条指令:取指、分析、执行
- CPU的四个工作周期
取指周期:取指令
间址周期:取地址
执行周期:存取操作数或结果
中断周期:存程序断点
指令流水
- 如何提高机器速度
- 提高访存速度
• 高速芯片
• Cache
• 多体并行 - 提高 I/O 和主机之间的传送速度
• 中断
• I/O 处理机
• DMA
• 多总线
• 通道 - 提高运算器速度
• 高速芯片
• 改进算法
• 快速进位链 - 提高整机处理能力
• 高速器件
• 改进系统结构 ,开发系统的并行性
- 系统的并行性
- 并行的概念
并发:两个或两个以上事件在同一时间段发生
同时:两个或两个以上事件在同一时刻发生 - 并行性的等级
指令级(指令之间、指令内部):细粒度,硬件实现
过程级(程序、进程):粗粒度,软件实现
- 指令流水原理
- 指令串行执行
- 指令二级流水
- 影响指令流水效率加倍的因素
• 执行时间大于取指时间
• 条件转移指令对指令流水的影响:必须等上条指令执行结束,才能确定下条指令的地址 - 影响指令流水线性能的因素
结构相关:不同指令争用同一功能部件产生资源冲突
数据相关:有些数据必须先写后读,或者先读后写
结构相关:由于条件转移指令,无法直接取出下一条指令
控制单元的功能
控制单元的功能
- 控制单元外特性
- 输入信号
信号 | 相关 |
---|---|
时钟 | CU受时钟控制 一个时钟脉冲 发一个操作命令或一组需同时执行的操作命令 |
指令寄存器 | 控制信号与操作码有关 |
标志 | cu受标志控制 |
外来信号 | INTR中断请求 HRQ总线请求 |
- 输出信号
• CPU内的各种控制信号
• 送至控制总线的信号
控制信号举例
1. 不采用CPU内部总线的方式
• 取指周期
- 采用总线的方式
取指周期->间址周期->执行周期
多级时序系统
-
机器周期
• 机器周期的概念:所有指令执行过程中的一个基准时间
• 确定机器周期需考虑的因素:每条指令的执行步骤,每一步骤所需的时间
• 基准时间的确定:以完成复杂指令功能的时间 为准,以访问一次存储器的时间为基准 -
时钟周期(节拍、状态)
• 一个机器周期内可完成若干个微操作
• 每个微操作需一定的时间
• 时钟周期是控制计算机操作的最小单位时间
• 将一个机器周期分成若干个时间相等的 时间段(节拍、状态、时钟周期)
• 用时钟周期控制产生一个或几个微操作命令 -
多级时序系统
• 机器周期、节拍(状态)组成多级时序系统
• 一个指令周期包含若干个机器周期
• 一个机器周期包含若干个时钟周期 -
控制方式
产生不同微操作命令序列所用的时序控制方式
• 同步控制方式:采用定长的机器周期、采用不定长的机器周期、采用中央控制和局部控制相结合的方式
• 异步控制方式:无基准时标信号、无固定的周期节拍和严格的时钟同步、采用应答方式
• 联合控制方式:同步和异步结合
• 人工控制方式:reset、停机开关
控制单元设计
组合逻辑设计
- 微操作的节拍安排
• 采用同步控制方式
• 一个机器周期内有3个节拍(时钟周期) - 安排微操作时序的原则
• 微操作的先后顺序不得随意更改
• 被控对象不同的微操作,尽量安排在 一个节拍 内完成
• 占用时间较短的微操作,尽量安排在 一个节拍 内完成,并允许有先后顺序 - 微操作的节拍安排(以取指周期为例)
节拍 | 微操作 | 遵循原则 |
---|---|---|
T0 | PC->MAR CU->M(发出控制命令) |
原则二 |
T1 | M(MAR)->MDR (PC)+1->PC |
原则二 |
T2 | MDR->IR OP(IR)->ID |
原则三 |
- 组合逻辑设计步骤
• 列出操作时间表
•
• 写出为操作命令的最简表达式
•
• 画出逻辑图
- 特点
• 思路清晰,简单明了
• 庞杂,调试困难,修改困难
• 速度快
微程序设计
- 微程序设计思想
• 一条机器指令对应一个微程序
• 一个微程序对应多个微指令
• 一个微指令对应多个微操作指令 - 机器指令对应微程序
采用微程序设计方法设计控制单元的过程就是编写每一条机器指令的微程序,它是按照每条机器指令所需的微操作命令的先后顺序而编写的,因此,一条机器指令对应一个微程序,如下图所示。图中每一条机器指令都与一个以操作性质命名的微程序对应
由于任何一条机器指令的取指令操作是相同的,因此将取指令操作的命令统一编成一个微程序,这个微程序只负责将指令从主存单元中取出送至指令寄存器中,如下图所示的取指周期微程序。此外,如果指令是间接寻址,其操作也是可以预测的,也可先编出对应间址周期的微程序。当出现中断时,中断隐指令所需完成的操作可由一个对应中断周期的微程序控制完成。这样,控制存储器中的微程序个数应为机器指令数再加上对应取指、间址和中断周期的3个微程序
- 微程序控制单元基本框图
• CM:控制存储器,保存微指令,只读
• CMDR:控制存储数据缓冲器
• CMAR:控制存储地址寄存器
• 顺序逻辑:用来控制微指令序列的,具体就是控制形成下一条微指令(即后续微指令)的地址,其输入与微地址形成部件(与指令寄存器相连)、微指令的下地址(下一条微指令的地址,简称“下地址”)字段以及外来的标志有关
- 微指令基本格式
微指令基本格式如下图所示,共分为两个字段,一个为操作控制字段,该字段发出各种控制信号;另一个为顺序控制字段,它可以指出下条微指令的地址,以控制微指令序列的执行顺序(简称下地址)
- 微程序控制单元原理
• 取指阶段
①将取指周期微程序首地址M->CMAR;
②然后取微指令,将对应控存M地址单元中的第一条微指令读到控存数据寄存器中,记作CM(CMAR)->CMDR。
③产生微操作命令,第一条微指令的操作控制字段中为“1”的各位发出控制信号,如PC->MAR,1->R,命令主存接收程序首地址并进行读操作。
④形成下一条微指令的地址。下一条微指令地址为M+1,将M+1送至CMAR,即Ad(CMDR)->CMAR。
⑤取下一条指令。将对应控存M+1地址单元中的第二条微指令读到CMDR中,即CM(CMAR)->CMDR。
⑥产生微操作命令。由第二条微指令的操作控制字段中对应“1”的各位发出控制信号,如M(MAR)->MDR使对应主存2000H地址单元中的地一条机器指令从主存中读出送至MDR中。
⑦形成下一条微指令地址。
……
• 执行阶段(执行LDA微程序)
①取数指令微程序首地址的形成。OP(IR)->微地址形成部件->CMAR。
②取微指令。CM(CMAR)->CMDR。
③产生微操作命令。Ad(IR)->MAR,1->R
④形成下一条为指令地址。Ad(CMDR)->CMAR。
⑤取微指令,CM(CMAR)->CMDR。
⑥产生微操作命令。 - 关键点:
• 微指令的操作控制字段如何形成微操作命令;
• 微指令的后续地址如何形成。 - 微指令的编码方式(控制方式)
• 直接编码(直接控制)方式
在微指令的操作控制字段中,每一位代表一个微操作命令。如下所示,下地址左侧为控制信号,进行操作控制。速度最快
• 字段直接编码方式
将微指令的操作控制字段分成若干段,将一组互斥的微操作命令放在一个字段内,通过对这个字段译码,便可以对应每一个微命令。这种方法靠字段直接译码发出微命令,又称显式编码。它缩短了微指令字长,增加了译码时间
• 字段间接编码方式
一个字段的某些微命令还需要由另外一个字段的某些微命令来解释,如下图所示,图中字段1译码的某些输出受字段2译码输出的控制,由于不少靠字段直接译码发出微命令,故称为字段间接编码,又称隐式编码
• 混合编码
把直接编码和字段编码(直接或间接)混合使用。
• 其它
微指令中还可以设置常数字段,用来提供常数、计数器初值等。常数字段还可以和某些解释位配合。此外微指令还可以用类似机器指令操作码的方式编码。 - 微指令序列地址的形成
• 直接由微指令的下地址字段指出(断定方式);
• 根据机器指令的操作码形成;
• 增量计数器法;
• 分支转移;
• 通过测试网络形成;
• 由硬件产生微程序入口地址:第一条微指令地址由专门硬件产生;中断周期 由硬件产生中断周期微程序首地址
- 微指令格式
• 水平型微指令:一次能定义并执行多个并行操作。如直接编码、字段直接编码、字段间接编码、直接和字段混合编码等。
• 垂直型微指令:类似机器指令操作码的方式。在微指令字中,设置微操作码字段,由微操作码规定微指令的功能。不强调其并行控制能力。 - 两种微指令格式的比较
• 水平型微指令比垂直型微指令并行操作能力强,灵活性强。
• 水平微指令执行一条机器指令所需的微指令数目少,速度快。
• 水平型微指令用较短的微程序结构换取较长的微指令结构,而垂直型微指令正好相反。
• 水平型微指令与机器指令差别较大,而垂直型微指令与机器指令相似。 - 静态微程序设计和动态微程序设计
• 静态:微程序无需改变,采用ROM。
• 动态:通过改变微指令和微程序改变机器指令,有利于仿真,采用EPROM。 - 毫微程序设计(有点像套娃)
• 微程序设计用微程序解释机器指令;
• 毫微程序设计用毫微程序解释微指令
• 微程序设计用微程序解释机器指令
• 毫微程序设计用毫微程序解释微指令
• 毫微指令与微指令的关系好比微指令与机器指令 的关系
- 串行微程序控制和并行微程序控制
微程序指令也分为两个阶段:取微指令和执行微指令。
• 串行微程序控制如下所示:
• 并行微程序控制增加了一个微指令寄存器来暂存下一条指令,以防止影响本条微指令的执行。如下所示: - 微程序设计举例
• 写出机器指令的微操作和节拍安排
• 确定微指令格式:包括微指令编码方式及后续微指令的地址形成方式
• 微指令字长
• 定义微指令操作控制字段每一位操作
• 编写微指令码点