【考研计算机组成原理】课堂笔记4 第四章 指令系统Instruction

文章目录:

一:指令格式

1.指令的基本格式(操作码+地址码)

2.定长操作码指令格式

3.扩展操作码指令格式

二:指令寻址方式

1指令寻址和数据寻址

2.常见的数据寻址方式

三:CISC和 RISC概念(两种设计方法)


一:指令格式

1.指令的基本格式(操作码+地址码)

1.结构
    1.1 一条指令=操作码+地址码,其中地址码可能有0~4个
    1.2 操作码︰指出指令中应该执行什么性质的操作和具有何种功能
    1.3 地址码︰给出被操作的信息(指令或者数据)的地址


2.根据操作数地址码数目分类
    2.1 零地址指令
        OP
        只有操作码OP,没有给出地址
        指令用途:空操作指令,停机指令,关中断指令
                 零地址的运算类指令仅使用在堆栈计算机中
    2.2 一地址指令
        oP    A1
        指令用途
            只有目的操作数的单操作数指令    加1减1求反求补
            隐含约定目的地址的双操作数指令
    2.3 二地址指令
        OP A1 A2
        指令用途
            算术和逻辑运算指令
            往往需要两个操作数,分别给出目的操作数和源操作数地址,目的操作数地址还用于保存本次的运算结果
    2.4 三地址指令
        OP A1 A2 A3(结果)
        指令用途︰算术和逻辑运算指令,相对于二地址指令,结果直接存放在A3中
        需要访问4次存储器:
            取指令(1次)
            取两个操作数(2次)
            存放结果(1次)
    2.5 四地址指令
        OP A1 A2 A3(结果) A4(下址)
        指令用途︰算术和逻辑运算指令,相对于三地址指令多了下一条执行命令的地址(A4)


3.按指令长度分类
    3.1 指令字长:一条指令的总长度(可能会变)
    3.2 机器字长:CPu进行一次整数运算所能处理的二进制数据的位数(通常和ALU直接相关)
    3.3 存储字长:一个存储单元中的二进制代码位数(通常和MDR位数相同)
        单字长指令︰长度等于机器字长
        双字长指令∶长度等两倍机器字长
        半字长指令:长度等于半个机器字长


4.按操作码长度分类
        4.1 定长指令字结构∶所有指令长度相同
            控制器的译码电路设计简单,但灵活性较低
        4.2 变长指令字结构∶各种指令的长度不同    
            控制器的译码电路设计复杂,但灵活性较高


5.按操作类型分类
    5.1 数据传送:进行主存为CPU之间的数据传送
        LOAD  作用:把存储器中的数据放到寄存器中
        STORE 作用:把寄存器中的数据放到存储器中
    5.2 算术逻辑操作:运算类        
        算术:加、减、乘、除、增1、减1、求补、浮点运算、十进制运算
        逻辑:与、或、非、异或、位操作、位测试、位清除、位求反
    5.3 移位操作
        算术移位、逻辑移位、循环移位(带进位和不带进位)
    5.4 转移操作:改变程序执行的顺序
        无条件转移JMP
        条件转移Jz:结果为0;JO:结果溢出;JC:结果有进位
        调用和返回CALL和RETURN
        陷阱(Trap)与陷阱指令
    5.5 输入输出操作:进行CPU和I/O设备之间的数据传送
        CPu寄存器与IO端口之间的数据传送(端口即IO接口中的寄存器)

2.定长操作码指令格式

优点∶定长操作码对于简化计算机硬件设计,提高指令译码和识别速度很有利


缺点︰指令数量增加时会占用更多固定位,留给表示操作数地址的位数受限

3.扩展操作码指令格式

实现︰全部指令的操作码字段位数不固定,分散在指令字的不同位置上
    足长指令字结构+可变长操作码

优点:丰富了指令的种类

缺点:增加了指令译码和分析难度,控制器设计变的复杂

注意∶1.短码不能是长码的前缀    2.指令操作码不能重复

二:指令寻址方式

1指令寻址和数据寻址

指令寻址:确定下一条要执行的指令的存放地址;由程序计数器PC指明
    顺序寻址:通过程序计数器(PC)加1,自动生成下一条指令的地址
            此处的"1"要理解为1个指令字长
            每次取指令结束后,一定会PC+"1"
    跳跃寻址:通过转移类指令实现,是否跳跃受到状态寄存器和操作数的控制
             执行转移类指令导致的PC值改变
                 跳跃到的地址分类:跳跃的结果是当前指令修改pc值
                    绝对地址:由标记符直接得到
                    相对地址:相对于当前指令地址的偏移量


