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

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

相关文章

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

hdu4407(容斥原理)

题意:给一串数字1,2,......n,两个操作:1、修改第k个数字,2、查询区间[l,r]中与n互质的数之和。 解题思路:咱一看,像线段树,但是如果用线段树做,那么每个区间一定要记录所有的素因子,这样会超内存。然后我就做不来了。后来看了题解,原来是用容斥原理来做的。还记得这道题目吗?求区间[1,r]中与p互质的数的个数,如果不会的话就先去做那题吧。现在这题是求区间[l,r]中与n互质的数的和

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

hdu4407容斥原理

题意: 有一个元素为 1~n 的数列{An},有2种操作(1000次): 1、求某段区间 [a,b] 中与 p 互质的数的和。 2、将数列中某个位置元素的值改变。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.Inpu

hdu4059容斥原理

求1-n中与n互质的数的4次方之和 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWrit

寻迹模块TCRT5000的应用原理和功能实现(基于STM32)

目录 概述 1 认识TCRT5000 1.1 模块介绍 1.2 电气特性 2 系统应用 2.1 系统架构 2.2 STM32Cube创建工程 3 功能实现 3.1 代码实现 3.2 源代码文件 4 功能测试 4.1 检测黑线状态 4.2 未检测黑线状态 概述 本文主要介绍TCRT5000模块的使用原理,包括该模块的硬件实现方式,电路实现原理,还使用STM32类

计算机视觉工程师所需的基本技能

一、编程技能 熟练掌握编程语言 Python:在计算机视觉领域广泛应用,有丰富的库如 OpenCV、TensorFlow、PyTorch 等,方便进行算法实现和模型开发。 C++:运行效率高,适用于对性能要求严格的计算机视觉应用。 数据结构与算法 掌握常见的数据结构(如数组、链表、栈、队列、树、图等)和算法(如排序、搜索、动态规划等),能够优化代码性能,提高算法效率。 二、数学基础

TL-Tomcat中长连接的底层源码原理实现

长连接:浏览器告诉tomcat不要将请求关掉。  如果不是长连接,tomcat响应后会告诉浏览器把这个连接关掉。    tomcat中有一个缓冲区  如果发送大批量数据后 又不处理  那么会堆积缓冲区 后面的请求会越来越慢。

PHP原理之内存管理中难懂的几个点

PHP的内存管理, 分为俩大部分, 第一部分是PHP自身的内存管理, 这部分主要的内容就是引用计数, 写时复制, 等等面向应用的层面的管理. 而第二部分就是今天我要介绍的, zend_alloc中描写的关于PHP自身的内存管理, 包括它是如何管理可用内存, 如何分配内存等. 另外, 为什么要写这个呢, 因为之前并没有任何资料来介绍PHP内存管理中使用的策略, 数据结构, 或者算法. 而在我们

Smarty模板执行原理

为了实现程序的业务逻辑和内容表现页面的分离从而提高开发速度,php 引入了模板引擎的概念,php 模板引擎里面最流行的可以说是smarty了,smarty因其功能强大而且速度快而被广大php web开发者所认可。本文将记录一下smarty模板引擎的工作执行原理,算是加深一下理解。 其实所有的模板引擎的工作原理是差不多的,无非就是在php程序里面用正则匹配将模板里面的标签替换为php代码从而将两者