CPU的发展历程、架构与指令

1、CPU发展历程

在一个电子系统中,处理器占据最重要的位置,被称为中央处理器单元:CPU(Central Processing Unit)。它从IO设备读取数据,处理,然后显示出来。CPU的发展有两个路线:MPU、MCU。

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

(1)MPU这一路线,在上世纪80年代非常流行,那时的微型计算机、游戏机都是使用MPU。后来MPU逐渐式微,可以认为MPU发展到现在只剩下了intel、AMD两家公司,主要用于个人电脑中。芯片越来越复杂,逐渐强大,称之为MPU似乎不恰当,现在都直接称为CPU。

  • MPU即微处理器(Microprocessor Unit)

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

  • 我们使用的51单片机、STM32单片机,一般都只是用来处理比较简单的事务,应用场景比较单一。
  • 我们使用的手机,里面的主芯片更加复杂,它既含有CPU,也含有用于数据处理的DSP、用于图形显示的GPU。使用这类主芯片设计出来的电路板更加复杂,它的性能甚至不弱于个人电脑。

(3)为了跟个人电脑相区分,这些使用含有CPU电子产品,被称为嵌入式系统、嵌入式产品、嵌入式板卡。

2、CPU、MPU和MCU

嵌入式板卡就是一台形状不一样的电脑,跟电脑相比,可以引入几个概念:

(1)CPU(Central Processing Unit):

  • 中央处理器,在PC机它是一个独立的芯片。
  • 在嵌入系统中,它是芯片里的一个单元,跟其他模块比如USB、UART、音频组成一个芯片。

(2)MPU(Mircro Processor Unit):

  • 微处理器单元,其作用等同于在PC上使用的CPU,它也只仅仅是一个处理器,需要配合内存、Flash等外设才可以使用。
  • 现在,除了个人电脑上的CPU,基本上找不到MPU了。并且我们一般不把电脑上的CPU当作MPU,毕竟它也是挺大的,并不"微小"。
  • 但是,在现实工作中,有时会遇到把A pplication Processors称为MPU

(3)Application Processors:

  • Application Processors 即应用处理器,用于手机、平板当中;
  • 用来处理显示、输入,运行用户的程序等。
  • 它跟MCU类似,也是集成了处理器和各类模块;但是它的性能已经极大提升,可以外接几GB的内存、几GB的Flash。
  • Application Processors 的概念可以扩展到其他场景,不再局限于手机、平板。
  • 跟MCU相比,Application Processors的不同点:
    • 集成了更多的模块:比如用于数据处理的DSP、用于图形显示的GPU,甚至有多个处理器。

    • 运行的操作系统不同:MCU上一般不运行操作系统,或是运行RTOS;Application Processors基本上都会运行比较复杂的操作系统(比如Linux),在操作系统上运行多个APP。

(4)SoC

  • SoC(System on Chip),即片上系统。SoC的本意是在一个芯片上就可以搭建完整的系统。
  • 但是这个概念在日常使用中比较宽泛:MCU芯片也可以称为SoC,Application Processors也可以称为SoC,即使它们还必须外接内存/Flash等外设才可以运行。
  • 在以前的文档中涉及SoC时,意指比较复杂的系统。这时候MCU不属于SoC,因为MCU比较简单;但是时代在发展,MCU也越来越复杂了,所以把MCU也当作SoC也是可以的。

3、哈佛架构和冯诺伊曼架构

CPU架构可以分为哈弗架构与冯诺伊曼架构。

(1)哈佛架构

  • 指令与数据分开存放,CPU可以同时读入指令、读写数据。

  • 现在的ARM属于哈佛结构。

(2)冯诺伊曼架构

  • 指令、数据混合存放,CPU依次读取指令、读写数据,不可同时操作指令和数据。

  • PC机、服务器属于冯诺伊曼架构。

4、指令集: CISC和RISC

(1)CISC,即复杂指令集计算机。

  • 指令数量多:包含数百条复杂指令,涵盖多种操作(如内存访问、算术运算、字符串处理等)。
  • 单条指令功能强:一条指令可能完成多个操作(如"从内存加载数据并计算")。
  • 变长指令:指令长度不固定,可能占用多个字节。
  • 应用:x86架构(Intel/AMD处理器)。

(2)RISC,即精简指令集计算机。

  • 指令数量少:通常只有几十条简单指令,每条指令功能单一。
  • 单条指令功能简单:每条指令仅完成一个基本操作(如"加法"或"内存加载")。
  • 定长指令:指令长度固定(如32位或64位),便于解码。
  • 应用:ARM、RISC-V、MIPS架构。

(3)举一个例子,下图是实现这样的乘法运算:a = a * b。它需要4个步骤:读出a的值、读出b的值、相乘、写结果到a。

  • 使用CISC提供的乘法指令,只需要一条指令即可完成这4步操作。当然,这一个指令需要多个CPU周期才可以完成。
  • 而RISC不提供"一站式"的乘法指令,需调用四条单CPU周期指令完成两数相乘:内存a加载到寄存器,内存b加载到寄存器,两个寄存器中数相乘,寄存器结果存入内存a。
  • 按照此思路,早期的设计出的RISC指令集,指令数是比CISC少些。后来,很多RISC的指令集中指令数反超了CISC。因此,应该根据指令的复杂度而非数量来区分两种指令集。
  • 当然,CISC也是要通过操作内存、寄存器、运算器来完成复杂指令的。它在实现时,是将复杂指令转换成了一个微程序,微程序在制造CPU时就已存储于微服务存储器。一个微程序包含若干条微指令(也称微码),执行复杂指令时,实际上是在执行一个微程序。这也带来两种指令集的一个差别,微程序的执行是不可被打断的,而RISC指令之间可以被打断,所以理论上RISC可更快响应中断。
相关推荐
学渣超18 分钟前
从一次早高峰数据库告警说起:你真的理解缓存该如何落地应用吗?
redis·后端·架构
KIDULT°29 分钟前
Docker 从 0 入门|吃透容器生态、架构与 Dockerfile 实战
docker·容器·架构
风123456789~31 分钟前
【架构专栏】8.2-8.3 系统架构评估、ATAM评估实践
架构
Runwise创新社区1 小时前
Anthropic多智能体架构怎么落地?Lead Agent、共享记忆与并行任务的设计边界
人工智能·架构·多智能体
海宇数据1 小时前
零信任架构实战:基于海宇对外投资历史查询服务构建自动化异动企业筛查网关
运维·人工智能·架构·自动化
Brilliantwxx2 小时前
【STM32】 I2C协议和设备主从( 图解 + 面试题 )
stm32·单片机·嵌入式硬件·架构
QQ_21696290962 小时前
基于微服务架构的店铺管理系统的设计与实现
大数据·spring boot·后端·spring·微服务·小程序·架构
头茬韭菜10 小时前
第 1 篇:「Glass-Box 的骨架」——全景架构与六层数据流水线
架构·agent·semantica
奔跑的架构师12 小时前
[A-50]ARMv9/v8-DVFS系统架构
linux·arm开发·架构·系统架构·arm
闲云自留地12 小时前
动手玩 Nova:Hypervisor、主机聚合、可用分区、虚拟机生命周期实操
运维·架构·openstack