计算机体系结构与CPU工作原理

一、CPU

CPU内部结构

在这里插入图片描述

  1. CPU内部的算术逻辑单元(Arithmetic and Logic Unit,ALU)是处理器最核心的部件,相当于CPU的大脑。
    ALU由算术单元和逻辑单元组成,
    算术单元主要负责数学运算,如加、减、乘等;
    逻辑单元主要负责逻辑运算,如与、或、非等。

  2. ALU只是纯粹的运算单元,要想完成一个指令运行的整个流程,还需要控制单元的协助。
    控制单元根据程序计数器PC中的地址,会不断地从内存RAM中取指令,放到指令寄存器中并进行译码,将指令中的操作码和操作数分别送到ALU,执行相应的运算。

二、计算机体系结构

冯·诺依曼架构

在这里插入图片描述
很多现代处理器都采用这种架构,如X86、ARM7、MIPS等。

哈弗架构

在这里插入图片描述
8051系列的单片机采用的就是哈弗架构。

混合架构

CPU引入了Cache机制:指令Cache和数据Cache,用来缓存数据和指令,提升计算机的运行效率。
现代的ARM SoC芯片架构一般如图所示
SoC芯片内部的Cache层采用哈弗架构,集成了指令Cache和数据Cache,
而SoC芯片外部则采用冯·诺依曼架构。
在这里插入图片描述

三、CPU性能提升

Cache机制(高速缓存)

在CPU和主存之间设置“Cache”的作用是为了解决主存与CPU速度不匹配的问题。
在这里插入图片描述

并不是所有的处理器都有Cache,
如C51系列单片机、cortex-M0、cortex-M1、cortex-M2、cortex-M3、cortex-M4系列的ARM处理器都没有Cache。
不要觉得奇怪:适合自己的,才是最好的,不是所有的牛奶都叫特仑苏。

流水线:

本质:拿空间换时间
指令的每一小步都有独立的电路单元来执行
CPU内部的流水线如此,工厂里的手机生产流水线也是如此,通过不断地往流水线增加人手来提高流水线的生产效率,也就是增加流水线的吞吐率。

处理器指令的流水线执行过程:
在这里插入图片描述

四、多核CPU

在多核处理器设计中,还有一种技术叫超线程技术(Hyper-Threading,HT),目前主要应用在Intel、AMD的X86多核处理器上

五、后摩尔时代:异构计算的崛起

GPU

GPU(Graphic Process Unit,图形处理单元)主要用来处理图像数据,

DSP

DSP(Digital Signal Processing,数字信号处理器),主要用在音频信号处理和通信领域

FPGA

FPGA(Field Programmable Gate Array,现场可编程门阵列)在专用集成电路(Application Specific Integrated Circuit,ASIC)领域中是以一种半定制电路的形式出现的

六、总线与地址

CPU内部的寄存器是没有地址的,可直接通过寄存器名访问。
而内存和外部设备控制器中的寄存器都需要有一个地址,
计算机的内存简单点理解,其实就是将一系列存储单元和译码器组装在一起,当CPU想访问其中一个存储单元时,可通过CPU管脚发出一组信号,经过译码器译码,选中与这个信号对应的存储单元,CPU管脚发出的这组信号,也就是存储单元对应的编号,即地址。
假如我们的RAM容量大小为4字节,那么需要两根信号线就可以访问这4个存储单元了。
占的字节=2的n次方:一条信号线发出两种信号

X86处理器的PCI总线

在这里插入图片描述

ARM处理器的AMBA总线

在这里插入图片描述
嵌入式采用统一编址,在统一编址模式下,内存RAM、外部设备控制器的寄存器、集成在外部设备控制器内部的RAM共享CPU的可寻址空间。在统一编址模式下,CPU可以像操作内存一样去读写外部设备的寄存器和内部RAM。

七、指令集与微架构

ARM架构的处理器只支持ARM指令,X86架构的处理器只支持X86指令。
CPU支持的有限个指令的集合,我们称之为指令集
微架构,对应的英文是Microarchitecture,也就是处理器架构

