嵌入式发展历史

news2025/1/24 14:58:32

MPU、MCU、SoC、Application Processors

在一个电子系统中,处理器占据最重要的位置,被称为中央处理器单元(CPU:Central Processing Unit)。它从IO设备读取数据,处理,然后输出。

CPU的发展历史有两个:MPU、MCU。

  • MPU只是一个处理器,需要搭配内存等非常多的外设才可以构成一个系统。
  • MCU内部有处理器、内存、Flash及其他模块,仅仅需要搭配少量外设就可以构成一个系统。

MPU这一路线,在上世纪80年代非常流行,那时的微型计算机、游戏机都是使用MPU。比如Motorola公司的68000芯片就是一款主流的微处理器(MPU)。
后来MPU逐渐没落,可以认为MPU到现在只剩下了intel、AMD公司x86系列CPU。这类CPU也越来越复杂,称之为“微处理器”似乎不恰当了。在个人电脑领域,可以看到类似下图的主板。主板上插上CPU、内存条、声卡等等就构成了一台计算机。这个主板体积庞大、制造复杂。
在这里插入图片描述

MCU就是把CPU、内存、Flash都集中在一个芯片上,再搭配其他外设备,就可以构成一个完整的系统。
MCU的发展历史经过8位8051单片机、16位AVR单片机、32位STM32单片机等等。

在这里插入图片描述
我们使用的51单片机、STM32单片机,一般都只是处理比较简单的事物,应用场景比较单一。
我们使用的手机,里面的主芯片更加复杂,它既含有CPU,也含有用于数据处理的DSP,用于图形显示的GPU,使用这类主芯片设计出来的电路板更加复杂,它的性能甚至不弱于个人电脑。
在这里插入图片描述
为了与个人电脑区分,这些使用含有MPU电子产品,被称为嵌入式系统、嵌入式板卡、嵌入式产品。
嵌入式板卡就是一台形状不一样的电脑,跟电脑相比,可以引入几个概念:

  1. CPU:在PC机它是一个独立的芯片。在嵌入式系统中,它是芯片的一个单元,跟其他模块比如USB、UART、音频组成一个芯片。
  2. MPU:微处理器单片,其作用等同于PC上使用的CPU,它也仅仅只是一个处理器,需要配合内存、Flash等外设才可以使用。现在除了个人电脑,基本上找不到MPU。并且我们一般不把电脑上的CPU当做MPU,毕竟它不再微小。
  3. MCU:微控制器单元,有时又称为单片机。MCU内部集成了处理器和各类模块,比如USB控制器、UART控制器、内存、Flash等等。只需要外接少量的器件,就可以搭建一个电子系统。C51芯片、STM32等芯片,都是MCU。MCU芯片内部的内存或Flash,容量在几KB、几百KB、几MB的量级,一般不再需要外接内存或Flash。
  4. Application Processors:手机中的主芯片跟MCU类似,也是集成了处理器和各类模块。但是它的性能已经极大提升,可以外接几GB的内存、几GB的Flash。在手机中,这个主芯片一般用来处理显示、输入,运行用户的程序,所以称它为“Application Processors”。

在手机电路板中,可用空间非常小。Application Processors还需要搭配内存芯片才可以使用,于是发展出了一种名为package-on-package (PoP)的工艺:在电路板上先焊接Application Processors,在Application Processors上面再焊接内存芯片,即2个芯片叠在一起。

MCU上一般不运行操作系统,或是运行一些资源耗费较小的小型实时操作系统(RTOS)。
MCU一般用来处理实时性要求高的事情,处理一些比较简单的事情。
Application Processors基本上都会运行比较复杂的操作系统(比如Linux),在操作系统上运行多个APP。

哈佛架构与冯诺依曼架构

在这里插入图片描述
CPU架构可以分为哈弗架构与冯诺依曼架构。哈弗架构中指令与数据分开存放,CPU可以同时读入指令、读写数据。冯诺依曼架构中指令、数据混合存放,CPU依次读取指令、读写数据,不可同时操作指令和数据。

ARM公司的芯片,ARM7及之前的芯片都是冯诺依曼架构,ARM7之后使用“改进的哈弗架构”。
在这里插入图片描述
在改进的哈弗架构里,指令和数据在外部存储器中混合存放,CPU运行时,从指令cache中获得指令,从数据cache中读写指令。

