计算机硬件与软件之间的接口, 指令系统。
指令的格式是什么?
操作码,地址码,寻址方式;
指令的字长,可以分为固定字长,可变字长;
操作码的长度可以是固定的,也可以是变化的。
操作码 反映机器做什么操作
长度固定:
用于指令字长较长的情况 , RISC
如 IBM 370 操作码 8 位
长度可变:
操作码分散在指令字的不同字段中
扩展操作码是
一种指令优化技术,即让操作码的长度随地址数的减少而增加,不同地址数的指令可以具有不同的操作码长度;
三地址指令操作码, 每减少一种最多可多构成 2 4 2^4 24种二地址指令
二地址指令操作码,每减少一种最多可多构成 2 4 2^4 24 种一地址指令
地址码用来指出该指令的原操作数的地址(一个或两个)、结果的地址以及下一条指令的地址。
如果地址字段均指示主存的地址,则完成一条四地址指令,共需访问4次存储器(取指令一次,取两个操作数两次,存放结果一次)
(A1) OP (A2) A3 : 若 PC 代替 A4
若结果存于 ACC 若ACC 代替 A1(或A2
指令字长取决于:
指令字长 固定
指令字长 = 存储字长
指令字长 可变
按字节的倍数变化
当用一些硬件资源代替指令字中的地址码字段后:
• 可扩大指令的寻址范围
• 可缩短指令字长
• 可减少访存次数
当指令的地址字段为寄存器时:
三地址 OP R1, R2, R3
二地址 OP R1, R2
一地址 OP R1
• 指令执行阶段不访存
• 可缩短指令字长
一个字节通常8位长。
4 个字节代表一个字,这是计算机在执行指令时能够有效处理数据的单位。一些语言描述需要2个字节表示一个字符,这叫做双字节字符集。
地址, 无符号整数
数字, 定点树 , 浮点数, 十进制数
字符, ASCII
逻辑数: 逻辑运算
大端与小端的存储方式.
由于不同的机器数据字长不同,每台机器处理的数据字长也不统一;
字节编址,数据在存储器中的存放方式(存储字长64
位,机器字长32位)
优点:不浪费存储资源
缺点:除了访问一个字节之外,访问其它任何类型的数据,
都可能花费两个存储周期的时间。读写控制比较复杂。
优点:无论访问何种类型的数据,在一个周期内
均可完成,读写控制简单。
缺点:浪费了宝贵的存储资源
-3. 边界对准方式——从地址的整数倍位置开始访问
数据存放的起始地址是数据长度(按照编址单位
进行计算)的整数倍.
本方案是前两个方案的折衷,在一个周期内
可以完成存储访问,空间浪费也不太严重。
为了便于硬件实现,通常要求多字节的数据在存储器的存放方式能满足“边界对准”的要求。
压栈,将寄存器中的内容保存到内存单元中。
如 8086
ADD SUB MUL DIV INC DEC CMP NEG
AAA AAS AAM AAD
AND OR NOT XOR TEST
循环移位(带进位和不带进位)
意外事故的中断:
一般不提供给用户直接使用
在出现事故时,由 CPU 自动产生并执行(隐指令)
设置供用户使用的陷阱指令
如 8086 INT TYPE 软中断
提供给用户使用的陷阱指令,完成系统调用
输入和输出,是相对cpu 中的寄存器而言的。
入: 端口中的内容 CPU 的寄存器, 比如 IN AL, n; IN AL, DX;
出: CPU 的寄存器 端口中的内容。
OUT n, AX OUT DX, AL;
寻址方式,
确定 本条指令 的 操作数地址
下一条要执行 指令 的 指令地址
寻址方式,
指令寻址中可分
顺序寻址,指令的地址保存在pc当中;
操作码 | 寻址特征 | 形式地址 A |
---|
形式地址
: 指令字中的地址
有效地址
: 操作数的真实地址
以下各类数据寻址方式中,约定
指令字长 = 存储字长 = 机器字长
形式地址 A 就是操作数,
• 执行阶段访问一次存储器
• A 的位数决定了该指令操作数的寻址范围
• 操作数的地址不易修改(必须修改A)
MUL 指令 :被乘数隐含在 AX(16位)或 AL(8位)中
MOVS 指令: 源操作数的地址隐含在 SI 中
目的操作数的地址隐含在 DI 中
EA =(A) 有效地址由形式地址间接提供.
操作数地址,保存在某一个内存单元当中。
即第一次,访问内存单元中,保存的是操作数地址,为什么要将操作数地址,存放在内存单元中的原因是,为了扩大地址的寻址范围。
EA = R, 有效地址即为寄存器编号.
• 执行阶段不访存,只访问寄存器,执行速度快.
• 寄存器个数有限,可缩短指令字长.
EA = ( Ri ), 有效地址在寄存器中.
• 有效地址在寄存器中, 操作数在存储器中,执行阶段访存.
• 便于编制循环程序
• 基址寄存器的内容由操作系统确定
• 在程序的执行过程中 R0 内容不变,形式地址 A 可变
EA = (IX) + A
IX 为变址寄存器(专用),
通用寄存器也可以作为变址寄存器.
相对寻址EA = (PC)+ A,
A是相当于当前指令地址的位移量,可正可负,用补码表示。
堆栈;
硬堆栈, 多个寄存器;
软堆栈, 指定的存储空间;
先进后出(一个入出口), 栈顶地址 由 SP 指出;
栈地址, 越往上越小,逐个减一,进栈后,地址上移。
进栈 (SP) – 1 SP, 出栈 (SP) + 1 SP
堆栈寻址方式中,设A为累加器,SP为堆栈指示器,
设计指令格式时考虑的因素包括
指令系统的兼容性,
操作类型: 包括指令个数及操作的难易程度
数据类型: 确定哪些数据类型可参与操作
指令格式:指令字长是否固定,
地址码位数、地址个数、寻址方式类型.
操作码位数、是否采用扩展操作码技术,
寻址方式: 指令寻址、操作数寻址
寄存器个数:寄存器的多少直接影响指令的执行时间
4
B:基址寄存器。
D是偏移地址, X, 偏移地址寄存器。
RISC(Reduced Instruction Set Computer)
CISC(Complex Instruction Set Computer)
—— RISC技术
80-20规律是指典型程序中80%的语句仅仅使用处理机中20%的指令。
典型程序中 80% 的语句仅仅使
用处理机中 20% 的指令.
执行频度高的简单指令,因复杂指令
的存在,执行速度无法提高.
能否用 20% 的简单指令组合不常用的 80% 的指令功能
复杂指令的功能由简单指令来组合
. 指令 长度固定、指令格式种类少、寻址方式少
只有 LOAD / STORE 指令访存
CPU 中设有 多个 通用 寄存器
采用 流水技术 ,一个时钟周期 内完成一条指令
采用 组合逻辑 实现控制器
现代处理器中
–RISC
–CISC
–RISC与CISC相结合