【计算机组成原理】指令系统总结——基本知识要点汇总

halo~我是bay_Tong桐小白
本文内容是桐小白个人对所学知识进行的总结和分享,知识点会不定期进行编辑更新和完善,了解最近更新内容可参看更新日志,欢迎各位大神留言、指点

【更新日志】

最近更新:

计算机统考408考纲要求

2021计算机统考408考纲计算机组成原理学科考察目标

  • 理解单处理器计算机系统中各部件的内部工作原理、组成结果以及相互连接方式,具有完整的计算机系统的整机概念
  • 理解计算机系统层次化结构概念,熟悉硬件与软件之间的界面,掌握指令集体系结构的基本知识和基本实现方法
  • 能够综合运用计算机组成的基本原理和基本方法,对有关计算机硬件系统中的理论和实际问题进行计算、分析,对一些基本部件进行简单设计,并能对高级程序设计语言(如C语言)中的相关问题进行分析

2021计算机统考408计算机组成原理考纲变动情况
在这里插入图片描述
2021计算机统考408考纲对指令系统部分考察要求
在这里插入图片描述

指令系统概述

指令:

  • 计算机能直接识别、执行的操作命令(机器指令)
  • 是冯诺依曼结构计算机“程序控制”原理实现的载体
  • 是软、硬件界面和程序员操作计算机硬件的接口
  • 是硬件设计的依据,是软件设计的基础,直接影响计算机系统的性能

指令系统(指令集): 一台计算机中所有机器指令的集合

  • 系列机:同一公司不同时期生产,系统结构和指令系统基本相同的计算机(向下兼容性)
  • 兼容机:不同公司生产,系统结构和指令系统基本相同的计算机

指令字长:

  • 指令中包含的二进制位数
  • 决定于操作码的长度、操作数地址的长度、操作数的个数
  • 与机器字长相比可分为:单字长指令、双字长指令、半字长指令等长度指令
  • 多字长指令:解决寻址较大存储空间的问题(扩展指令长度),但取指令的访存次数较多,影响速度,占用空间大
  • 等长指令:指令字长度固定,对硬件的设计简化有利
  • 变长指令:指令字长度根据需要可变

指令分类:

  • 根据计算机层次结构分类
    在这里插入图片描述
  • 根据指令中地址码字段的个数分类
    在这里插入图片描述
  • 根据指令中操作数的物理位置分类在这里插入图片描述
  • 根据指令的功能分类
    在这里插入图片描述

指令的存储: 大端模式与小端模式(详细见本栏文章《存储器层次结构总结——基本知识要点汇总》大端和小端数据存放方式部分)

指令格式

指令基本格式

操作码:指出指令所进行的操作

地址码:表示参加运算的数据应从存储器的哪个单元取,运算的结果应存到哪个单元
在这里插入图片描述

  • 操作码字段的位数与支持的最大指令数量有关
  • 寻址方式字段的位数与支持的寻址方式种类有关
  • 地址码字段的作用及影响与其位数和寻址方式有关

在指令系统中若所有指令的长度相同,则称为等长指令;相应的如果指令系统中指令的长度不相同,则称为变长(不等长)指令

等长指令方便设计;不等长指令节约存储空间

等长指令格式

优点: 定长指令结构规整,有利于简化硬件,尤其是指令译码部件的设计

不足: 定长指令平均长度长,容易出现冗余码点和指令不易扩展等不足

在等长指令系统中,指令可以采用固定长度的操作码(即定长操作码),也可以采用长度不固定的操作码(即扩展/变长操作码)

定长操作码指令格式

在这里插入图片描述

假定操作码占m位,则最多表示2m个不同指令

扩展(变长)操作码指令格式

定长指令中将操作码位数扩展至操作数地址码字段(即将用不到的地址码位数并入到操作码中用作操作码),或将操作数位数向前扩展至操作码字段(即将操作码左移,将操作码用不到的位数并入到操作数地址码中用作地址码)
在这里插入图片描述

变长指令格式

各种指令字的长度随指令功能的不同而不同,如指令可分为单字长指令、半字长指令或多字长指令

优点: 变长指令结构灵活,能充分利用指令中的每一位,因此指令码点冗余少,指令的平均长度短,易于扩展

不足: 但由于格式不规整,不同指令的取指事件可能不同,导致控制复杂

混合编码指令格式

