数电第七章 指令系统

数字逻辑第七章 指令系统

概述与指令系统设计

指令执行周期:

(1)取指令(IF):指令地址、指令长度(定长/变长)

(2)指令译码(ID),确定做何操作:指令格式、操作数编码、操作数类型

(3)取数,计算操作数地址并取操作数:地址码、寻址方式、操作数格式与存放

(4)执行(EX),进行相应计算、并得到标志位:操作类型、标志或条件码

(5)存数(RS),将计算结果保存到目的地:结果数据位置(目的操作数地址)

(6)下一步,计算下一条指令地址(与取指令同时进行):下条指令地址(顺序/转移)

一条指令必须明显或隐含包含:

(1)操作码(指定操作类型,操作码长度固定/可变)

(2)源操作数参照(一个或多个源操作数所在的地址)(操作数来源:主(虚)存/寄存器/I/O端口/指令本身)

(3)结果值参照:产生结果(目的操作数)存于何处

(4)下一条指令地址:下条指令存于何处?(改变顺序由指令给出)

寻址方式

方式 操作数 优点 缺点 操作数位置
立即数 imm 指令执行快 操作数值域有限 指令
直接 addr 地址计算简单 地址范围有限 内存
间接 (addr) 地址范围大 多次存储器访问 内存
寄存器直接 Reg 指令执行快,指令短 地址范围有限 寄存器
寄存器间接 (Reg) 地址范围大 额外存储器访问 内存
偏移 A+(Reg) 灵活 复杂 内存
栈顶 指令短 应用有限 内存

操作码的两种编码方式:定长操作码法,\(n\)位可表\(2^n\)种指令(性能更重要时,便于快速访问和译码)、扩展操作码法(代码长度更重要时,使机器代码更紧凑)

扩展操作数编码示例:

某指令系统指令字16位,每个地址码6位。若二地址指令\(k_2\)条,一地址指令\(k_1\),则剩下零地址指令最多有多少条

\(((16-k_2)\cdot 2^6-k_1)\cdot 2^6\)

CISC与RISC:CISC(指令编码较为灵活)、RISC(指令简化,除Load、Store可访问存储器外、其余指令只访问寄存器)

异常与中断

内部异常包括:

(1)硬故障中断:如电源掉电、硬件线路故障。

(2)程序性中断:执行某指令时发生的例外事件:溢出、缺页、越界、越权、越级、非法指令、除数为0、堆/栈溢出、访问超时、断点设置、单步、系统调用。

发现立刻处理

外部中断包括:

在CPU外部发生的特殊事件,通过“中断请求”信号向CPU请求处理。如实时钟、控制台、打印机缺纸、外设准备好、采样计时到、DMA传输结束等。

每个指令执行结束,CPU查询有无中断请求,有则响应中断

软件识别:设置异常原因寄存器记录异常原因,操作系统使用一个统一的异常处理程序,该程序按优先级顺序查询异常状态寄存器,识别出异常事件。

硬件识别:每个异常和中断都有一个异常/中断号,根据此号,到中断向量表(中断描述符表)中读取对应的具体的中断服务程序的入口地址。