数据寻址:确定本条指令的地址码指明的真实地址
    在指令中表示一个操作数的地址
    结构∶操作码+寻址特征+形式地址A

2.常见的数据寻址方式

隐含寻址:不访存
    不显示的给出操作数地址,在指令中隐含操作数地址
    优点:有利于缩短指令字长
    缺点:增加存储操作数或隐含地址的硬件


立即(数)寻址:不访存
    地址字段给出的不是操作数的地址,而是操作数本身,又称为立即数
    优点:不需要访问主存,指令执行时间最短。
    缺点:位数限制了立即数的范围


直接寻址:访存1次
    指令字中的形式地址就是真实地址
    优点:访问一次主存,不需要专门计算操作数的地址
    缺点:形式地址的位数限制了寻址范围,操作数地址不易修改


间接寻址:
    指令的地址字段给出存储地址信息的地址(类似于套娃)
    优点:扩大了寻址范围,方便编制程序
    缺点︰需要多次访存,访问速度过慢,这种寻址方式不是特别常用
    一般问到扩大寻址范围,通常指寄存器间接寻址访存多次(具体看几次间接寻址)


寄存器寻址:不访存
    指令字中直接给出操作数所在的寄存器编号
    优点:不访问主存,执行速度快,支持向量/矩阵运算
    缺点∶寄存器价格高昂,寄存器中的寄存器个数有限

 偏移寻址

基址寻址(多道程序):将CPU中基址寄在器(BR)的内容加上指令格式中的形式地址A,而形成操作数的有效地址,即EA=(BR)+A
        注:基址寄存器是面向操作系统的,其内容由操作系统或管理程序确定。
          在程序执行过程中,基址寄存器的内容不变(作为基地址),形式地址可变(作为偏移量)。



变址/偏移寻址(循环程序 数组问题):有效地址EA等于指令字中的形式地址A与变址寄存器x的内容相加之和,即EA=(IX)+A,
        其中Ix可为变址寄存器(专用),也可用通用寄存器作为变址寄存器
        注:变址寄存器是面向用户的,在程序执行过程中,变址寄存器的内容可由用户改变(lX作为偏移量),
           形式地址A不变(作为基地址)


基址&变址复合寻址
    先基址后变址寻址:EA=(IX)+((BR)+A)


相对寻址(转移指令):把程序计数器Pc的内容加上指令格式中的形式地址A而形成操作数的有效地址,
        即EA=(PC)+A,其中A是相对于Pc所指地址的位移量,可正可负,补码表示。
        优点:操作数的地址不是固定的,它随着Pc值的变化而变化,并且与指令地址之间总是相差一个固定值,        
             因此便于程序浮动(一段代码在程序内部的浮动相对寻址广泛应用于转移指今

堆栈寻址 

堆栈寻址:操作数存放在堆栈中,隐含使用堆栈指针(SP)作为操作数地址
        堆栈是存储器(或专用寄存器组)中一块特定的按“后进先出(LIFO)”原则管理的存储区,
        该存储区中被读/写单元的地址是用一个特定的寄存器给出的,该寄存器称为堆栈指针(SP)。

 ​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

三:CISC和 RISC概念(两种设计方法)

基本概念:
    指令系统
        CISC:复杂庞大
        RISC:精简简单
    指令数目
        CISC:大于200条
        RISC:小于100条
    指令字长
        CISC:不固定
        RISC:定长
    访存指令
        CISC:不加限制
        RISC:只有load和store
    指令执行时间
        CISC:相差较大
        RISC:绝大多数在一个周期内完成
    指令的使用频度
        CISC:相差很大
        RISC:绝大多数在一个周期内完成
    通用寄存器的数量
        cISC:较少
        RISC:较多
    目标代码
        CISC:难以优化编译生成高效目标代码
        RISC:采用优化编译程序,生成代码高效
    控制方式
        CISC:绝大多数采用微程序控制
        RISC:绝大多数采用组合逻辑控制
    指令流水线
        CISC:可以实现
        RISC:必须实现


RISC优点
    采用组合逻辑控制,硬布线使用较少
    运算速度更快
    设计方便,可靠性高,机器设计周期短,逻辑简单
    有利于编译程序代码优化

猜你喜欢

转载自blog.csdn.net/liu17234050/article/details/124112083