咖啡图片
正在将巧克力泡入咖啡
ntainer" style="display: none">
文章

计算机组成结构

<摘要>

计算机组成结构

处理器内核

处理器内核是嵌入式芯片中最核心的硬件单元,承担了计算机系统中 CPU 的任务,负责指令的执行。

内核构成

以自底向上的逻辑介绍最简单的处理器内核如何构成:由组合逻辑电路构成加法器、减法器(加法器配合补码)、布尔运算器和移位运算器这些最基本的运算单元,再加上多路选择器 Mux,就构成了算数逻辑单元 ALU。由译码器和一些控制逻辑(如 FSM)的实现构成控制单元 CU,最后再加上寄存器组,包含用于追踪程序运行位置的指令地址寄存器 PC 和存放当前指令的指令寄存器 IR;这样就构成了最简单的处理器内核。

指令的执行过程

将操作编码为一个操作码,一条完整的指令由操作码和操作数构成。 内核执行指令的工作流程为:PC 送地址、对应地址的指令传输到 IR 中、控制单元译码、将相应的操作数送入 ALU 并执行运算,执行结束 PC 自增 1。操作码的集合称为指令集。修改 PC 存储的值,可实现程序的顺序执行、跳转、循环、过程调用和中断服务等功能。处理器访问内存时候需要规定高字节和低字节在内存中的排列顺序,也就是所谓的大小端。其中小端模式指高字节放高地址、低字节放低地址,大端模式反之。大小端由处理器内核架构而非内存决定,内存本身是没有顺序的字节数组,但处理器规定的大小端模式最终会体现在内存的数据布局上。

由于处理器的执行速度远快于存取指令和数据的速度,为了提高计算机系统的工作效率,处理器在设计时都会使用流水线技术,将一条指令的执行过程拆分成多个阶段,不同阶段并行处理不同的指令,提高处理器的吞吐量;具体实现上,处理器中存在指令预取队列 IPQ,处理器从逻辑上划分为执行单元 EU 和总线接口单元 BIU,总线接口单元专门负责与内存或 IO 接口之间的数据传送,不断取得指令送入指令预取队列,并保证指令预取队列尽可能处于满载状态;而执行单元只负责从指令预取队列中获取指令并执行。流水线技术既提高了处理器的效率,也变相降低了对存储器存取速度的要求。

内核架构和指令集架构

实际上,应该是先有人为规定的指令集架构(Instruction Set Architecture)作为处理器的软件抽象,再有了不同的处理器内核架构,芯片设计前,需要选择定义好的指令集架构(ISA)。指令集架构包含了指令集这个操作集合、寄存器布局、寻址模式、数据类型、异常/中断等一整套完整的对外规范。指令集架构按指令长度和复杂度分为复杂指令集(CISC)和精简指令集(RISC)。典型的指令集架构有 x86、ARM(AArch32、AArch64)、RISC-V 等。规定好指令集架构之后,有不同处理器内核架构(又称为微架构)来实现它们,如流水线、乱序执行、分支预测、缓存层次结构等。典型的内核架构有 Intel Core、AMD Zen 系列、ARM Cortex 系列。市面上最主流的芯片架构一是大部分主流电脑 CPU 使用的 X86,突出高性能;二是手机 CPU 和嵌入式 MCU 中使用的 ARM,突出低功耗。

存储架构

除了执行指令的处理器之外,用于存放程序和数据的硬件结构是构成嵌入式系统的另一个核心部件。为了更完整地构建存储系统的知识网络,此处在嵌入式系统的存储上稍加扩展。另外,STM32 使用哈佛结构,即程序和数据分开存储。

存储器结构

存储单元在内存中的位置称为地址,选中存储单元的过程称为寻址,狭义的存储器指地址总线可寻址访问的内存空间,不包括处理器和外设中的寄存器。一般来说,存储容量指存储单元的数量,而内存空间/存储空间/寻址范围与地址总线宽度有关,地址总线的宽度决定了处理器能直接访问的内存单元的数量。

时序逻辑电路提供了存储能力,锁存器是最简单的存储电路,可存储一位数据;并排使用多个锁存器就构成了寄存器,这个寄存器存储信息的位数称为位宽。对于更大的存储需求,使用矩阵存储结构来降低使用的线数,要启用某个锁存器,就打开相应的行线和列线。将这个结构抽象成一个内存块,其输入为行列地址,输出为一位数据,再加上允许读写的控制信号。多个这样的内存块并排使用即可选中一个寄存器,实现一个或多个字节的读写。通过不断把内存打包扩大到更大规模,同时增加地址长度,就构成了 SRAM 内存结构。除了锁存器外,还可以用电容器,电荷捕获或忆阻器等基本单元实现内存结构,它们分别对应着 DRAM,闪存和 NVRAM。

存储器芯片内部的存储矩阵有字节结构和位结构两种,字节结构即每个存储单元存放一个字节,每个字节 8 位,用 N \(\times\) 8 来描述;位结构即每个存储单元放一个或几个位,用 N \(\times\) 位数来描述。N 决定了寻址这个存储器芯片所需的地址线宽度 DA,\(\text{N}=2^\text{DA}\),芯片提供的地址线宽度与存储器芯片的数据深度(数据存放最大数量,即存储单元的数量)一定是符合上式关系的。存储器的扩展方式有位扩展和字扩展两种,当存储芯片的字长小于需要时进行位扩展,即增加数据线数量,提高访问速度;当存储芯片容量小于需要时进行字扩展,即提升存储容量。

