【计算机组成原理】-指令系统

2024-01-12 05:44

本文主要是介绍【计算机组成原理】-指令系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

🎵1.指令的发展

🌈1.1基础概念

  • 计算机的程序是由一系列的机器指令组成的指令就是要计算机执行某种操作的命令
  • 从计算机的层次结构来说,有微指令,机器指令和宏指令之分。微程序中用到微指令,属于硬件,而宏指令是若干条机器指令组成的软件指令,属于软件。机器指令介于二者间,通常简称指令。
  • 每一条指令可完成一独立的算术运算和逻辑运算操作。

1.2🌈CISC到RISC

CISC叫做复杂指令集系统计算机,因为当时的计算机指令系统多达几百条,如此庞大的指令系统不但使计算机的研制周期变长,而且采用了大量使用频率很低而且复杂指令而造成硬件资源浪费。后来又设计了精简指令系统计算机RISC。

  • 出现从CISC(Complex Instruction Set Computer,复杂指令集计算机)到RISC(Reduced Instruction Set Computer,精简指令集计算机)的转变(课本问题主要是为了提高计算机的性能和效率,并简化计算机体系结构的设计和实现。

以下是一些主要原因和动机:

  1. 简化指令集:CISC体系结构中的指令集非常复杂,涵盖了大量的指令和复杂的地址模式。这样的复杂性导致了设计、实现和调试的困难,同时也增加了指令的执行时间和资源消耗。相比之下,RISC体系结构采用了更加简化和统一的指令集,减少了指令的种类和复杂性,使得指令的解码和执行更加高效。

  2. 提高指令执行速度:CISC体系结构中的指令通常具有不同的执行时间,导致部分指令执行较慢,影响了整体的性能。而RISC体系结构的指令执行时间相对均匀,使得指令的执行更加预测性和高效,从而提高了计算机的性能。

  3. 硬件优化:CISC体系结构中的复杂指令需要更多的硬件资源和逻辑电路来实现,增加了设计和制造的成本。相比之下,RISC体系结构采用了简化的指令集,可以更好地利用硬件资源,提供更高的性能和效率。

 🎵2.指令格式

当控制器从主存储器中获取指令后,它会解析指令的信息字段(操作码和操作数字段),并生成相应的控制信号。这些控制信号会被发送给运算器和其他功能部件,以指示它们执行特定的操作。

那控制器是如何解析指令的?或者它是怎么知道指令的那一部分代表什么含义?所以就需要规定一下指令的格式。

  • 机器指令是机器字来表示的。表示一条指令的机器字,叫做指令字,简称指令。

🌈 2.1操作码

 设计计算机时,对指令系统的每一条指令都要规定一个操作码。指令的操作码表示该指令进行什么性质的操作:加法,乘法等。

不同的指令用操作码字段的不同编码表示,每一种编码表示一种指令。

CPU中有专门的电路来解释每一个操作码,因此机器就能执行操作码表示的操作。

对于一个机器的指令系统,在指令字中操作码字段和地址码字段长度通常是固定的。

 

 🌈2.2地址码

地址码(Addressing Mode)是指令集架构中用于指定操作数地址或操作数本身的编码方式。它决定了计算机在执行指令时如何获取操作数的位置或值。

🍄地址指令 

根据一条指令中有几个操作数地址可以将改指令称为几地址指令。一般包括(零地址,一地址,二地址,三地址指令)

 一定注意:地址码A1中存放的是操作数的地址不是操作数本身,这里的操作数可不是操作码,这个一会我介绍一下二者。

 

🍄操作数和操作码的区别

  1. 名字不一样 
  2. 定义和作用:操作码是指令中的一部分,用于表示指令的操作类型或功能。它指定了计算机执行的具体操作,例如算术运算、逻辑运算、数据传输等。操作码决定了计算机在执行指令时要执行的操作类型。操作数则是用于进行操作的数据或值,它是指令操作的输入或输出。

  3. 功能:操作码决定了指令的操作类型,而操作数则提供了操作所需的数据或值。操作码告诉计算机要执行的操作,操作数提供了操作所需的具体数据。例如,一个加法指令的操作码表示加法操作,而操作数可以是要相加的两个数。

就是说操作码告诉设备你该干什么操作:加减乘除哪一种,而操作数就例如加数,被除数啊这类的。

 🌈2.3扩展操作码

(了解一下,我们考试考,书上没有)

  1. 在传统的固定长度操作码中,每个指令都有固定的位数分配给操作码,例如8位或16位。但是,在某些指令集架构中,为了提供更灵活的指令编码和更多的操作命令,可以采用变长操作码的方式。
  2. 在变长操作码中,不同指令的操作码字段可以具有不同的位数。这样可以根据实际需求动态地分配更多或更少的位数给不同的指令。

 学过计算机网络没,IP地址不是由网络号+主机号吗?一般扩展网络号就是把主机号的一部分地方给网络号,这个跟他相似。

注意,机器字长固定,而操作码数不固定,不要搞错。 

 

 

 

🐠对比 

 🐠总结:

 

 🎵3.指令和数据数据的寻址方式

寻址包括指令寻址数据寻址两大类。

  • 指令寻址:确定下一条要执行指令地址。
  • 数据寻址:确定本条指令的操作数地址。

🌈3.1指令寻址

  •  指令寻址是确定下一条要执行指令的地址。
  • 在计算机中,指令寻址是通过指令指针(Instruction Pointer)或程序计数器(Program Counter,PC)来实现的。指令指针或程序计数器是一个特殊的寄存器,它存储着下一条要执行的指令的地址。
  • 包括:顺序寻址和跳跃寻址。
  1. 顺序寻址:顺序寻址是指按照连续的地址顺序依次执行指令的寻址方式。在顺序寻址中,每条指令的地址是前一条指令的地址加上固定的偏移量(通常是指令的长度)。

    顺序寻址适用于按顺序执行的程序,其中每条指令的地址都可以通过前一条指令的地址计算得到。

  2. 跳跃寻址:跳跃寻址是指通过跳转指令或分支指令在程序中非顺序地跳转到指定的目标地址的寻址方式。跳跃寻址用于改变程序的执行流程,使程序可以根据条件或需要跳转到其他位置执行。

指令寻址比较简单,这里就重点介绍数据数据寻址了。

🌈3.2数据寻址

数据寻址是为了确定本条指令的执行地址。

 🐠1隐含寻址:

🐠2立即寻址

🐠3直接寻址

🐠4间接寻址

🐠5寄存器寻址

🐠6寄存器间接寻址

🐠7偏移寻址

(图没搞到兄弟们,抱歉!) 

🐠8相对寻址

 

🎵4.总结 

🌈4.1小结

🌈4.2本章总结 

 

  1.  一台计算机中所有机器指令的集合,称为这台计算机的指令系统。指令系统是表征一台计算机性能的重要因素,它的格式与功能不仅直接影响到机器的硬件结构,而且影响到系统软件。
  2. 指令格式是指令字用二进制代码表示的结构形式。通常由操作码字段和地址码字段构成。操作码字段表征指令的操作特性与功能,地址码字段知识操作数的地址。目前多用零地址,单地址,二地址混合表示的指令格式。
  3. 形成指令地址的方式,称为指令寻址方式。有顺序寻址跳跃寻址两种。由指令计数器跟踪。
  4. 形成操作数地址的方式,称为数据寻址方式。操作数可放在专用寄存器,通用寄存器,内存和指令中。按操作数的物理位置不同,有RR,RS两种类型。前者比后者执行的速度快。

 

这篇关于【计算机组成原理】-指令系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/596979

相关文章

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

JAVA封装多线程实现的方式及原理

《JAVA封装多线程实现的方式及原理》:本文主要介绍Java中封装多线程的原理和常见方式,通过封装可以简化多线程的使用,提高安全性,并增强代码的可维护性和可扩展性,需要的朋友可以参考下... 目录前言一、封装的目标二、常见的封装方式及原理总结前言在 Java 中,封装多线程的原理主要围绕着将多线程相关的操

kotlin中的模块化结构组件及工作原理

《kotlin中的模块化结构组件及工作原理》本文介绍了Kotlin中模块化结构组件,包括ViewModel、LiveData、Room和Navigation的工作原理和基础使用,本文通过实例代码给大家... 目录ViewModel 工作原理LiveData 工作原理Room 工作原理Navigation 工

Java的volatile和sychronized底层实现原理解析

《Java的volatile和sychronized底层实现原理解析》文章详细介绍了Java中的synchronized和volatile关键字的底层实现原理,包括字节码层面、JVM层面的实现细节,以... 目录1. 概览2. Synchronized2.1 字节码层面2.2 JVM层面2.2.1 ente

MySQL的隐式锁(Implicit Lock)原理实现

《MySQL的隐式锁(ImplicitLock)原理实现》MySQL的InnoDB存储引擎中隐式锁是一种自动管理的锁,用于保证事务在行级别操作时的数据一致性和安全性,本文主要介绍了MySQL的隐式锁... 目录1. 背景:什么是隐式锁?2. 隐式锁的工作原理3. 隐式锁的类型4. 隐式锁的实现与源代码分析4

MySQL中Next-Key Lock底层原理实现

《MySQL中Next-KeyLock底层原理实现》Next-KeyLock是MySQLInnoDB存储引擎中的一种锁机制,结合记录锁和间隙锁,用于高效并发控制并避免幻读,本文主要介绍了MySQL中... 目录一、Next-Key Lock 的定义与作用二、底层原理三、源代码解析四、总结Next-Key L

Spring Cloud Hystrix原理与注意事项小结

《SpringCloudHystrix原理与注意事项小结》本文介绍了Hystrix的基本概念、工作原理以及其在实际开发中的应用方式,通过对Hystrix的深入学习,开发者可以在分布式系统中实现精细... 目录一、Spring Cloud Hystrix概述和设计目标(一)Spring Cloud Hystr

MySQL中的MVCC底层原理解读

《MySQL中的MVCC底层原理解读》本文详细介绍了MySQL中的多版本并发控制(MVCC)机制,包括版本链、ReadView以及在不同事务隔离级别下MVCC的工作原理,通过一个具体的示例演示了在可重... 目录简介ReadView版本链演示过程总结简介MVCC(Multi-Version Concurr