2.2 计算机硬件2.2.2 处理器冯诺依曼架构VS哈弗架构冯・诺依曼指令、数据共用同一条总线、同一个存储器哈佛结构指令存储器、数据存储器相互独立两套总线可以同时取指令 读写数据。代表MCU、DSP指令集复杂指令集 CISC 代表Intel、AMD X86简单指令集 RISC 代表ARM常见处理器分类类型全称核心定位特点典型用途存储架构CPUCentral Processing Unit中央处理器通用计算主控复杂逻辑调度擅长分支判断、复杂逻辑、串行任务控制能力强并行算力弱指令集通用x86/ARM/RISC-VPC、服务器、手机主控核心操作系统运行、业务逻辑处理冯・诺依曼现代 CPU 有分离 L1 缓存考试按冯诺依曼作答GPUGraphics Processing Unit图形处理器大规模并行浮点计算大量简单计算核心适合重复、同类型并行运算逻辑分支能力差图形渲染、AI 训练 / 推理、科学计算、视频编解码冯・诺依曼NPUNeural Processing Unit神经网络处理器AI 神经网络专用针对矩阵乘法、卷积做硬件加速专门优化深度学习算子低功耗 AI 推理手机 AI、安防摄像头、边缘盒子、大模型端侧推理专用哈佛 / 类哈佛架构DSPDigital Signal Processor数字信号处理器数字信号实时处理硬件支持乘累加 (MAC)适合信号滤波、FFT定点运算强实时性好音频处理、雷达、通信基带、传感器信号处理哈佛架构 / 改进哈佛架构MCUMicrocontroller Unit微控制器小型嵌入式控制CPU 少量 RAM/ROM 外设集成极简低功耗算力弱无 OS 或 RTOS家电、传感器、遥控器、单片机、工业小控制板经典 51哈佛Cortex‑M改进哈佛考题无改进选项选哈佛SoCSystem on Chip片上系统单芯片集成完整系统不是单独一类处理器是芯片集成方案内部可包含 CPUGPUNPUDSP 外设手机芯片、平板、车机、高端嵌入式如麒麟、骁龙无统一架构内部各个核独立CPU 核冯诺依曼DSP/NPU 核哈佛FPGAField Programmable Gate Array现场可编程门阵列可硬件重构的可编程电路硬件逻辑可反复烧录修改并行度高流片前原型验证主频一般开发门槛高芯片原型验证、通信基站、高速信号处理、边缘加速可自定义搭建无固定原生架构ASICApplication Specific Integrated Circuit专用集成电路为单一应用定制的硬件芯片硬件逻辑固定不可修改性能最高、功耗最低一次性流片成本极高比特币矿卡、专用 AI 芯片、专用编解码芯片按需设计可冯诺依曼 / 哈佛CPU组成运算器算术逻辑单元ALU数据的算术运算和逻辑运算累加寄存器AC通用寄存器为ALU提供一个工作区暂存数据数据缓冲寄存器DR写内存时暂存指令或数据‘状态条件寄存器PSW存状态标志与控制标志控制器程序计数器PC存储下一条要执行指令的地址指令寄存器IR存储即将执行的指令指令译码器ID对指令中的操作码字段进行分析解释时序部件提供时序控制信号2.2.3 存储器存储器分类寄存器Cache内存主存外存存储器硬件结构分类按照硬件结构分为SRAM、DRAM、NVRAM、Flash、EPROM、Disk。器件断电保存刷新需求擦写粒度读写速度典型场景SRAM丢失不需要字节读写最快CPU CacheDRAM丢失必须刷新字节读写快主机内存EPROM保留无整片紫外擦除读快写极慢老式固件E2PROM保留无电信号按字节擦除读快写慢适合保存小量配置Flash(NAND/NOR)保留无按块擦除页写入中等SSD/U 盘 / 固件NVRAM保留电池 / 新材料字节随机读写很快关键配置数据Disk(HDD)保留无扇区读写最慢大容量文件存储Flash 是按块擦除EEPROM 是字节擦写这是 EEPROM 和 Flash 最大区别存储器分层分类存储器按照与处理的物理距离可以分为4个层次片上缓存、片外缓存、主存内存、外存存储类型物理位置存储介质断电保存速度典型容量片上缓存CPU 芯片内部、寄存器SRAM❌丢失最快KB几十 MB片外缓存CPU 外部、主板独立芯片、Cache相联存储器SRAM❌丢失很快MB 级主存内存主板内存条、DRAMDRAM❌丢失中等GB 级外存独立外设 / 板载 FlashFlash / 磁碟✅永久保存最慢TB 级存储器访问机制分类类型访问特点典型存储器件按地址访问随机存取 RAM任意位置访问时间一致SRAM、DRAM内存 / Cache按地址访问顺序存取 SAM从头到尾依次查找磁带按地址访问直接存取 DAM先分区定位区内顺序查找机械硬盘 HDD按内容访问相联存取 CAM按内容检索而非地址TLB、高速匹配缓存Cache时间局部性同一个指令短期再次执行空间局部性相邻存储单元被同一时间访问工作集理论进程运行时被频繁访问的页面集合平均周期 cache命中率 * cache周期时间 (1-cache命中率) * 内存周期时间cache对程序员时透明的由硬件控制内存栈和堆对比项栈 Stack堆 Heap分配主体系统自动分配、自动回收函数调用结束自动释放程序员手动申请new/malloc、手动释放delete/free忘记释放会内存泄漏管理方式后进先出 LIFO连续一块内存区域不连续内存块链表方式管理空闲块大小容量很小编译期 / 系统预设上限容易栈溢出 (stack overflow)容量大受限于进程可用虚拟内存生长方向向下增长从高地址往低地址向上增长从低地址往高地址存储内容函数局部变量、函数参数、返回地址、临时变量动态分配的对象、数组大块数据访问速度极快在 CPU 缓存友好预分配无复杂管理相对慢需要查找空闲内存块有内存碎片生命周期随函数调用创建函数退出立刻销毁直到主动 free/delete或进程结束才回收内存碎片几乎无碎片容易产生内存碎片外碎片DMADMA不经过 CPU直接在内存与外设之间搬运数据CPU 只负责初始化传输过程 CPU 可以并行做别的任务。两种传输场景外设 ↔ 内存最常用例如 ADC 采集数据进内存、串口接收数据存入内存内存 ↔ 内存内存块之间拷贝部分 DMA 支持DMA 优点减轻 CPU 负担数据搬运不用 CPU 逐字节读写CPU 可并行执行其他程序传输速度快省去 CPU 取指、拷贝、保存现场开销适合大批量连续数据传输磁盘磁盘的基本原理磁道 Track一圈一圈同心圆扇区 Sector磁道切分的圆弧段硬件最小读写单元0 号磁道最外圈所有磁头固定在同一组磁头臂同步径向移动只能同时定位到同一个半径形成柱面。存取时间寻道时间等待时间传输时间*寻道时间磁头移动到磁道的时间径向移动的时间等待时间等待读写的扇区转到磁头下方的时间圆弧移动的时间磁盘存取时间与优化存储分布单缓冲区时扇区数据被读入缓冲区后缓冲区数据还没有完全处理结束可能需要等待磁盘重新旋转一周才能读到下一个数据块磁盘块偏移计算公式逻辑字节长度S磁盘块大小B每条逻辑记录长度L每组记录数一块能存几条记录G(G⌊BL⌋) (G \lfloor \dfrac{B}{L} \rfloor)(G⌊LB​⌋)逻辑记录所在磁盘块为S / B逻辑记录所在磁盘块内偏移 R mod G磁盘阵列RAID技术RAID独立磁盘冗余阵列Redundant Array of Independent Disks软考常考把多块物理磁盘组合成一个逻辑磁盘目标提升 IO 性能、提供磁盘故障冗余RAID ≠ 备份RAID 只能防单块硬盘损坏不能防误删、病毒、火灾重要数据仍然需要单独备份。RAID 级别最小盘数核心原理容错能力可用容量优点缺点适用场景RAID02条带化无校验0 块坏任意一块全盘失效所有盘容量之和读写性能最高容量利用率 100%无冗余数据风险极高临时缓存、可重建数据RAID12镜像两份完全一样数据坏 1 块总容量 / 2读性能好、重建快、可靠性高容量利用率只有 50%成本高系统盘、核心重要小数据RAID53条带 分布式奇偶校验坏 1 块总容量−1 块盘读性能优秀容量与可靠性均衡写性能差每次写要算校验大盘重建风险高文件服务器、NASRAID64条带 双分布式奇偶校验坏 2 块总容量−2 块盘容错更强大容量阵列首选写性能比 RAID5 更差计算开销大大容量归档存储RAID10104先做两组 RAID1 镜像再做 RAID0 条带每组镜像最多坏 1 块总容量 / 2读写性能好、重建速度快、可靠性高容量利用率 50%成本高数据库、高并发业务RAID01014先两组 RAID0 条带再镜像只能坏一组里 1 块总容量 / 2性能好容错弱一组 RAID0 坏两块直接崩企业极少用软考区分 RAID10 和 RAID01硬 RAID vs 软 RAID硬 RAID独立 RAID 卡带处理器 缓存完成计算操作系统只看到 1 块逻辑盘不占用主机 CPU性能稳定支持断电保护成本高。软 RAID操作系统内核Linux mdadm、Windows 存储池实现校验计算消耗主机 CPU不需要阵列卡迁移灵活性能差系统崩溃容易丢阵列。FakeRAID主板 RAID主板 BIOS 里的 RAID本质还是靠 CPU 运算属于伪硬 RAID。软考必背要点RAID0无冗余速度最快一块盘坏数据全部丢失。RAID1镜像容量减半允许坏一块。RAID5分布式奇偶校验至少 3 块盘允许坏一块校验分散在所有磁盘不是单独校验盘区别 RAID3。RAID6双校验最多坏两块。RAID10至少 4 块盘兼顾性能与冗余数据库优选。磁盘移臂调度算法FCFS 先来先服务规则按 I/O 请求到达顺序依次访问不考虑磁头当前位置✅优点简单无饥饿❌缺点磁头来回大幅度跳动平均寻道距离大性能差软考关键词公平、顺序执行、无优化SSTF 最短寻道时间优先Shortest Seek Time First规则每次选离当前磁头最近的磁道请求✅优点平均寻道距离短性能好❌缺点会饥饿持续有近距离请求到来远端请求永远得不到服务类比短作业优先 SJF软考选择题最爱考饥饿问题SCAN 扫描算法电梯算法规则磁头沿一个方向移动沿途处理所有请求到达磁盘最顶端 / 底端边界反向折返继续处理沿途请求✅优点无饥饿比 SSTF 公平❌缺点到达磁盘物理边界才掉头两端磁道请求等待时间更长类比电梯一路向上到顶楼再下来LOOK 算法SCAN 改进版规则不用走到磁盘物理边界沿当前方向走到这条方向上最后一个请求立刻掉头不走到盘片尽头✅优点相比 SCAN减少无用移动寻道距离更短软考提示题目没有特别说明边界SCAN 和 LOOK 经常区分考核C-SCAN 循环扫描Circular SCAN规则磁头只单向处理请求走到磁盘边界直接跳回磁盘起始端返程途中不处理任何请求再继续单向扫描✅优点所有磁道请求等待时间更均匀消除 SCAN 两端等待时间差异❌缺点跳回起点有寻道开销C-LOOK 循环 LOOKC-SCAN 改进规则单向处理请求走到当前方向最后一个请求直接跳跃到另一端第一个待处理请求不走到磁盘物理边界返程不服务请求✅优点C-SCAN 的优化去掉走到磁盘边界的无效移动性能最优算法核心特点饥饿关键点FCFS按请求顺序❌无最简单性能差SSTF每次选最近磁道✅会饥饿平均寻道短远端请求饿死SCAN 电梯到磁盘边界再折返往返都服务❌无两端请求等待久LOOK到最后请求就掉头不碰边界❌无SCAN 优化少走冤枉路C-SCAN单向服务到边界跳回起点返程不服务❌无请求等待时间均匀C-LOOK单向服务到最后请求直接跳到另一端首个请求❌无C-SCAN 优化工业常用2.2.4 总线串行总线与并行总线串行USB、SATA、PCIe、RapidIO、SPI、I2C、CAN、UART、以太网并行PCI、ISA、IDE(PATA、ATA)内部总线与外部总线项目内部总线片内总线外部总线系统总线 / 通信总线位置芯片内部同一芯片内各个部件之间例CPU 内部寄存器、ALU、控制器之间芯片外部芯片与芯片、板卡与板卡、设备之间传输对象CPU 内核内部组件CPU ↔ 内存、外设、其他板卡、外部设备距离极短芯片内部较长板上、机箱内、机箱之间典型例子CPU 内部总线、AHB、APB片内总线系统总线PCI、ISA、PCIe****通信总线USB、SATA、I2C、SPI、CAN、以太网、UART特点高速、线多、时序严格只在集成电路内部分并行 / 串行用于设备互联有的支持热插拔流水线技术流水线周期执行时间最长的一段流水线执行时间计算公式理论公式(t1t2…tn) (n-1)*t实际公式k*t (n - 1) * tk为命令数如取值、分析、执行三个命令则k3流水线吞吐率单位时间内完成的任务数TP指令条数流水线执行时间 TP \dfrac{指令条数}{流水线执行时间}TP流水线执行时间指令条数​流水线最大吞吐率TPmaxlim⁡n→∞nkt(n−1)t1t TP_{max} \lim_{n \to \infty}\frac{n}{kt (n-1)t}\frac{1}{t}TPmax​n→∞lim​kt(n−1)tn​t1​流水线加速比S不使用流水线执行时间使用流水线执行时间 S \frac{不使用流水线执行时间}{使用流水线执行时间}S使用流水线执行时间不使用流水线执行时间​流水线的制约关系以及信号量控制流水线分为直接制约与间接制约直接制约一个操作中多个步骤之间的制约关系如取址、分析、执行三个之间是直接制约关系间接制约指多个操作之间相同步骤的制约关系如操作1的取址和操作2的取址存在间接制约关系