指令集:CISC和RISC

CISC(Complex Instruction Set Computers,复杂指令集计算机)和RISC(Reduced Instruction Set Computers,精简指令集计算机)是两大类主流的CPU指令集类型。

其中CISC以Intel、AMD的x86CPU为代表,而RISC以ARM、IBM Power为代表,开源的RISC-V也是RISC指令集。

RISC的设计初衷针对CISC CPU复杂的弊端,选择一些可以在单个CPU周期完成的指令,以降低CPU的复杂度,将复杂性交给编译器。

举一个例子,下图是实现这样的乘法运算:a = a * b。它需要4个步骤:读出a的值、读出b的值、相乘、写结果到a。
在这里插入图片描述
使用CISC提供的乘法指令,只需要一条指令即可完成这4步操作。当然这一个指令需要多个CPU周期才可以完成。

而RISC不提供“一站式”的乘法指令,需调用4条单CPU周期指令完成两数相乘:内存a加载到寄存器,内存b加载到寄存器,两个寄存器中数相乘,寄存器结果存入内存a。

按照此思路,早期的设计出的RISC指令集,指令数是比CISC少些。后来,很多RISC的指令集中指令数反超了CISC。因此,应该根据指令的复杂度而非数量来区分两种指令集。

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

区别

  1. 指令能力:CISC的指令能力强,但多数指令使用率却增加了CPU的复杂度,指令是可变长格式。RISC的指令大部分为单周期指令,指令长度固定,对内存只有LOAD/STORE操作,数据的运算都是在CPU内部实现。
  2. 寻址方式:CISC支持多种寻址方式;RISC支持的寻址方式少。
  3. 实现方法:CISC通过微程序控制技术实现;RISC增加了通用寄存器,硬布线逻辑控制为主,采用流水线方式执行。
  4. 研发周期:CISC的研制周期长;RISC硬件简单,需要优化编译器。

ARM公司的芯片都使用RISC指令集,对内存只有load/store操作,数据的处理是在CPU寄存器上进行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1176631.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数字博物馆如何设计搭建,一文了解数字博物馆解决方案

导言: 数字博物馆是一种创新性的文化机构,通过数字技术的应用,将传统博物馆的宝贵文化遗产以全新的方式呈现给观众。 一.数字博物馆是什么 博物馆是指利用数字技术和互联网等新媒体技术来展示和传播文物、艺术品等文化遗产的博物馆。数字物…

汽车软件单元测试的要点与意义

测试是一个非常基础的概念,这种基础让大家可以随意在它前面添加各种定语。 尽管这种添加的背后多数是不同的分类维度,但让测试本身成为了繁杂概念的集合,这也让我们总有种无法把握的烦躁感。 单元测试就是这堆让人烦躁的繁杂概念之一。 1、3种…

Linux文件系统目录结构

典型的Linux文件系统目录结构的列表 典型的Linux文件系统目录结构的列表。每个目录都有其特定的用途: /bin: 存放系统引导和修复所需的二进制可执行文件,如ls,cp,mv等命令。 /boot: 存放操作系统引导文件,例如内核和…

2023世界传感器大会开幕,汉威科技多领域创新产品引瞩目

11月5日,2023世界传感器大会在郑州国际会展中心正式拉开帷幕。据悉,本次大会由河南省人民政府、中国科学技术协会主办,郑州市人民政府、河南省工业和信息化厅、河南省科学技术协会、中国仪器仪表学会承办。 大会由“一会一赛一展”组成&#…

Python新手必读:容器类型使用的实用小贴士

更多资料获取 📚 个人网站:涛哥聊Python Python提供了多种容器类型,如列表(List)、元组(Tuple)、集合(Set)、字典(Dictionary)等,用于…

NVM安装与配置(管理node版本)

