计算机组成原理—指令系统、CPU

发布时间 2023-09-07 22:17:07作者: T,a,o

计算机组成原理—中央处理器(2)

五、指令系统

1.机器指令

1.1一般形式

指令由操作码和地址码构成

  • 操作码

用来指明指令要完成的操作。操作码长度可固定,可改变

image

  • 地址码

用来指出指令的源操作数的地址

四地址指令:

OP A1 A2 A3 A4
操作码 第一地址 第二地址 结果地址 下一条指令地址

需要4次访存

三地址指令:

OP A1 A2 A3
操作码 第一地址 第二地址 结果地址

因为PC地址自动+1所以不需要A4,需要4次访存

二地址指令:

OP A1 A2
操作码 第一地址 第二地址

可将结果暂时存放到A1/A2,所以不需要A3

若结果不进入ACC(累加器)则需访存4次;反之访存3次

一地址指令

OP A1
操作码 操作码

其中一个操作数可在ACC中所以不需要A2

若结果进入ACC则需访存2次

零地址指令

无地址码,如,空操作,停机等

1.2指令字长(8的整数倍)

  • 固定:等于存储字长
  • 可变:按字节的整数倍变

2.操作数类型和操作类型

2.1操作数类型

地址,数字,字符,逻辑数据(逻辑运算)

2.2操作类型

数据传送(交换源:参与操作;目的:参与+结果),算术逻辑操作,移位,转移(包括有条件,无条件...)

3.寻址方式

3.1指令寻址

分为顺序和跳跃两种,比较简单,见下图即可

image

3.2数据寻址

确定操作数的地址

  • 立即寻址:操作数本身就是操作数,也叫做立即数。不需要访存
  • 直接寻址:指令中的地址就是真实的地址。有效地址由地址直接给出,需要一次访存,A的位数决定了该指令操作数的寻址范围
  • 隐含寻址:不需要明显给出操作数地址,一般ACC采用
  • 间接寻址:有效地址由形式地址间接提供,一次间接,两次访存
  • 寄存器寻址:有效地址为寄存器编号,不需要访存
  • 寄存器间接寻址:有效地址在寄存器中,数据还是存在存储器中
  • 基址寻址
  • 变址寻址
  • 相对寻址:A是相对于当前指令的偏移量
  • 堆栈寻址:栈顶是低地址。

在进行设计时注意进位问题

六、CPU的结构和功能

1.CPU的结构

1.1CPU的功能

  • 控制器功能:取指令,分析指令,执行指令,控制程序的输入和运算结果的输出,对总线的管理和异常、特殊情况的处理
  • 运算器的功能:实现算术逻辑运算

CPU有指令控制,时间控制,操作控制,处理中断和数据加工等功能

1.2CPU结构框图

控制指令:PC,IR

操作、时间控制:CU,时序电路

数据加工:ALU寄存器

处理中断:中断系统

image

1.3 CPU的寄存器

  • 用户可见寄存器:通用寄存器,数据寄存器,地址寄存器,条件码寄存器
  • 控制和状态寄存器:

不同系统的规定不同

2.指令周期

2.1基本概念

CPU取出并执行一条指令所需的全部时间称为指令周期一般的,指令周期 = 取值周期 + 执行周期

image

在其上的基础上,我们在加入取地址的周期和中断的周期,我们就得到了下图的一个指令周期的流程图

image

2.2指令周期数据流

  • 取值周期

image

  • 间址周期

image

  • 执行周期:不同的指令操作不同
  • 中断周期

image

3.指令流水

  • 总结:如何提高机器速度

1.提高访存速度:高速芯片,Cache,多体并行

2.提高I/O和主机的传送速度:中断,DMA,通道,多总线,I/O处理机

3.提高运算器速度:高速芯片,改进算法,快速进位链

4.提高整机处理能力:告诉器件,改进系统结构,开发系统的并行性

3.1指令流水原理

将每一个指令周期按照不同的指令分成若干段,实现并行操作

image

FI:取指 FO:取操作数
DI:译码 EI:执行指令
CO:计算操作数个数 WO:存储结果

3.2影响指令流水性能的因素

  • 结构相关(访存冲突)

同一时间对存储器既要访问,又要取指=>暂停后再进行操作;设两个独立的存储器存放操作数和指令

  • 数据相关

出现先读后写(当现代的数需要上一步的结果)=>后推法:将读指令推至写指令后;采用定向技术(旁路技术)

  • 控制相关

主要由转移指令引起,使提前做的浪费=>提早预判转移的发生,提早转移

3.3流水线性能

n条指令,m级流水,每一小段时间为t

  • 吞吐率:单位时间内流水线所完成指令或输出结果的数量

最大吞吐率:Tpmax = 1 / t

时间吞吐率:Tp = n / m*t+(n-1)t = Tpmax / 1+(m-1)/n

第一条指令用时m*t,其余每一个t就有一条指令结束

  • 加速比:m段流水线速度与其非流水线速度的比值

Sp = (n * m * t) /m*t+(n-1)t

  • 效率:各功能段的利用率

E = mnt / (mt+(n-1)t)m = Sp / m = Tp*t