指令集与单片机的小故事

举报
Jack20 发表于 2021/07/20 17:12:57 2021/07/20
【摘要】 工作原理设计       如果要去造一台计算机的话,那计算机所要具备的最重要的功能就是计算了。所以,在硬件开发当中,开发者会通过对于硬件电路的开发设计来实现计算的相关功能。寄存器,将数据或想要运行的指令先存储起来,以此来实现记忆以及循环操作的功能。当电路拥有了一些不同的部分之后,就已经构成一个完整的计算机电路了。并且现代所有的计算机都是基于这个原则来进行设计的,只不过是在于电路的复杂程度不一...

工作原理设计 

      如果要去造一台计算机的话,那计算机所要具备的最重要的功能就是计算了。所以,在硬件开发当中,开发者会通过对于硬件电路的开发设计来实现计算的相关功能。寄存器,将数据或想要运行的指令先存储起来,以此来实现记忆以及循环操作的功能。当电路拥有了一些不同的部分之后,就已经构成一个完整的计算机电路了。并且现代所有的计算机都是基于这个原则来进行设计的,只不过是在于电路的复杂程度不一样而已。当开发者想要去实现不同功能的时候,其实就相当于实现了某一个程序。程序的运行过程其实是通过一系列最简单的指令集合,通过一个个步骤来完成对于计算机数据的处理,所以另一个在单片机中最重要概念就是指令集。 

指令集

      在计算机中,指示计算机硬件执行某种运算、处理功能的命令称为指令。指令是计算机运行的最小的功能单位,而硬件的作用是完成每条指令规定的功能。一台计算机上全部指令的集合,就是这台计算机的指令系统。指令系统也称指令集,是这台计算机全部功能的体现。而人们设计计算机首要考虑的是它拥有的功能,也就是首先要按功能档次设计指令集,然后按指令集的要求在硬件上实现。指令系统不仅仅是指令的集合,还包括全部指令的指令格式、寻址方式和数据形式。

      指令集体系结构(Instruction Set Architecture,ISA),是软件和硬件之间接口的一个完整定义。ISA定义了一台计算机可以执行的所有指令的集合,每条指令规定了计算机执行什么操作,所处理的操作数存放的地址空间以及操作数类型。

image.png

      ISA规定的内容包括数据类型及格式,指令格式,寻址方式和可访问地址空间的大小,程序可访问的寄存器个数、位数和编号,控制寄存器的定义,/o空间的编制方式,中断结构,机器工作状态的定义和切换,输入输出结构和数据传送方式,存储保护方式等。

      计算机组成是指计算机主要功能部件的组成结构、逻辑设计及功能部件间的相互连接关系。计算机系统结构的经典定义是指程序设计者(主要指低级语程序员或编译程序设计者)所看到的计算机系统的属性,即计算机的功能特性和概念性结构,也称指令体系结构指令集体系结构(Instruction Set Architecture, ISA),是软件和硬件之间接口的一个完整定义。ISA定义了一台计算机可以执行的所有指令的集合,每条指令规定了计算机执行什么操作,所处理的操作数存放的地址空间以及操作数类型。ISA规定的内容包括数据类型及格式,指令格式,寻址方式和可访问地址空间的大小,程序可访问的寄存器个数、位数和编号,控制寄存器的定义,I/O空间的编制方式,中断结构,机器工作状态的定义和切换,输入输出结构和数据传送方式,存储保护方式等。因此,可以看出,指令集体系结构是指软件能够感知到的部分,也称软件可见部分。ISA处于硬件和软件的交界面上,硬件所有的功能都有ISA集中体现,软件通过ISA在计算机上执行。所以,ISA是整个计算机系统中的核心部分。