存储器层次

存储器按照功能分为易失性存储器(Volatile Memory)和非易失性存储器(Non-Volatile Memory)两类。它们在逻辑上的分类和这些类别下的典型实现标准如下,其中浅绿色是抽象的逻辑分类,浅紫色是具体的实现标准;例如,DDR 是 RAM 这种逻辑结构的一种物理实现方式。在这个分类体系之外,SPI Flash 或 QSPI Flash 是 NOR Flash 的一种接口封装方式,而非一种具体的存储结构。SD 卡(SD 协议)、U 盘(USB 协议)、SSD(SATA/NVMe 协议)、eMMC(eMMC 协议)本质上都是 NAND Flash + 控制器 + 接口协议的组合。

不同的存储器有不同的特点,其中双极型晶体管 BJT 工艺制作的 RAM 速度快价格高功耗大,一般用作高速缓存 Cache;半导体场效应管 MOSFET 工艺制作的 RAM 反之,一般用作 SRAM 和 DRAM,SRAM 由双稳态触发器 FF 构成,不需要定时充电刷新;DRAM 用电容存储信息,需要定时充电刷新,集成度高,可用作内存条。缓存 Cache 是 CPU 与主存之间的高速小容量存储器,用于提高 CPU 的工作效率,其工作原理是数据访问的局部性原理,即在较短的时间间隔内,CPU 访问的内存地址往往集中在存储器很小的范围内。将这部分内存批量读取到缓存中,CPU 需要时先在缓存中找,找到称为命中,未找到则更新缓存以提高命中率。命中率与缓存容量、使用的算法和运行的程序特点都有关,使用多级缓存结构可以提高命中率。

ROM 分 Mask ROM、PROM、EPROM、EEPROM,目前市面上都是 EEPROM。Flash 的归属方式比较模糊,既可认为是一种特殊的 EEPROM,也可认为是与 ROM 并列的一种非易失性存储器。NOR Flash 的特点包括:每个存储单元直接挂在位线,支持随机访问,因此可以直接运行代码(但速度不如 RAM),容量在几 MB~百 MB 级,一般用于存放 BootLoader、固件、配置数据。NAND Flash 的特点包括:一组存储单元串在一起,按块/页访问,容量在 MB~TB 级。NAND Flash 按单元存储位数分为:SLC(1 bit/单元,快,寿命长,贵)、MLC(2 bit/单元,容量大,寿命一般)、TLC(3 bit/单元,消费级 SSD 常见)、QLC(4 bit/单元,超大容量,寿命低)。

实际计算机系统的存储架构会综合使用多种存储器,将两个及以上的速度、容量和价格各不相同的存储器组成一个存储器系统,从软件抽象上看,这个系统的速度、容量和价格都接近最好的那个。对于 STM32 来说,片上存储只有寄存器、SRAM、Mask ROM、NOR Flash,此外可以外挂 SD 卡等外部存储。代码存储在 Nor Flash 上,临时变量和栈运行在 SRAM 上。MCU 的运行频率在几十 MHz 到一两百 MHz,Nor Flash 的读写速度能够满足 CPU 的读取需求,但写入速度较慢,因此引入了 SRAM 作为临时变量和栈的运行空间。

下面是一个存储器控制接口示例

image-20260127212605424

存储器映射

地址有物理地址和逻辑地址之分,CPU 送到地址总线的地址称为物理地址,是硬件存储单元在存储器中的真实物理位置,存储器的操作完全基于物理地址;编程时使用的称为逻辑地址或虚拟地址,对存储器分配逻辑地址的过程称为存储器映射,由内存管理单元(MMU)这一电路一定的内存映射方式完成。之所以需要进行映射,一方面是为了让 CPU 以统一的方式访问不同的外设,在内存映射下,所有外设都被视为一块内存,操作这块内存即可操作相应的外设;另一方面是为了实现进程隔离、内存保护和虚拟内存的扩展等操作系统层面的管理方式。

总线系统

总线系统是连接芯片内 CPU、存储和外设或电路板上各模块的数据通路的信号线,以及相应控制协议的集合。总线上可以同时挂接多个设备,主设备通过总线进行数据传输,从设备按主设备要求工作或接收数据。

总线按信号类型分为数据总线(双向)、地址总线(单向)和控制总线(双向);按层次结构分为前端总线(又称 CPU 总线,负责 CPU 与存储器、IO、控制芯片组之间的信息传输)、系统总线(又称 IO 通道总线,主要表现为扩展插槽,如 PCI 总线、ISA 总线等)、外设总线(与外设接口的总线,如 USB、SATA、RS485 等),其中系统总线和外设总线有统一标准。

image-20250401105300428

时钟系统

嵌入式系统中的处理器、外设、总线等各个部件都是以时钟信号作为基准工作的。时钟信号的作用,一方面是由于门电路运行有延迟,需要由统一的信号等待门电路稳定之后再触发;另一方面从数据传输的角度也需要用时钟来规定最小数据单位对应的物理信号。嵌入式系统中用晶振提供相对准确的时钟信号,并配合分频器倍频器产生不同频率的时钟域以满足不同设备的运行需求,再由计数器对脉冲计数就构成了定时器。

参考资料

计算机科学通识

CPU 工作原理

第一性原理构建计算机

计算机硬件基础

图灵完备

基于《图灵完备》的 32 位 MIPS 架构单周期 CPU 的设计与实现

本文由作者按照 CC BY 4.0 进行授权
/body>