在这里插入图片描述
在嵌入式处理器中,微架构不等于SoC,大家不要把概念混淆了,微架构一般也称为CPU内核。在一个ARM SoC芯片上,我们把CPU内核和各种外设IP通过AMBA总线连接起来,构成一个片上系统,即SystemOn Chip,简称SoC。
6

在这里插入图片描述

指令助记符:汇编语言

一个指令通常由操作码和操作数组成,指令格式是二进制的,就是一串数字,非常不好记,可读性差。

为了方便编程,我们给这些二进制指令定义了各种助记符,这种助记符其实就是汇编指令。一段汇编程序经过汇编器的翻译,才能变成CPU真正能识别、译码和运行的二进制指令。

在一些嵌入式软件优化、启动代码、Linux内核OOPS调试等场合,也需要你对汇编语言有一定的掌握。

精简指令集与复杂指令集

复杂指令集(CISC):x86采用的是复杂指令集
精简指令集(RISC):ARM指令集属于精简指令集

八、ARM介绍

ARM架构

1)Cortex-A:用于高性能应用,主要支持分页内存管理单元MMU,linux需要MMU的支持才能运行。

2)Cortex-R:侧重于实时性应用,如汽车系统。

3)Cortex-M:侧重于微控制器,常用的STM32就是此内核。

ARM工作模式

  • 用户模式属于普通模式,有些特权指令是运行不了的,需要切换到特权模式下才能运行。
  • 在ARM处理器中,除了用户模式是普通模式,剩下的几种工作模式都属于特权模式。
  • 应用程序正常运行时,处理器处于普通模式,没有权限对 内存和底层硬件进行操作。应用程序如果要读写磁盘上的音频数据,驱动声卡播放音乐,往屏幕写数据显示歌词,则要首先通过系统调用或软 中断进入处理器特权模式,运行操作系统内核或硬件驱动代码,才能对底层的硬件设备进行读写操作。

7

ARM处理器(CPU)中的寄存器

在ARM处理器内部,除了基本的算术运算单元、逻辑运算单元、浮点运算单元和控制单元,还有一系列寄存器.
8

通用寄存器:

寄存器R0~R12属于通用寄存器,除了FIQ工作模式,在其他工作模式下这些寄存器都是共用、共享的:
R0~R3通常用来传递函数参数,
R4~R11用来保存程序运算的中间结果或函数的局部变量等,
R12常用来作为函数调用过程中的临时寄存器。

专用寄存器:

除了这些在各个模式下通用的寄存器,还有一些寄存器在各自的工作模式下是独立存在的,
如R13、R14、R15、CPSP、SPSR寄存器,在每个工作模式下都有自己单独的寄存器。

  1. R13寄存器又称为堆栈指针寄存器 (Stack Pointer,SP),用来维护和管理函数调用过程中的栈帧变化,
    R13总是指向当前正在运行的函数的栈帧,一般不能再用作其他用途。

  2. R14寄存器又称为链接寄存器(Link Register,LR),在函数调用过程 中主要用来保存上一级函数调用者的返回地址。

  3. R15又称为程序计数器(Program Counter,PC),CPU从内存取指令执行,就是默认从PC保存的地址中取的,每取一次指令,PC寄存器的地址值自动增加。

  4. 当前处理器状态寄存器(Current Processor State Register,CPSR)主要用来表征当前处理器的运行状态。除了各种状态位、标志位,CPSR寄存器里也有一些控制位,用来切换处理器的工作模式和中断使能控制。
    在这里插入图片描述

  5. 程序状态保存寄存器(SavedProcessor State Register,SPSR)。
    现场保护: 当ARM处理器切换工作模式或发生异常时,SPSR用来保存当前工作模式下的处理器现场,即将CPSR寄存器的值保存到当前工作模式下的SPSR寄存器。当ARM处理器从异常返回时,就可以从SPSR寄存器中恢复原先的处理器状态,切换到原来的工作模式继续运行。

  6. 在ARM所有的工作模式中,有一种工作模式比较特殊,即FIQ模 式。为了快速响应中断,减少中断现场保护带来的时间开销,在FIQ工作模式下,ARM处理器有自己独享的R8~R12寄存器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

好好睡觉好好吃饭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值