计算机底层存储、CPU 运行与程序执行原理详解

存储层次与核心硬件组件

计算机主存由RAM和ROM两大硬件构成。RAM(随机存储器)可读可写,断电丢失数据,运行时存放程序和临时数据。ROM(只读存储器)出厂固化,只读,断电数据永存,存放BIOS开机初始化和硬件启动指令。

存储体切分为无数存储单元,每个存储单元绑定唯一二进制内存地址。存储单元是内存最小存储单位,用于存放单条二进制数据或机器指令。

CPU通过MAR(存储器地址寄存器)和MDR(存储器数据寄存器)与内存交互。MAR存放目标内存单元地址,决定读写位置;MDR临时缓存读写数据,寄存器位宽与单个存储单元容量一致。

内存数据存取流程

内存存取类比快递驿站存取包裹:

  • 取数流程:CPU将目标地址送入MAR,MAR寻址锁定对应存储单元,单元数据读出存入MDR,CPU从MDR取出数据。
  • 存数流程:CPU将存储地址送入MAR,待存数据送入MDR,硬件下发写入控制信号,MDR数据写入MAR指定存储单元。

CPU核心组件与指令执行周期

CPU分为运算器和控制器两大模块:

  • 运算器ALU:负责数据运算,包含ACC(累加器)、MQ(乘商寄存器)、X(通用寄存器)和ALU(算术逻辑单元)。
  • 控制器:负责指令调度,包含PC(程序计数器)、IR(指令寄存器)和CU(控制单元)。

指令周期分为取指阶段和执行阶段:

  • 取指阶段:PC内指令地址→MAR→寻址内存,内存读出指令存入IR,PC自动+1。
  • 执行阶段:CU拆分IR指令为操作码和地址码,操控运算器或内存完成计算、读写、跳转。

程序执行流程与函数调用底层栈原理

高级语言通过编译器转换为汇编语言,再通过汇编器转换为二进制机器语言。编译后,机器指令和运行数据存入内存,CPU通过PC→MAR→内存→IR循环取指和执行。

函数调用基于栈帧和栈空间:

  • 调用新函数:Push旧EBP和寄存器参数压栈,保存现场,开辟新栈帧,更新EBP/ESP,保存返回地址到栈,跳转新函数指令执行。
  • 函数返回:ESP出栈,弹出保存的返回地址,Pop恢复EBP与寄存器,还原上层现场,CPU回到上层函数断点继续执行。
相关推荐
basketball6163 小时前
Redis基础:1. Redis介绍
数据库·redis·缓存
轻刀快马7 小时前
撕开 Spring 的底裤:解析 Bean 生命周期与三级缓存的“破局”之术
java·spring·缓存
java_cj10 小时前
Caffeine+Redis两级缓存架构实战:从手动实现到自定义注解的完整方案
缓存·架构
Solis程序员10 小时前
滑动窗口热键探测与三级缓存设计
java·spring·缓存
真实的菜11 小时前
【无标题】Redis 从入门到精通(七):缓存设计与最佳实践 —— 穿透、击穿、雪崩与一致性终极指南
数据库·redis·缓存
念何架构之路11 小时前
存储技术Redis
数据库·redis·缓存
Trouvaille ~12 小时前
【Redis篇】Redis 主从复制:数据同步的原理与实现
数据库·redis·缓存·中间件·高可用·主从复制·后端开发
Solis程序员13 小时前
缓存三剑客预防策略
java·spring·缓存
我是大猴子15 小时前
Redis为什么不适合做持久化和DB的区别在哪里
数据库·redis·缓存