当前位置: 首页 > news >正文

计算机底层原理:存储机制、CPU指令、函数调用全过程

一、计算机底层存储结构与数据存取机制

很多人误以为主存就是内存条,这是典型认知误区。完整的计算机主存系统拥有分层结构、专属硬件单元和固定的读写流程,是程序运行的硬件基础。

1.1 存储层次与核心硬件组件

1、主存完整构成

主存不只是内存条,由两大核心部分组成:

  • RAM(随机存取存储器):即我们常说的内存条,可读可写,断电数据丢失,用于运行时存放程序和数据。

  • ROM(只读存储器):只读不可随意写入,断电数据不丢失,主要存储计算机开机启动、硬件初始化等底层固定信息。

2、存储体与存储单元

内存条上的黑色芯片块即为存储体,每个存储体内部被划分为无数个存储单元

  • 每个存储单元拥有唯一的二进制地址,相当于内存的“门牌号”;

  • 存储单元是最小的数据存储单位,专门用于存放二进制指令或运行数据。

3、两大核心寄存器(存取核心)

CPU 与内存交互,完全依赖两个关键寄存器:

  • MAR 地址寄存器:专门存放内存单元的地址,决定要读写哪个存储单元,其位数决定了可寻址的存储单元总个数。

  • MDR 数据寄存器:专门暂存读写的数据,从内存读出的数据、要写入内存的数据都会先存在这里,其容量和存储单元大小保持一致。

1.2 数据存取完整流程(通俗快递类比)

为了方便理解,我们将内存存取数据类比为「快递存取件」,流程通俗易懂:

1、取数流程(取快递)

CPU 需要读取内存数据时,执行步骤:

  1. CPU 将目标数据的内存地址,传入 MAR 地址寄存器;

  2. MAR 根据地址完成寻址,定位到对应内存存储单元;

  3. 从对应单元读取数据,暂存到 MDR 数据寄存器;

  4. CPU 从 MDR 中取走数据,完成取数。

2、存数流程(存快递)

CPU 需要向内存写入数据时,执行步骤:

  1. CPU 将目标存储地址传入 MAR;

  2. CPU 将需要存储的数据传入 MDR;

  3. 硬件发出写入控制信号;

  4. MDR 将数据写入 MAR 指定的内存单元,完成存数。

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

CPU 是程序运行的核心,主要由运算器控制器两大部分组成,所有代码的运算、跳转、执行都依赖这两套组件协同工作。

2.1 运算器与控制器核心部件

1、运算器 ALU(负责数据计算)

主要用于算术运算、逻辑运算,包含四大核心寄存器:

  • ACC 累加器:存放运算操作数,同时保存运算后的结果,是最常用的运算寄存器;

  • MQ 乘商寄存器:专门用于乘法、除法运算,存放乘数和商值;

  • X 通用寄存器:临时存放运算操作数,辅助 ALU 完成计算;

  • ALU 算术逻辑单元:执行加减乘除、与或非等所有运算逻辑。

2、控制器(负责指令调度)

控制器是 CPU 的“指挥中心”,负责读取、解析、执行指令:

  • PC 程序计数器:存放下一条待执行指令的内存地址,核心特性是自动+1,实现指令依次执行;

  • IR 指令寄存器:存放当前 CPU 正在执行的指令;

  • CU 控制单元:解析 IR 中的指令(操作码+地址码),向硬件发送对应的控制信号。

2.2 指令周期与流水线执行机制

CPU 执行任意一条机器指令,都需要完成一个完整的指令周期,分为两大阶段:

1、取指阶段
  1. PC 中存放的指令地址传入 MAR,寻址对应内存;

  2. 从内存读取指令,存入 IR 指令寄存器;

  3. PC 自动+1,预加载下一条指令地址。

2、执行阶段
  1. CU 解析 IR 中的操作码(执行什么操作)和地址码(操作哪个数据);

  2. 控制运算器、内存等硬件完成对应操作(读写、计算、跳转)。

3、PC 加1核心机制

PC 自动加1操作发生在取指阶段,配合流水线技术,CPU 可以在执行当前指令的同时,预加载下一条指令地址,大幅提升指令执行效率,这也是程序能够连续执行的底层核心。

三、程序执行流程与函数调用机制

我们编写的高级语言代码,无法直接被 CPU 识别,需要经过多层转换,同时函数的嵌套调用、递归执行,都依赖栈机制实现。

3.1 高级语言到机器语言的转换全过程

1、语言层级转换关系

高级语言是人类可读的代码,机器语言是 CPU 唯一能识别的二进制指令,转换链路如下:

高级语言(C/Java/JS)→ 编译器编译 → 汇编语言 → 汇编器转换 → 机器语言(二进制)

汇编语言作为中间层,可读性差、逻辑性弱,但完全贴合计算机硬件,是连接代码与硬件的桥梁。

2、程序执行本质

所有程序本质都是指令 + 数据的集合:

  • 代码编译后,指令和数据统一存入内存;

  • CPU 通过 PC 循环获取指令地址,重复「取指-执行」流程,实现程序持续运行。

3.2 函数调用与栈帧切换底层原理

函数调用、嵌套、递归,全部依赖栈(Stack)实现,核心是栈帧的创建、切换与销毁。