通常指令集分为两种,复杂指令集和精简指令集

      1、CISC(复杂指令集):指令集较丰富,对特殊任务有专用的特殊指令,执行特殊功能(科学计算之类的)也就是说指令集里面的每个指令较长,每个指令都分成好几个微指令来处理,正是因为指令集丰富所以在开发程序时较简单,但在执行时效率较低,处理数据时速度较慢,使得译 码器翻译二进制代码时较慢。

      2、RISC(精简指令集计算机):注重的是指令集的优化,RISC的攻计看对哪吊用的指令进行优化使它们更加简单高效,对于那些不常用的指令会将具组合起来去买现某些特殊的功能,所以RISC指令集位数较短,所以执行效率高,译码和处理数据较快。

      RISC 的设计初衷针对 CISC CPU 复杂的弊端,选择一些可以在单个 CPU 周期完成的指令,以降低 CPU 的复杂度,将复杂性交给编译器。举一个例子,CISC 提供的乘法指令,调用时可完成内存 a 和内存 b 中的两个数相乘,结果存入内存 a,需要多个 CPU 周期才可以完成;而RISC 不提供“一站式”的乘法指令,需调用四条单 CPU 周期指令完成两数相乘:内存 a 加载到寄存器,内存 b 加载到寄存器,两个寄存器中数相乘,寄存器结果存入内存 a。按照此思路,早期的设计出的 RISC 指令集,指令数是比 CISC 少些,但后来,很多 RISC 的指令集中指令数反超了 CISC,因此,引用指令的复杂度而非数量来区分两种指令集。

      当然,CISC 也是要通过操作内存、寄存器、运算器来完成复杂指令的。它在实现时,是将复杂指令转换成了一个微程序,微程序在制造 CPU 时就已存储于微服务存储器。一个微程序包含若干条微指令(也称微码),执行复杂指令时,实际上是在执行一个微程序。这也带来两种指令集的一个差别,微程序的执行是不可被打断的,而 RISC 指令之间可以被打断,所以理论上 RISC 可更快响应中断。

      所以,RISC 的优点就在于在使用相同的晶片技术和相同运行时钟下,RISC 系统的运行速度将是 CISC 的 2~4 倍。由于 RISC 处理器的指令集是精简的,它的记忆体管单元、浮点单元等都能设计在同一块晶片上。RISC 处理器比相对应的 CISC 处理器设计更简单,所需要的时间将变得更短,并可以比 CISC 处理器应用更多先进的技术,开发更快的下一代处理器。

处理单元

      设计的计算机有了一定的工作原理和指令集之后,就需要对负责计算的集成电路,处理单元有一定的了解。现代可编程设备可以被分为微处理器(Microprocessor, MPU)和微控制器(Microcontroller, MCU)。其中微处理器通常就是 CPU,它常被用来处理大规模,复杂程度非常高的计算。微处理器的特点就在于它只能用来处理数据,其他必要的存储器等部件必须外接才能使用。

从家里老电脑拆了几个下来:

微处理器(Microprocessor, MPU)

微控制器(Microcontroller, MCU)

      与微处理器相比,微控制器就是一个非常完整的设备,也就是上文提到过的单片机。它其中包含了 CPU、存储器和一系列输入输出的设备。由于微控制器当中 CPU 的计算能力相比于MPU 一般来说要弱很多,所以它一般设计为一些低功耗的嵌入式设备所使用。除此之外,微控制器和微处理器之间另一个比较大的区别就在于 CPU 的时钟频率不同。由于MPU 通常被设计用于高复杂度的任务计算,所以它的时钟频率相对来讲是比较高的。而MCU 通常被用在一些低功耗设备或一些无复杂计算能力的物联网设备上,为了保证使用时长,所以 MCU 当中的 CPU 通常时钟频率较低。

单片机架构

      单片机的架构总共可以分为四个不同的部分:CPU、存储器、输入输出接口和系统总线。本小节将对这些不同的部分逐个进行介绍,首先是 CPU,CPU 主要是用来负责数据的处理用于计算,它在单片机当中用来控制整一个系统,它串行地读取并解码程序指令,执行需要处理器的任务,并且为其余部分任务生成控制信号。它执行所有算术和逻辑运算,并且具有相同处理器的微控制器可以执行相同的程序。

      存储系统当中所包含的就是存储器和地址解码电路,其中存储器会被分为两个不同的类别。其中之一是随机存储器,又叫 RAM(Random Access Memory),它用来存储运行在程序当中的数据等等,它的特点就在于断电之后所有的数据都会消失。除了 RAM 之外的另一个叫做只读存储器,又叫 ROM(Read Only Memory),它用来存储需要被单片机执行的程序,并且它的特点就在于断电之后数据不会消失,它会被一直保存在存储器当中。ROM 和 RAM 的区别就在于 RAM 类似于电脑的内存,本身不保存数据,但是日常使用必然会占用它的空间缓存数据。而 ROM 就是电脑的硬盘,它被用来存放大量的数据,并且电脑关机后,硬盘当中的数据也不会消失。

      输入输出接口就是用来和外部设备相连接的接口,比方说数字 IO,模拟 IO 等等,开发者可以使用数据线或其他设备对其与外部进行连接。 

      总线的作用如同电路当中的导线,它可以将各个部分都连接起来并进行数据的通信。通常情况下,总线可以被分为三类:数据总线、地址总线和控制总线。数据总线顾名思义,就是用于在 CPU、存储器和外界设备之间传递数据的。地址总线是选择处理器需要读取或写入到特定存储器位置的一条总线,并且它的特点就在于地址总线的数据流动方向是单向的,是从 CPU 到地址总线,再从地址总线到存储器。

      最后一个控制总线主要就是用于控制或信令数据的传输。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。