计算机底层存储、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回到上层函数断点继续执行。
相关推荐
小七-七牛开发者4 天前
TokenPilot:让 LLM Agent 长会话成本降 60%+ 的上下文管理
缓存·agent·token·context·上下文·推理成本
ofoxcoding11 天前
在AI API聚合平台配置DeepSeek V3.2提示词缓存实战:快速接入与成本优化指南
人工智能·spring·缓存·ai
NeilYuen11 天前
gRPC结合FAISS构建AI助手语义缓存模块(一):设计
人工智能·缓存·faiss
taocarts_bidfans11 天前
反向海淘跨境缓存架构优化:taocarts Redis分层缓存实战技术
redis·缓存·架构·反向海淘·taocarts
退休倒计时11 天前
【每日一题】LeetCode 146. LRU 缓存 TypeScript
算法·leetcode·缓存·typescript
炘爚11 天前
Linux——Redis
数据库·redis·缓存
小挪号底迪滴11 天前
Redis 和 MySQL 数据不一致怎么办?缓存更新策略实战
redis·mysql·缓存
闪电悠米11 天前
黑马点评-Redis ZSet-实现关注 Feed 流
服务器·网络·数据库·redis·缓存·junit·lua
Saniffer_SH12 天前
【高清视频】Gen6 服务器还没到,Gen6 SSD 怎么测?Emily 现场演示三种测试环境
人工智能·驱动开发·测试工具·缓存·fpga开发·计算机外设·压力测试