1、栈帧核心指针
  • EBP 栈基指针:指向当前函数栈帧的底部,固定栈帧起始位置;

  • ESP 栈顶指针:指向当前栈帧的顶部,随数据压栈、出栈动态移动。

每一个函数在调用时,都会在栈空间中开辟一个独立的栈帧,用于存放函数局部变量、参数、返回地址等数据。

2、Call / Ret 核心指令机制

这是函数调用和返回的底层核心指令:

  • Call 调用指令:执行函数调用时,先将当前程序的返回地址(旧IP值)压入栈中保存,再跳转到目标函数的指令地址执行;

  • Ret 返回指令:函数执行完毕后,从栈中弹出之前保存的返回地址,恢复 PC(IP)指针,回到上一层函数继续执行。

3、现场保护与恢复

为了保证函数嵌套调用后,上层程序数据不丢失,需要做现场保护与恢复:

  • 调用函数前:通过Push 指令将 EBP 等寄存器数据压栈保存,保护现场;

  • 函数返回前:通过Pop 指令弹出栈中数据,恢复寄存器状态,完成现场还原;

这也是函数嵌套调用不会错乱、递归程序可以正常回溯的底层原理。

四、全文总结

1、计算机存储核心:主存由 RAM+ROM 组成,依靠 MAR、MDR 实现内存数据精准读写,所有数据交互都遵循「寻址-读写-返回」的固定流程。

2、CPU 执行核心:运算器负责数据计算,控制器负责指令调度,通过「取指-执行」循环、流水线预加载,实现指令高效执行。

3、程序运行核心:高级语言逐层编译为二进制机器码,依托内存存储指令数据;函数调用基于栈帧实现,通过 Call/Ret、压栈出栈完成上下文切换。

http://www.zskr.cn/news/1476945.html

相关文章:

  • 5G物联网项目实战:从SUPI签约到DNN配置,一个完整的用户开户流程详解
  • DeFi 协议开发实战:从 Uniswap V2 恒定乘积公式 x * y = k 到自定义 AMM 流动性池算子实现
  • 避开反向传播的‘坑’:Hinton论文里没明说,但新手必知的5个训练细节
  • AI的下一场战争:从算力到存力
  • 2026年选粉机好用吗,三分离选粉机的优势有哪些? - 工业品牌热点
  • librosa:Python 音频分析的标配工具
  • 五无工程检测鉴定技术解析:自建房安全排查/钢结构安全检测/五无工程检测鉴定/屋顶光伏安全检测鉴定/工程质量检测鉴定/选择指南 - 优质品牌商家
  • 股票代码命名规则大揭秘:从000001平安银行到900957凌云B股,一文看懂A/B股、创业板、科创板代码规律
  • 2026房屋抗震检测技术解析:房屋结构鉴定、承载力专项检测鉴定、抗震性专项检测鉴定、校舍安全鉴定、灾后房屋质量检测选择指南 - 优质品牌商家
  • 2026年国内消光比测试仪主流品牌实力排行:声光调制器/多模光衰减器/多通道光功率计/插回损测试仪/波长可调谐激光器/选择指南 - 优质品牌商家
  • 2026年希沃一体机触控租赁好用吗,性价比排名分析 - 工业品牌热点
  • 避开ANSYS SOLID65钢筋定义的坑:从实常数R/RMORE到材料TB,完整配置流程详解
  • 琉璃瓦费用多少?古瓦园林定价实在 - 工业品牌热点
  • 保姆级教程:用MQTT.fx模拟硬件,5分钟搞定OneNET平台数据上报与命令下发
  • 【零基础学Python-收尾】10-Python第三方库的安装介绍
  • CSDN官方SEO白皮书未披露的关键事实:AI自动优化存在72小时响应延迟,手动配置才是破局刚需
  • MCP:重塑AI工具调用的统一标准,告别重复造轮子的时代
  • 量子搜索与Grover算法:原理、应用与物理约束
  • # wechatapi iPad协议:微信私域开发终极方案
  • 别再用np.outer()了!用NumPy数组切片实现外积,性能提升看得见
  • Git实战:遇到‘本地领先远程N个提交’时,你的完整决策树与操作指南
  • 2026年 实木卡板厂家推荐:进出口托盘、防潮木卡板、重型仓储木卡板源头实力品牌精选 - 品牌企业推荐师(官方)
  • ANSYS APDL实战:用SOLID65单元给混凝土圆管配筋,手把手教你定义环向钢筋
  • 告别混乱!为GD32F4系列构建统一RT-Thread BSP框架的完整心路历程
  • 别再手动维护了!用SAP COPA特性派生+ABAP增强,自动搞定销售订单到获利段映射
  • Camelot:从 PDF 提取表格的 Python 工具
  • 2026年Q2液态硅胶表带供应商实测评测报告:固态硅胶手表带开模、固态硅胶表带开模、氟橡胶手表带开模、氟橡胶表带开模选择指南 - 优质品牌商家
  • 别再为Linux下区分两个相同摄像头发愁了,用libuvc轻松搞定设备信息获取
  • 静态路由拓展配置。
  • GEO定位偏差0.8km就损失27%本地流量?——CSDN百万级AI营销项目验证的GEO优化7步校准法,SEO团队必须同步介入!