锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

10分钟就可以秒懂计算机体系结构与CPU工作原理

时间:2023-06-03 00:37:01 半导体电阻图形

文章目录

  • 前言
  • 一、芯片的‘破壳’
    • 1.从沙子到单晶硅
    • 1.2、芯片电路
    • 1.3.芯片包装
  • 二、CPU原理
    • 2.1、CPU的工作原理
    • 2.2、CPU的设计
  • 三、计算机系统结构
    • 3.1、冯·诺依曼架构
    • 3.2、哈弗架构
    • 3.3、混合架构
  • 四、Cache 机制
    • 4.1、Cache 机制工作原理
  • 五、总线及地址
    • 5.1、地址
    • 5.2.总线的概念
  • 六、指令集和微架构
    • 6.指令集是什么?
    • 6.什么是微架构?


前言

我初识STM32时,我通常想知道这个芯片是怎么制造的?它的工作原理是什么?CPU它是如何设计的,计算机是如何工作的,它的底层原理是什么?


一、芯片的‘破壳’

芯片为半导体。半导体是介于导体和绝缘体之间的一种物质,硅、锗、硒、硼的单质属于半导体。
目前,只有硅广泛应用于集成电路,硅作为继承电路的原材料。硅在地球上广泛存在,是第二丰富的元素,如沙子,其本质是二氧化硅。可以说,制造芯片的原材料非常丰富,取之不尽。沙子不仅可以与水泥混合成混凝土,建造高层建筑,还可以在火灾中重生,成为集成电路的高科技产品。

1.从沙子到单晶硅

二氧化硅还原成粗硅,然后通过盐酸氯化、蒸馏等步骤。提取的硅单质纯度越来越高。同时,为了提高硅的导电性,一些硼或磷通常与多晶硅混合。多晶硅融化后,在溶液中加入硅晶体晶种,通过拉杆旋转拉出圆柱形单晶硅棒。根据不同的需求和工艺,单晶硅棒可以制成不同的尺寸,如 6 英寸、8 英寸、12 英寸等。
接下来,把这些单晶硅切成片,每一片都叫晶圆。晶圆是集成电路设计的载体,我们设计的模拟电路或数字电路,最终都要在晶圆上实现。晶圆上的芯片电路尺寸随着半导体工艺的发展也变得越来越小,目前已经达到了纳米级,越来越精密的半导体工艺除了要求单晶硅的纯度极高,晶圆的表面也必须光滑平整,切好的晶圆还需要进一步打磨抛光。
晶圆上的每个小格子都是一个芯片电路的物理实现,我们称之为晶粒。接下来,切割、包装和引出晶圆上的芯片电路,然后成为市场上常见的芯片产品,最后焊接到我们的开发板上,制成整机产品。
晶圆:
在这里插入图片描述
电路一般由大量三极管、二极管组成CMOS 管、电阻、电容、电感、导线等。这些电子元件的实现原理实际上是 PN 结的实现原理。PN 结构为二极管、三极管,CMOS 管道等半导体元件的基础。

1.2、芯片电路

无论是二极管、三极管还是 MOSFET 场效应管以 为基础PN 结原理实现的。
半导体工艺大多涉及PN 结主要工艺包括氧化、光刻、显影、刻蚀、扩散、离子注入、膜沉淀、金属化等。
在水晶离子注入混合(离子注入混合)之前,首先根据电路地图制作混合窗口,这一步需要光刻胶来帮助完成:在硅衬底上涂一层光刻胶,通过紫外线照射掩模版本,电路图形投影到光刻胶生成混合窗口,不需要混合区域保护。
在这里插入图片描述

如何产生这个掺杂窗口需要一个,叫做光刻掩膜版的东西。
光刻膜的原理与我们拍摄的胶片相似。它由透明基板和遮阳膜组成。通过投影和曝光,我们可以将芯片的电路地图保存在遮阳板上。然后,通过光刻机的紫外线照射,利用光刻胶的光溶解特性,将光刻胶保存在电路图形屏蔽的阴影部分,光刻胶溶解成混合窗口。
最后通过离子注入,将三价元素和五价元素混合在晶圆的硅衬底上,主要由 生成PN 结构成的各种 CMOS 管、
晶体管电路。我们设计的芯片物理地图的每一层电路都需要制作相应的掩膜版本。重复上述过程,可在晶圆上制作迷宫 3D 立体电路结构。需要更小的混合物光刻机来进行。
在这里插入图片描述
光刻机主要用于将您设计的电路图映射到晶圆上,并将您设计的电路图投影到光刻胶上。光刻胶中被电路堵塞的部分保留,溶解的部分为混合窗。晶体管越多,电路越复杂,工艺越先进,对光刻机的要求越高,因为复杂的电路图需要非常精确地投影到晶圆的硅衬底上。
一台光刻机1亿欧元。
光刻机的功能是根据电路地图制作掩膜,挖掘各种掺杂窗口,然后通过离子注入产生 PN 结,然后构建成千上万的元器件。经过这些过程,芯片的原型在晶圆上生成:芯片电路