NVM安装与配置(管理node版本) 一、安装NVM 下载安装 NVM解压后点击exe文件进行安装:点击下一步安装到 D:\NVM 下先在D:\NVM 下创建nodejs文件夹,然后将路径设置如下:点击next 一直点击 完成安装;地方是非得失范德萨范德萨发![在…

如何建设企业集成中台

企业的信息化建设是伴随企业发展不断延伸、不断升级的过程,而随着信息化体量不断增大,复杂繁多的业务系统往往又成为信息化建设的瓶颈,而为了消除瓶颈,更便捷地打通系统的关联,针对企业实际业务建立集成中台则是非常有…

C语言基础篇2:数组

1 一维数组 数组是一个由若干同类型变量组成的集合,引用这些变量可以使用同一个名字。数组均由连续的存储单元组成,最低地址对应于数组的第一个元素,最高地址对应数组的最后一个元素。 1.1 一维数组的定义和引用 一维数组示意图如下&#xf…

海康威视解码器维修DS-6900系列DS-6916UD

海康威视解码器常见维修型号:DS-6916UD/DS-6901/DS-6904/DS-6908/DS-6910/DS-6912UD/6A16 DS-6A16UD 产品类型:视音频解码器纠错 I/O接口:输入 DVI-I纠错;输出 VGA,BNC纠错;音频输入 HDMI纠错 产品特性 …

CY5-COOH脂溶性羧基荧光染料1032678-07-1

Cyanine5-COOH是一种荧光染料,它CAS号1032678-07-1,分子式为C32H39ClN2O2,分子量为519.12。Cyanine5-COOH具有良好的光稳定性和荧光亮度,可以用于生物学研究、诊断、药物筛选等领域。 Cy5-COOH (来自星戈瑞的花菁染料) 含有羧基官…

【源码篇】基于SSM开发的社区论坛系统

系统介绍 基于SSM开发的社区论坛系统是一个分享创造的开发者社区,是高品质的开发者社区,致力于为开发者提供一个分享创造、结识伙伴、协同互助的平台。 系统功能说明 1、游客模式下可以查看系统发布的话题、及用户参与的讨论,可以查看系统…

在Linux中安装宝塔面板

在公网为x.x.x.x的服务器上安装宝塔面板 安装宝塔面板 第一步,下载安装宝塔面板。 命令:cd /usr/local/src wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh 注意:需要等几分钟来下载宝塔面…

【STM32】Systick定时器

一、STM32的5种定时器简介 1.独立看门狗(IWDG) VS 窗口看门狗(WWDG) 1.独立看门狗(IWDG) 独立看门狗:当没有到设定时间之前,给它喂了狗,就会回到初始值。 2.窗口看门狗…

JAVA对象大小的获取

1. Java 对象的内存布局 Java的实例对象、数组对象在内存中的组成包括如下三部分:对象头Hearder、实例数据、内存填充。示意图如下所示 对象头 其主要包括两部分数据:Mark Word、Class对象指针。特别地对于数组对象而言,其还包括了数组长度…

figma-如何批量修改字体

一.选择字体 二.批量替换 编辑—>替换相同字体

3.3、Linux项目自动化构建工具make/makefile

个人主页:Lei宝啊 愿所有美好如期而遇 目录 背景 依赖关系 依赖方法 实例代码 原理 项目清理 背景 会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力再一个,我们平时使用的集成开发环境,创建一个工程…

[量化投资-学习笔记006]Python+TDengine从零开始搭建量化分析平台-MACD

在上一章节介绍了 EMA 均线的计算,本节主要介绍均线的进化形态之一:MACD MACD (Moving Average Convergence / Divergence) 指数平滑移动平均线。MACD 是通过计算不同时间的 EMA 的差值俩判断价格趋势。 MACD 包括 3 个值: 长短期 EMA 差值…

信号上的串联电阻是如何改善信号质量的

一般我们在进行PCB设计时可能会留意到有些信号会串联一个电阻,那么大家是否有想过所串联的电阻是有什么作用呢? 大家可以看一下下面图示的案例,信号是从CPU处出来再接到DDR颗粒的,每一个DDR数据线都有串联一个电阻,其…

高速串行协议——Aurora

Aurora简介 Aurora 协议是一个用于在点对点串行链路间移动数据的轻量级链路层协议,并为物理层提供透明接口,让专有协议或业界标准协议上层能方便地使用高速收发器。 Aurora通信模型 在发送端,用户端应用程序可以通过AXI总线接口实现与Aurora…

虹科示波器 | 汽车免拆检测 | 2017款长安福特翼虎车发动机故障灯异常点亮

一、故障现象 一辆2017款长安福特翼虎车,搭载CAF488WQ9发动机,累计行驶里程约为8.9万km。该车因发动机故障灯异常点亮在其他维修厂检修,维修人员用故障检测仪检测,提示气缸3失火,调换火花塞、点火线圈及喷油器&#xf…