混合编码指令格式是定长指令格式和变长指令结构的综合,它提供若干长度固定的指令字,以期达到既能减少目标代码的长度又能降低译码复杂度的目标

指令和操作数的寻址方式

基本概念:

  • 寻址方式:确定本条指令的操作数地址或下一条要执行指令的指令地址,直到程序结束
  • 寻址方式的划分:指令寻址、操作数寻址(即指令中数据的寻址)
  • 程序计数器PC:用于存放下一条指令所在单元的地址。ARM型CPU中为程序计数器PC,X86型CPU中为指令指针寄存器IP,用于控制程序中指令的执行顺序

指令寻址

顺序寻址

指令在内存中是顺序存放,当执行一段程序时,通常是一条指令接一条指令地顺序执行。程序计数器PC(指令指针寄存器IP)每执行一条指令,PC+1(“1”指存储1条指令所占用的字节单元数,和编址方式有关),指向下一条欲执行指令的指令地址,这种程序顺序执行的过程称为指令的顺序寻址

跳跃寻址

当程序执行循环指令或转移指令等指令时,指令的寻址采用跳跃寻址方式,即下一条指令的地址不是由程序计数器PC+1产生,而是将本条指令给出的目标地址直接装入PC给出

操作数寻址(数据寻址)

基本概念:
在这里插入图片描述

  • 形式地址:指令字中的地址
  • 有效地址:操作数的真实内存地址

地址码字段通常为形式地址,形式地址与有效地址间需要进行转换,寻址过程就是把操作数的形式地址根据寻址方式转换为操作数的有效地址的过程,寻址方式由寻址特征位标识

立即寻址(立即数寻址)

  • 形式地址就是操作数,一般以补码形式进行表示
  • 取指操作将数据与指令一并读入CPU内部的寄存器,即只取指令访存一次,执行阶段不访存
  • 优点:数据直接送给CPU,因此在指令执行阶段不访存,取指操作将数据与指令一并读入CPU内部的寄存器,指令执行速度快,便于程序设计(如变量赋初值)
  • 缺点:形式地址的位数限制的立即数的范围
  • 一般为双字长指令

直接寻址(直接内存寻址)

  • 形式地址就是有效地址
  • 以一地址指令为例
    在这里插入图片描述
    执行过程为直接利用有效地址访问对应内存,从内存单元中将操作数取出并对其完成操作码的操作,之后送到寄存器,即执行阶段需要访存一次
  • 优点:操作数地址直接给出不需要变换,实现简单
  • 缺点:形式地址的位数决定了该指令操作数的寻址范围,且操作数的地址不易修改
  • 通常为双字长指令

间接寻址

  • 通过地址码字段中的形式地址访问主存一次,获得有效地址,再基于有效地址进行二次访问内存,才能获得操作数(以速率换访存范围),即执行阶段最少访问主存两次,也可能进行多次间址
  • 优点:可扩大寻址范围,便于编制程序
  • 缺点:多次访问主存,访问速率过慢

寄存器寻址

  • 操作数不放在内存中,而是放在CPU的通用寄存器中,指令中给出的操作数地址是通用寄存器的编号
  • 优点:操作数在寄存器中,指令执行速度快;能访问的数据大小一般与计算机字长有关,不受形式地址的限制

寄存器间接寻址

  • 地址码在字段给出的是寄存器编号,通过地址码字段中的形式地址访问寄存器一次,获得有效地址,再基于有效地址访问内存获得操作数(解决间接寻址两次访问主存速度慢的问题)
  • 便于编制循环程序

【立即数寻址、直接内存寻址、寄存器寻址、寄存器间接寻址为最基本的四种指令数据寻址方式(即每种计算机均包含)】

计算机中指令等数据均以二进制进行表示,为了方便程序员使用和编写,可使用指令助记符进行标识,例如移动指令的助记符可为MOV。使用指令助记符进行一项指令功能完整的标识,即为一条指令

以x86架构指令系统为例,部分汇编指令如下:
在这里插入图片描述
汇编指令相关内容以及x86架构CPU寄存器等相关内容详细见桐小白《微机原理与接口技术》专栏文章《汇编语言程序设计初步——debug编写调试指令序列》

隐含寻址

  • 寻址方式隐含在操作码中或者操作数地址隐含在操作码中

偏移寻址