1.3.芯片包装

在这里插入图片描述
芯片的封装就是给它盖个壳,把管脚引出来。
常见的封装形式有 DIP、QFP、BGA、CSP、MCM 等。
我们用的51单片机是DIP封装;
STM32用球栅阵列包装(BGA);
使用 BGA 芯片管脚不再从芯片周围引出,而是用表面装饰包装:在印刷基板背面制作球形凸点而不是管脚,然后将芯片电路组装到基板前面,最后用膜压树脂或密封方法密封。

二、CPU原理

图灵机是现代计算机的祖先
任何复杂的操作都可以用几个
基本的操作指令来实现。

2.1、CPU的工作原理

CPU 内部结构包含基本结构算术逻辑操作单元、控制单元、寄存器等,仅支持有限个指令。CPU 支持的有限基本指令集称为指令集。代码存储在内部存储器中(内存),CPU 指令、翻译指令可以从内存中内存中逐一取出。
而早期 CPU 的工作频率和内存 RAM 相比,差距一般不大。控制单元从 RAM 将数据加载到 CPU,或者将 CPU 内部数据存储到 RAM 通常需要多个时钟的读写周期才能完成:找地址、取数据、配置、输出数据等。
操作速度再快CPU,只能等几个时钟周期,数据传输成功后才能执行以下指令。内存带宽的瓶颈会拖 CPU 后腿,影响 CPU 的性能。为了提高性能,防止 RAM 拖后腿,CPU 通常在内部配置一些寄存器来保存 CPU 计算过程中的各种临时结果和状态值。
ALU 在运算过程中,当运算结果为 0、为负、数据溢出时,也会有一些 Flags 标志位输出,这些标志位对控制单元特别有用,如一些条件跳转指令,实际上是根据这些标志位的计算结果跳转的。CPU 跳转指令的实现其实很简单:根据 ALU Flags 直接修改标志位 PC 寄存器地址,控制单元自动到 PC 指针指向的内存地址取指令、翻译指令和操作指令。跳转指令的实现改变了程序按顺序逐步执行的线性结构,使程序执行更加灵活和复杂,如程序分支结构和循环结构。
CPU 加、减、乘、或、非、跳转支持Load/Store、IN/OUT 等基本指令,一般称为指令集。任何复杂的操作都可以分解为指令集中的基本指令。
由基本指令组成的不同组合,我们称之为程序。为了方便编程,我们给每个二进制指令起个别名,用助记符表示
助记符就是汇编语言
,由由助记符组成的指令序列是汇编程序。虽然汇编语言的可读性比二进制机好器指令好了很多,但是当汇编程序很大、程序的逻辑很复杂时,维护也会变得无比艰难,这时候高级语言就开始问世了,如 C、C++、Java 等。高级语言的读写更符合人类习惯,更适合开发和阅读,编写好的高级语言程序通过编译器,就可以翻译成 CPU 所能识别的二进制机器指令。

2.2、CPU的设计

集成电路(IC)设计一般分为模拟 IC 设计、数字 IC 设计和数模混合 IC 设计。数字 IC 设计一般都是通过 HDL 编程和 EDA 工具来实现一个特定逻辑功能的数字集成电路的。

三、计算机体系结构

计算机主要用来处理数据。我们编写的程序,除了指令,还有各种各样的数据。指令和数据都需要保存在存储器中根据保存方式的不同,计算机可分为两种不同的架构:冯·诺依曼架构和哈弗架构。

3.1、冯·诺依曼架构

在这里插入图片描述
特点是程序中的指令和数据混合存储,存储在同一块存储器上
冯·诺依曼架构的计算机中,程序中的指令和数据同时存放在同一个存储器的不同物理地址上,一般我们会把指令和数据存放到外存储器中。
当程序运行时,再把这些指令和数据从外存储器加载到内存储器(内存储器支持随机访问并且访问速度快),如 :X86、ARM7、MIPS 等。

3.2、哈弗架构

在这里插入图片描述
哈弗架构的特点是:指令和数据被分开独立存储,它们分别被存放到程序存储器和数据存储器。每个存储器都独立编址,独立访问,而且指令和数据可以在一个时钟周期内并行访问。
使用哈弗架构的处理器运行效率更高,但缺点是 CPU 实现会更加复杂。51 系列的单片机、DSP和现在正在学习的STM32采用的就是哈弗架构。

3.3、混合架构

