虚拟地址与物理地址:64位VS48位

物理地址宽度虚拟地址宽度是两个不同层次的概念,它们的区别可以用一个非常贴切的比喻来理解:

把整个系统想象成一个巨大的图书馆:

  • 虚拟地址(64位):图书目录 中的编号。
    • 这个目录非常庞大,理论上可以有 2^64 个编号(这是一个天文数字:16 EB)。每个读者(进程)都觉得自己拥有完整且独立的目录。
    • 位宽(64位) 决定了这个目录理论上能编多少号,它定义的是地址空间的"命名能力"。
  • 物理地址(48位): 是图书馆实际的书架位置
    • 图书馆实际只有 2^48 个物理书架格子(256 TB)。这已经非常巨大,但远小于目录的编号数量。
    • 位宽(48位) 决定了实际上有多少个可用的物理存储单元

详细对比

特性 虚拟地址(64位) 物理地址(48位)
"是什么" 进程看到的地址,是一个抽象的编号。 真实内存芯片(DRAM)上的电气信号线寻址的单元。
所处层次 软件层面(CPU的MMU使用)。 硬件层面(内存控制器、DRAM芯片使用)。
核心目的 为每个进程提供连续、独立、受保护的地址空间。实现隔离、共享和"虚拟内存"。 唯一标识物理内存中的每一个字节。
宽度决定什么 决定了单个进程理论上能寻址的空间上限(例如 16 EB)。这是一个逻辑上限。 决定了计算机最大支持多少物理内存(例如 256 TB)。这是一个物理上限。
地址转换 通过MMU和页表,映射到物理地址。 是转换的终点,直接送到内存总线。
为什么宽度不同 64位:为了极致的未来可扩展性和统一的架构设计(所有地址都用64位寄存器存储)。 48位 :是成本、功耗、硬件复杂度的工程折衷。目前及可预见的未来,256TB物理内存对绝大多数系统都绰绰有余。

两者的关系与协同工作

它们通过 MMU页表 紧密联系:

  1. 进程视角 :一个程序使用 0x400000 这样的虚拟地址加载指令。
  2. 地址转换 :CPU的MMU单元收到这个地址,查询当前进程的页表。页表就像一个"翻译字典",记录了 0x400000 这个"目录编号"对应哪个"物理书架位置"。
  3. 物理访问 :假设页表显示它映射到物理地址 0x8000。MMU就将这个48位的物理地址发送到内存控制器,从而从真实的物理内存中读取数据。
  4. 关键点 :如果物理地址只有48位,这意味着页表中所有条目的"物理页帧号"字段只需要48位宽。64位的虚拟地址在转换过程中,其高位会被用于查找页表目录,最终被"翻译"或"截断"为一个48位的物理地址。

为什么ARM64通常用48位虚拟地址而不是64位?

你可能会问,既然虚拟地址寄存器是64位的,为什么通常只用48位?这是为了效率

  • 在48位虚拟地址布局中(如前所述),地址被平分为用户空间和内核空间(各128TB)。最高位比特(第47位)直接指明了这个地址属于用户空间(0)还是内核空间(1)。硬件可以借此快速进行权限检查。
  • 如果使用完整的64位地址,页表的结构会变得更深(需要更多级),每次地址转换需要更多次内存访问,显著降低性能。48位是一个在地址空间大小(256TB对单个进程已完全足够)和转换效率之间的完美平衡点。

总结

概念 比喻 关键数字(例) 核心思想
64位虚拟地址 巨大的、私有的图书目录编号空间。 2^64 = 16 EB (理论极限) 抽象与隔离。为软件提供近乎无限的、安全的地址视图。
48位物理地址 图书馆实际的书架数量和位置。 2^48 = 256 TB (物理上限) 物理资源限制。由硬件成本、设计和功耗决定的实际可用内存上限。

简单来说:64位虚拟地址宽度让每个进程都"感觉"自己拥有一个超级大的私人地址空间;而48位物理地址宽度则标明了这台计算机"实际拥有"的物理内存容量上限。 MMU负责在这两者之间进行翻译和调度。

相关推荐
Trouvaille ~17 小时前
【Linux】TCP Socket编程实战(一):API详解与单连接Echo Server
linux·运维·服务器·网络·c++·tcp/ip·socket
liann11917 小时前
3.1_网络——基础
网络·安全·web安全·http·网络安全
独行soc17 小时前
2026年渗透测试面试题总结-17(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
辣香牛肉面17 小时前
Wireshark v4.6.2 开源免费网络嗅探抓包工具中文便携版
网络·测试工具·wireshark
全栈工程师修炼指南17 小时前
Nginx | stream 四层反向代理:SSL、PREREAD 阶段模块指令浅析与实践
运维·网络·网络协议·nginx·ssl
M1582276905517 小时前
TCP转LORA产品说明及应用案例
网络·网络协议·tcp/ip
旖旎夜光17 小时前
Linux(13)(中)
linux·网络
来可电子CAN青年18 小时前
CAN总线远距离传输老断网?Fx灯不闪别慌,这几招让你的通信“稳如泰山”!
网络
独行soc18 小时前
2026年渗透测试面试题总结-18(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
云小逸18 小时前
【nmap源码解析】Nmap OS识别核心模块深度解析:osscan2.cc源码剖析(1)
开发语言·网络·学习·nmap