10分钟就可以秒懂计算机体系结构与CPU工作原理
时间:2022-11-30 18:00:00
文章目录
- 前言
- 一、芯片的‘破壳’
-
- 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 具有特定逻辑功能的数字集成电路。
计算系统结构/h1 计算机主要用来处理数据。我们编写的程序,除了指令,还有各种各样的数据。指令和数据都需要保存在存储器中,根据保存方式的不同,计算机可分为两种不同的架构:冯·诺依曼架构和哈弗架构。
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语言自我修养》