在这里插入图片描述
ARM SoC 芯片内部的 Cache 层采用哈弗架构,集成了指令 Cache 和数据 Cache。
SoC 芯片外部则采用冯·诺依曼架构
当 CPU 到 RAM 中读数据时,内存 RAM 不是一次只传输要读取的指定字节,而是一次缓存一批数据到 Cache 中,等下次 CPU 再去取指令和数据时,可以先到这两个 Cache 中看看要读取的数据是不是已经缓存到这里了,如果没有缓存命中,再到内存中读取。当 CPU 写数据到内存 RAM 时,也可以先把数据暂时写到 Cache 里,然后等待时机将 Cache 中的数据刷新到内存中。

四、Cache 机制

Cache 的运行速度介于 CPU 和内存 DRAM 之间,是在 CPU 和内存之间插入的一组高速缓冲存储器,用来解决两者速度不匹配带来的瓶颈问题。

4.1、Cache 机制工作原理

Cache 在物理实现上其实就是静态随机访问存储器。Cache 的工作原理很简单,就是利用空间局部性和时间局部性原理,通过自有的存储空间,缓存一部分内存中的指令和数据,减少 CPU 访问内存的次数,从而提高系统的整体性能。
Cache 里存储的内存地址,一般要经过地址映射,转换为更易存储和检索的形式。
而且为了提高性能,一般都会设计多级Cache。
而我在查看STM32芯片结构的时候就发现,STM32芯片没有Cache,在看看51单片机芯片结构也没有Cache处理器我找了资料,知道了原因:
是因为这些处理器都是低功耗、低成本处理器,在 CPU 内集成 Cache 会增加芯片的面积和发热量,不仅功耗增加,芯片的成本也会增加不少。而且功耗增加也会影响时钟的稳定性。
其次是因为这些处理器本来工作频率就不高(从几十兆赫到几百兆赫不等),和 RAM 之间不存在带宽问题,有些处理器甚至不需要外接 RAM,直接使用片内SRAM(易失性存储器)就可满足面向控制领域的软件开发需求。
最后是因为使用 Cache 无法保证实时性。当缓存未命中时,CPU 从 RAM 中读取数据的时间是不确定的,这是嵌入式实时控制场景无法接受的。

五、总线和地址

CPU 与内存、各种外部设备等 IP 之间都是通过总线相连的。

5.1、地址

地址的本质其实就是由 CPU 管脚发出的一组地址控制信号。因为这些信号是由 CPU 管脚直接发出的,因此也被称为物理地址。
地址信号线的位数决定了寻址空间的大小,如上面的两根 A1A0 地址信号线,有 4 字节的寻址空间;CSA1A0 三根地址信号线有 8 字节的寻址空间。在一个 32 位的计算机系统中,32 位的地址线有 4GB 大小的寻址空间。

5.2、总线的概念

总线其实就是各种数字信号的集合,包括地址信号、数据信号、控制信号等。有的总线还可以为挂到总线上的设备提供电源。
一个计算机系统中可能会有各种不同的总线,不同的总线读写时序、工作频率不一样,不同的总线之间通过桥(bridge)来连接。桥一般是一个芯片组电路,用来将总线的电子信号翻译成另一种总线的电子信号。
桥用来将 CPU 从系统总线发过来的电子信号转换成内存能识别的内存总线信号,或者显卡能识别的 PCI 总线信号,进而完成后续的数据传输和读写过程。

六、指令集与微架构

不同架构的处理器支持的指令类型是不同的。ARM 架构的处理器只支持 ARM 指令,X86 架构的处理器只支持 X86 指令。如果你在 ARM 架构的处理器上运行 X86 指令,就无法运行,报未定义指令的错误,因为 ARM 架构的处理器只支持 ARM 指令集中定义的指令。CPU 支持的有限个指令的集合,我们称之为指令集。

6.1、什么是指令集

指令集架构(Instruction Set Architecture,ISA)是计算机体系架构的一部分。指令集是一个标准规范。
作为 CPU 和编译器的设计规范和参考标准,主要用来定义指令的格式、操作数的类型、寄存器的分配、地址的格式等,指令集主要由以下内容组成
● 指令的分发、预取、解码、执行、写回。
● 操作数的类型、存储、存取、旁路转移。
● Load/Store 架构。
● 寄存器。
● 地址的格式、大端模式、小端模式。
● 字节对齐、边界对齐等。

6.2什么是微架构

微架构,就是处理器架构。
集成电路工程师在设计处理器时,会按照指令集规定的指令,设计具体的译码和运算电路来支持这些指令的运行;指令集在 CPU 处理器内部的具体硬件电路的实现,我们就称为微架构。

一套相同的指令集,可以由不同形式的电路实现,可以有不同的微架构。
以 ARM V7 指令集为例,基于该套指令集,面向高性能、低功耗等不同的市场定位,ARM 公司设计出了 Cortex-A7、Cortex-A8、Cortex-A9、Cortex-A15、Cortex-A17 等不同的微架构。
基于一款相同的微架构,通过不同的配置,也可以设计出不同的处理器类型。


主要参考资料《嵌入式C语言自我修养》

相关文章