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可更快响应中断。
相关推荐
IT技术分享社区3 小时前
架构入门系列:如何选择适合项目的架构模式
架构
报错小能手7 小时前
项目——基于C/S架构的预约系统平台 (1)
开发语言·c++·笔记·学习·架构
想学全栈的菜鸟阿董7 小时前
LangGraph智能体架构核心概念
网络·架构
北京青翼科技9 小时前
【PCIE716-159】基于PCIe总线架构的双通道射频收发处理平台(100%国产)
架构
雨夜之寂10 小时前
第一章-第二节-Cursor IDE与MCP集成.md
java·后端·架构
鸿蒙小白龙14 小时前
鸿蒙openharmony操作系统LiteOS-A内核技术全解析:架构、性能与开发实践
华为·架构·harmonyos·鸿蒙·鸿蒙系统·open harmony
周杰伦_Jay15 小时前
【PaddleOCR深度解析与DeepSeek-OCR对比】开源OCR工具库的技术路线与场景适配
人工智能·机器学习·云原生·架构·开源·ocr
辰尘_星启15 小时前
『CMake』关于使用CMake构建项目时的现代/传统指令
c++·架构·系统·cmake·项目·构建
1379号监听员_16 小时前
嵌入式软件架构--显示界面架构(工厂流水线模型,HOME界面,命令界面)
stm32·单片机·架构·命令模式