相对寻址: 把程序计数器PC的内容加上指令格式中的形式地址形成操作数的有效地址。程序计数器的内容就是当前指令的地址,形式地址通常称为偏移量(可正可负,补码形式给出)。相对寻址,就是相对于当前的指令地址进行浮动

  • 形式地址的位数决定操作数的寻址范围
  • 广泛用于转移指令
  • 程序员无需用指令的绝对地址编程

基址寻址方式: 将CPU中基址寄存器的内容加上指令格式中的形式地址形成操作数的有效地址

  • 基址寄存器可采用CPU内的一个专用寄存器作为基址寄存器,位数可比通用寄存器的位数还大,从而可以在较大的存储空间中寻址。也可以用通用寄存器作为基址寄存器,用户可指定哪个通用寄存器作基址寄存器
  • 有利于多道程序设计(动态定位)
  • 对某一程序而言,基址值一旦设定(由操作系统或管理程序指定),在程序的执行过程中将不会改变,因此访问不同数据需修改形式地址

变址寻址方式: 将CPU中某个变址寄存器的内容与形式地址相加形成操作数有效地址,变址寄存器同样可以是CPU中的专用寄存器或者通用寄存器

  • 不改变指令即可改变数据的有效地址,即变址寄存器的内容由用户给出、可变,指令的形式地址不变
  • 便于处理数组、循环等程序的规律性变化问题

堆栈寻址方式

  • 先进后出的存储方法。计算机中堆栈分为串连堆栈、存储器堆栈
  • 串连堆栈:一些计算机的CPU中有一组专门的寄存器,每个寄存器能保存一个字的数据,由专用的寄存器组构成堆栈的存储空间称为串连堆栈(硬堆栈)
  • 存储器堆栈:在计算机中利用一部分主存储器来作为堆栈空间。存储器类型的堆栈中需要一个堆栈指示器SP(CPU中一个专用的寄存器),指示器指定的存储器单元就是堆栈的栈顶(软堆栈)
  • 是一个由高地址向低地址延伸的空间
  • 能够具有程序员要求的任意长度
  • 存储器堆栈的数目由程序员自己决定
  • 可以用对存储器寻址的任何一条指令来对堆栈中的数据进行寻址

以x86架构指令系统为例,部分汇编指令如下:
在这里插入图片描述
汇编指令相关内容以及x86架构CPU寄存器等相关内容详细见桐小白《微机原理与接口技术》专栏文章《汇编语言程序设计初步——debug编写调试指令序列》

CISC和RISC的基本概念

计算机处理器包含有实现各种功能的指令或微指令,指令集越丰富,为微处理器编写程序就越容易,但是丰富的微指令集会影响其性能

CISC: 复杂指令计算机。CISC包括一个丰富的微指令集,这些微指令简化了在处理器上运行的程序的创建。指令由汇编语言所组成,把一些原来由软件实现的常用的功能改用硬件的指令系统实现,编程者的工作因而减少许多,在每个指令期同时处理一些低阶的操作或运算,以提高计算机的执行速度,这种系统就被称为复杂指令系统

在CISC指令集的各种指令中,其使用频率却相差悬殊,大约有20%的指令会被反复使用,占整个程序代码的80%。而余下的80%的指令却不经常使用,在程序设计中只占20%

RISC: 精简指令集计算机。是一种执行较少类型计算机指令的微处理器,起源于80年代的MIPS主机(即RISC机),RISC机中采用的微处理器统称RISC处理器。这样一来,它能够以更快的速度执行操作(每秒执行更多百万条指令,即MIPS)

RISC主要特点:

  • 指令数量相对少,寻址方式相对少
  • 指令格式相对少,指令为等长指令,适合进行流水线操作
  • 读取存储器使用LOAD指令,写存储器使用STORE指令
  • CPU内部的寄存器相对多,用于暂存数据。所有操作在寄存器进行,大大减少访问存储器操作
  • 控制器的设计采用硬件布线

RISC和CISC各有优势,而且界限并不那么明显。现代的CPU往往采用CISC的外围,内部加入了RISC的特性,如超长指令集CPU就是融合了RISC和CISC的优势,成为未来的CPU发展方向之一
在这里插入图片描述

持续更新中……
我是桐小白,一个摸爬滚打的计算机小白

猜你喜欢

转载自blog.csdn.net/bay_Tong/article/details/108873566